x=0.1:0.1:1+eps
y=[39.933,41.327,42.412,43.064,43.769,45.086,46.163,47.172,48.505,49.61]
f=inline('a(1)+a(2).*log(x)+a(3).*log(1-x)+a(4).*1./x+a(5).*x','a','x')
a=lsqcurvefit(f,[0 0 0 0 0],x,y)
运行结果:
a =
33.3834 - 0.0020i -4.8861 - 0.0014i 0.0033 + 0.0003i -0.6413 - 0.0001i 16.9875 + 0.0030i
可见程序数据或参数不当,只有复数结果。
主要错误是匿名函数书写不对,应该这样来写:
f=inline('a(1)*exp(-a(2).*x).*sin(a(3).*x)+a(4).*tanh(a(5)*x)+a(6).*(x./a(7)-x).^a(8)','a','x')
其他小问题,如自然指数函数书写错误,应为exp(),而不是eps()无穷小量。
注意:使用lsqcurvefit()时,其初值是不是唯一的,要根据y与f(x)的差值是否小(接近于零)而定。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)