|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
clear all
k=1:1000
x(k)=(4e-10)./(k.^2)+2e-13./k+5e-17*k+1e-17; %+randn(1)
x=1:1000;
y(k)=(4e-10)./(x.^2)+2e-13./x+5e-17*x+1e-17+randn(1);
fun=inline('exp(a(1)./(t.^2)+a(2)./(t)+a(3))','a','t');
a=nlinfit(x,y,fun,[4e-10 2e-13 17]);
xx=1:1000;
yy=a(1)./(xx.^2)+a(2)./(xx)+a(3);
plot(x,y,'-b',xx,yy)
z=log(y);
p=polyfit(x,z,1);
z1=polyval(p,x);
y1=exp(z1);
figure
plot(x,y,'-r',x,y1)
我使用上面的方法验证nlinfit 函数的线性拟合,但是发现 很奇怪的是,两条线没有重合
按理我选择的初始值 [4e-10 2e-13 17] 已经是正确的方程值了,应该拟合出来的参数方差不会比这个更差的
但是事实并不是这样!难道我的 nlinfit 函数用的有问题
还是非线性拟合还需要注意一些其它的问题?? |
|