文档详情

等距节点与插值公式 .ppt

发布:2017-09-30约2.13千字共7页下载文档
文本预览下载声明
Example:等距节点插值 设 x0=1.0, h=0.05, 给出 在xj=x0+jh,j=0,1,…,6处的值。试用3次等距节点插值公式求f(1.01)及f(1.28)的近似值。 Newtonforward Interpolation function f=newtonforward(x,y,x0) syms t; if(length(x)==length(y)) n=length(x); c(1:n)=0.0; else disp(x he y de wei shu bu xiang deng); return; end f=y(1); y1=0; xx=linspace(x(1),x(n),(x(2)-x(1))); if(xx~=x) disp(jie dian zhi jian bu shi deng ju de); return; end for(i=1:n-1) for(j=1:n-i) y1(j)=y(j+1)-y(j); end c(i)=y1(1); l=t; for(k=1:i-1) l=l*(t-k); end f=f+c(i)*l/factorial(i); simplify(f); y=y1; if(i==n-1) if(nargin==3) f=subs(f,t,(x0-x(1))/(x(2)-x(1))); f=vpa(f,6); else f=collect(f); f=vpa(f,6); end end end Mainnewtonforward x=1:0.05:1.3; for i=1:7 y(i)=sqrt(x(i)); end f=newtonforward(x,y) f=newtonforward(x,y,1.01) 计算结果 f = 1.+.250000e-1*t-.312490e-3*t^2+.780270e-5*t^3-.239500e-6*t^4+.734775e-8*t^5-.151105e-9*t^6 f = 1.00499 Newtorbackward Interpolation function f=newtonbackwark(x,y,x0) syms t; if(length(x)==length(y)) n=length(x); c(1:n)=0; else disp(x he y de wei shu bu xiang deng); return; end f=y(n); y1=0; xx=linspace(x(1),x(n),(x(2)-x(1))); if(xx~=x) disp(jie dian zhi jian bu shi deng ju de !); return; end for(i=1:n-1) for(j=i+1:n) y1(j)=y(j)-y(j-1); end c(i)=y1(n); l=t; for(k=1:i-1) l=l*(t+k); end f=f+c(i)*l/factorial(i); simplify(f); y=y1; if(i==n-1) if(nargin==3) f=subs(f,t,(x0-x(n))/(x(2)-x(1))); f=vpa(f,6); else f=collect(f); f=vpa(f,6); end end end Mainnewtonbackward x=1:0.05:1.3; for i=1:7 y(i)=sqrt(x(i)); end f=newtonbackward(x,y) f=newtonbackward(x,y,1.28) 计算结果 f = 1.140
显示全部
相似文档