- 积分
- 0
- 注册时间
- 2009-4-17
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2009-10-13 10:48:10
|
显示全部楼层
来自 重庆沙坪坝区
本帖最后由 laihai718 于 2009-10-13 10:54 编辑
真实值是a =45,b =0.8378,c =-0.0216,e =27,f =0.2618,g = 1.6667
To:2楼swinder
我用您所提供的两种方法拟合,结果误差都很大,不知道是什么原因?
用 lsqcurvefit拟合:
function F = baixian(x,tdata,xdata)
F=x(1)*sin(x(2)+x(3)+tdata)-x(4)*cos(x(5))*sin(x(2)+x(3)+x(6)*tdata)-xdata;
tdata = [0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1];
xdata = [13.7836;13.9968;14.4546;15.1899;16.2206;17.5497;19.1641;21.0355;23.1201;25.3607;27.6875];
x = lsqcurvefit(@myfun, [40 0.8 0 25 0.05 1], tdata, xdata)
16.1905 11.4896 0 25.0000 0.0500 1.0000
用nlinfit拟合:
clear;
t=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y=[13.7836 13.9968 14.4546 15.1899 16.2206 17.5497 19.1641 21.0355 23.1201 25.3607 27.6875];
myfunc=inline('x(1)*sin(x(2)+x(3)+t)-x(4)*cos(x(5))*sin(x(2)+x(3)+x(6)*t)','x','t');
x=nlinfit(t,y,myfunc,[0.5 0.5 0.5 0.5 0.5 0.5]);
a=x(1),b=x(2),c=x(3),e=x(4),f=x(5),g=x(6)
a =-24.2231,b =-1.3570,c =-1.3570,e =-3.5975,f =2.2026,g = -180.7152 |
|