graduate 发表于 2009-3-1 17:23

为什么nlinfit线性拟合的不好?

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,);
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函数的线性拟合,但是发现 很奇怪的是,两条线没有重合
按理我选择的初始值 已经是正确的方程值了,应该拟合出来的参数方差不会比这个更差的
但是事实并不是这样!难道我的 nlinfit   函数用的有问题
还是非线性拟合还需要注意一些其它的问题??

ChaChing 发表于 2009-3-2 13:40

Check !!
y(k)=(4e-10)./(x.^2)+2e-13./x+5e-17*x+1e-17+randn(1);
a=nlinfit(x,y,fun,17]);

[ 本帖最后由 ChaChing 于 2009-3-2 14:03 编辑 ]
页: [1]
查看完整版本: 为什么nlinfit线性拟合的不好?