matlab 多元非线性函数拟合

非线性的函数,最好能提供简单一点的方法
x1=[1640.88
1640.88
1640.88
1640.88
1640.88
1621.35
1621.35
1621.35
1621.35
];
x2=[0.000000277778
0.0000000810185
0.0000000607639
0.0000000405093
0.0000000270062
0.000000559965
0.000000163323
0.0000000816615
0.000000054441
];
y=[0.8
1.96
2.62
3.68
5.14
0.62
1.67
3.18
5.18
];
需要建立形如y=a*x1^b*x2^c 的函数拟合

第1个回答  推荐于2016-05-29
因为这个函数的形式比较特殊,对其两边取对数后得到
log(y)=log(a)+b*log(x1)+c*log(x2)
于是立即就转换为了线性拟合
[1 log(x1) log(x2)]*[log(a) b c]'=log(y)
于是[log(a) b c]'=[1 log(x1) log(x2)]\log(y)
这样就可以得到a,b,c了。不需要进行非线性拟合。

下面是程序:(对于x1、x2、y的赋值部分这里就不写了,你自己在前面加上即可)

p=[ones(length(y),1) log([x1 x2])]\log(y);%就这一句话就搞定了

a=exp(p(1)),b=p(2),c=p(3)%这就是拟合后的参数值
y%这是采样点y的值
a*x1.^b.*x2.^c%这是拟合后在采样点得到的值,可以和y比较一下,很接近。本回答被提问者采纳
第2个回答  2008-11-06
第一个m文件
clear
clc

k0=[1 1 1];
k=fminsearch(@fun,k0)

第二个m文件
function f=fun(k)
x1=[1640.88 1640.88 1640.88 1640.88 1640.88 ...
1621.35 1621.35 1621.35 1621.35];
x2=[0.000000277778 0.0000000810185 0.0000000607639 0.0000000405093 ...
0.0000000270062 0.000000559965 0.000000163323 0.0000000816615 ...
0.000000054441];
x=[x1;x2];
y=[0.8 1.96 2.62 3.68 5.14 0.62 1.67 3.18 5.18];
f=sum((y-k(1)*x(1,:).^k(2).*x(2,:).^k(3)).^2);

怎么用matlab进行非线性的多元函数拟合?
1、首先,在上方工具栏选取APPS,点击curvefitting。输入自变量x和因变量y。2、选择拟合方式,有多项式拟合polynomial,高斯拟合gaussian,幂指数拟合power等等,本次以多项式拟合为例。3、通过数据计算,可以获得曲线参数(曲线函数中的各项系数),从而实现曲线拟合。

matlab 多元非线性函数拟合
log(y)=log(a)+b*log(x1)+c*log(x2)于是立即就转换为了线性拟合 [1 log(x1) log(x2)]*[log(a) b c]'=log(y)于是[log(a) b c]'=[1 log(x1) log(x2)]\\log(y)这样就可以得到a,b,c了。不需要进行非线性拟合。下面是程序:(对于x1、x2、y的赋值部分这里就不写了,你...

matlab多元非线性曲线拟合
该拟合问题可以用 nlinfit()函数来解决。求解方法:1、将方程(x\/a )^b+y^c=1看成z(x,y)=(x\/a )^b+y^c=1;2、处理多个变量,可以将它们看成是一个x向量组;3、求解代码 x=[313.5604 239.4021 288.7583 309.7781 264.0802]';y=[0.331115272 0.334143601 0.403861609 0.4425972...

用MATLAB拟合求多元非线性方程系数
r=4.4121, b=80.7243 拟合函数为 y=exp(4.4121*x-80.7243*x*z)

求救,关于数学建模,MATLAB多元非线性拟合
根据数据,其多元非线性拟合函数为 y=a(1)*(x1-22)^2 + a(2)*(x2-113)^2 + a(3)该拟合问题可以用nlinfit()命令函数来实现。实现代码:x1=[22.9908325 22.99456666 23.00022308 23.0024026 23.00421017]';x2=[113.0723102 113.1409256 113.1080614 113.0651869 113.0704232]';y=[68...

MATLAB拟合多元非线性函数?
你的x1只有42个变量,x2和y有43个,你这个有问题。可以用matlab中的curve fitting tool来进行拟合。

matlab中,关于多元函数的拟合matlab程序如何书写?(4自变量1因变量)_百...
题主的(4自变量1因变量)多元函数的拟合matlab程序。可以用nlinfit非线性回归函数来做(也可以用lsqcurvefit函数)。实现代码:x1=[0.55 0.65 0.65 0.65 0.65 0.55 0.55 0.55 0.65]';x2=[1.6 1.6 1.4 1.6 1.4 1.4 1.6 1.4 1.4]';x3=[20 20 20 10 10 20 20 20 ...

matlab多元函数非线性拟合问题
1、你的数据有问题:x1、x2都是13个点,而y是12个点。我暂时按照舍去x最后那个点处理。2、从现在的情况看,效果不好,这和你的数据是否适合所给拟合公式有关。尤其y第5个点感觉比较怪异。3、拟合问题和初值关系很大,如果你能知道拟合参数的大概范围会对尽快得到理想的结果有帮助。function zd...

请教:多元非线性幂函数拟合
1、用表格计算是一件比较繁琐的过程。2、可以借于Matlab的nlinfit()函数,很方便地求出拟合系数a、b、c、d、e。求解步骤:已知数据 x=[0 613.26 613.26 602.38 602.38 930.46]';y=[160 160 185 0210 235 160];z=[16 12 10 9 6 8];x=[x y];y=z;自定义函数 func=@(a,x...

matlab二元函数拟合求参数问题,已知模型求参数
你的问题是多元函数非线性拟合,因为是多元的,所以不太方便使用lsqcurvefit,因为不是多项式,所以不方便使用regress或polyfit。此处,可采用nlinfit,从函数名字直面理解就是nonlinear fit。nlinfit的使用格式是beta = nlinfit(X,y,fun,beta0)此处beta就是你需要拟合得到的系数k1,k2,k3,X是输入变量矩阵...

相似回答