请问matlab怎么用多元非线性拟合来求我的系数呀?

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:47:45
本人拟合函数为:Z=1.9*7+k*X/Y

本人的实验数据如下:
Z:175 100 70 64
X:4.38 5.09 5.66 6.55
Y:0.0064 0.0083 0.0102 0.0139

要拟合出k的值,并尽量使拟合曲线过这些点,请大侠指点下
本人不懂matlab的使用,请详细指点下..
谢谢
感谢你们俩位的辛勤劳动,但我用你们的方法计算,然后回代进去,误差N大啊..
不知道怎么回事呢

感谢三楼的指点,但是按你的方法输入后,得出结果为:

??? Error using ==> regress
Y must be a vector, not a matrix

不知道怎么回事..本人主要是不懂matlab..所以请原谅..能否给出用你这方法计算的系数值呢?不甚感谢

感谢四楼详细的回答,你的答案其实也是把非线性变成线性处理啦,这样得出的结果反代回去后产生的误差非常大的..

你的是线性拟合,很直接的,用polyfit(Z-1.9*7,X/Y,1)就可以了.有什么关于MATLAB的问题,可以加入QQ群54161129讨论.

clear
Z=[175 100 70 64]
X=[4.38 5.09 5.66 6.55]
Y=0.0064 0.0083 0.0102 0.0139]
zz=Z-1.9*7;
xx=X./Y;
zi=polyfit(xx,zz,1);
k=zi(1)

>> Z=[175 100 70 64]';
X=[4.38 5.09 5.66 6.55]';
Y=[0.0064 0.0083 0.0102 0.0139]';
Z=Z-1.9*7;
En=ones(4,1);
X=[En,X./Y];
>> [b,bint,r,rint]=regress(Z,X);
>> b

b =

-207.6763
0.5106

>> r

r =

19.9353
-18.7499
-18.9559
17.7705

即Z=1.9*7-207.6763+ 0.5106*X/Y
r是误差

简单的问题大虾们都不愿意调试程序后再回答,我这个初学者来帮你哈嘛
Z=[175 100 70 64];
X=[4.38 5.09 5.66 6.55];
Y=[0.0064 0.0083 0.0102 0.0139];
p=polyfit(X./Y,Z-1.9*7,1)
p1=poly2str(p,'x/y')

结果:
p =

0.5106 -207.6763
p1 =

0.5106 x/y - 207.6763