n10=10
p1=polyfit(x,y,n1) p2=polyfit(x,y,n2) p10=polyfit(x,y,n10) xi=linspace(0,1,100) z1=polyval(p1,xi) z2=polyval(p2,xi) z10=polyval(p10,xi)
plot(x,y,'or',xi,z1,'k:',xi,z2,'b-',xi,z10,'g*')
注意:由图可以看得出,二阶拟合比较好。一般来说,高阶多项式给出很差的数值特性,人们不应选择比所需的阶次高的多项式。随着多项式阶次的提高,曲线变得不够光滑,因为较高阶次多项式可多次求导。
也可以用命令curvefit(‘fun’,x0,x,y)作曲线拟合,例如,某数据近似符合规律y(t)?a?be?Kt,已知从100到1000时分别对应于(x0是初值,应适当取)
cdata=0.00001*[454 499 535 565 590 610 626 639 650 659] 求a,b,k使?(a?be?Kt?cdata)2尽可能地小。
i?110tdata=linspace(100,1000,10)
cdata=0.00001*[454 499 535 565 590 610 626 639 650 659] x0=[0.02,0.5,0.01] %x0=[0.001 0.0051 0.01]
x=curvefit('curvefun',x0,tdata,cdata) ydata=x(1)+x(2)*exp(-x(3)*tdata) plot(tdata,ydata,'r',tdata,cdata,'-b')
(完)