matlab 多元非线性拟合 nlinfit y=a0*x1^a1*x2^a2*x3^a3*x4^a

发布时间:2021-02-17 10:16:27

matlab 多元非线性拟合 nlinfit y=a0*x1^a1*x2^a2*x3^a3*x4^a

网友回答

两边取对数,
log(y)=log(a0)+a1*log(x1)+a2*log(x2)+a3*log(x3)+a4*log(x4)
这样就变成一个多元线性拟合问题了
x1=[152.64 104.5\x05131.73\x05146.83\x05118.24\x0599.22];
x2=[286.08 485.68\x051164.48\x05506.17\x051195.93\x051545.75];
x3=[103.9\x05 101.82\x05101.47\x05104.77\x05105.9\x0599.32];
x4=[238033.47 276505.32 322134.37 379226.81 442136.63 559484.38];
y=[1500\x052000\x052400\x053200\x053500\x054700];
A=[ones(6,1) log(x1)' log(x2)' log(x3)' log(x4)'];
c=A\log(y)';
a0=exp(c(1))
a1=c(2)
a2=c(3)
a3=c(4)
a4=c(5) .
a0 =3.3727e-005
a1 =0.0265
a2 =-0.0193
a3 =0.1990
a4 =1.3517
======以下答案可供参考======
供参考答案1:
这个函数先两边取log变为:
log(y)=log(a0)+a1*log(x1)+a2*log(x2)+a3*log(x3)+a4*log(x4)
再用regress线性拟合,程序如下:
x1=[152.64 104.5 131.73146.83 118.24 99.22]';
x2=[286.08 485.68 1164.48 506.17 1195.93 1545.75]';
x3=[103.9 101.82 101.47104.77 105.9 99.32]';
x4=[238033.47 276505.32 322134.37 379226.81 442136.63 559484.38]';
y=[15002000 2400 3200 35004700]';
X=[x1,x2,x3,x4];
B=regress(log(y),log(X));
a1=B(1)
a2=B(2)
a3=B(3)
a4=B(4)
得到:a1 = 0.1456
a2 = -0.0325
a3 = -2.1101
a4 = 1.3449
以上问题属网友观点,不代表本站立场,仅供参考!