资源描述:
《数值计算方法第四讲》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四次上机function[f]=newton(x,y,x0)%求已知数据点的牛顿插值多项式%已知数据点的横坐标向量:x%已知数据点的纵坐标向量:ysymst;if(length(x)==length(y))n=length(x);c(1:n)=0.0;elsedisp('x和y的维数不相等!');return;endf=y(1);y1=0;l=1;for(i=1:n-1)forj=i+1:ny1(j)=(y(j)-y(i))/(x(j)-x(i));endc(i)=y1(i+1);l=l*(t-x(i));f=f+c(i)*l;simplify(f);
2、y=y1;if(i==n-1)if(nargin==3)f=subs(f,'t',x0);elsef=collect(f);f=vpa(f,6);endendendend求均差矩阵(差商表的命令)f=ones(n,n);N=0;fori=1:n%求均差表forj=i:nifi==1f(j,1)=y(j);elsef(j,i)=(f(j,i-1)-f(j-1,i-1))/(x(j)-x(j-i+1));endendend只要合理的嵌入到程序里即可。补充内容:第一个内容,曲线拟合。上节课,我们学习了用一个多项式来拟合数据,用polyfit(x,y,n)来实现
3、。具体如下:多项式拟合方法多项式曲线拟合的matlab函数polyfit(),多采用最小二乘法对给定点集进行曲线拟合,其调用的格式为p=polyfit(x,y,n)其中,输入量x,y是将要拟合的数据横、纵坐标;n为要返回的多项式的节数;p为拟合n阶多项式的系数。看个例子:x=[-pi:0.5:pi];y=sin(x);p=polyfit(x,y,4)%一个四次多项式来拟合曲线。但是,实际的问题中有时,需要把两组数据之间的关系拟合成常用的指数、双曲线、对数等一些函数形式,这时如何做呢?采用的方法是对数据进行适当的变换,然后用多项式拟合命令进行拟合.例子:x
4、=[12346810121416]y=[4,6.41,8.01,8.79,9.53,9.86,10.33,10.42,10.53,10.61]这些数据的离散图如下:这些数据点是一个指数的趋势,一般采用以自然对数e为底的指数函数,即用y=a*e^(b*x)来拟合这些数据。如何确定ab呢?方法如下:对y=a*e^(b*x)两边取对数得到,lny=bx+lna显然x与lny是线性关系;这样,先对数据x,y进行处理,然后用一个一次的多项式去拟合他,确定一次多项式的系数,从而确定a,b.命令如下:x=[12346810121416];y=[4,6.41,8.01,
5、8.79,9.53,9.86,10.33,10.42,10.53,10.61];z=log(y);>>polyfit(x,z,1)ans=0.0450129544453521.801521005149228从而有b=0.045012954445352;a=exp(1.801521005149228);则指数函数就确定完了,图形如下:接下来学习用matlab命令实现分段线性插值函数,分段Hermite插值曲线,三次样条函数插值如何实现。用命令yk=interp1(x,y,xk,’method’)来实现。1)参数x,y为维数相同的两个向量,满足y(i)=f(
6、x(i))(i=1,2….,n).2)yk是与xk对应的函数值。3)method是有以下几种选择linear分段线性插值:用直线一次连接各样本点.省略method时为默认此项。pchip分段三次插值。spline三次样条插值。例子>>t=0:0.001:10;>>z=sin(t);>>figure>>plot(t,z)>>holdon%生成sin(t)的曲线>>x=0:10;>>y=sin(x);%生成插值节点>>xi=0:0.5:10;>>yi=interp1(x,y,xi,'linear');%计算一些函数值(这个是插值函数的函数值)plot(x,y
7、,’ro’)%画插值节点>>holdon>>plot(xi,yi)%画分段线性插值函数图象如下本节课的练习内容是编Hermite和三次样条函数插值算法。