matlab数值分析程序--高等数学,数值代数的matlab实现-文字版, matlab电子书, 和matlab 有关的电子书:

6.3.4 牛顿插值及其误差估计的MATLAB程序

6.3.4  牛顿插值及其误差估计的MATLAB程序

牛顿插值及其误差估计的MATLAB主程序

function [y,R]= newcz(X,Y,x,M)

n=length(X); m=length(x);

for t=1:m

   z=x(t); A=zeros(n,n);A(:,1)=Y';  

s=0.0; p=1.0; q1=1.0; c1=1.0;

         for  j=2:n

           for i=j:n

            A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1));

           end

          q1=abs(q1*(z-X(j-1)));c1=c1*j;

         end

         C=A(n,n);q1=abs(q1*(z-X(n)));

for k=(n-1):-1:1

C=conv(C,poly(X(k)));d=length(C); C(d)=C(d)+A(k,k);

end

  y(k)= polyval(C, z);

end

R=M*q1/c1;

 

例6.3.5  已知,用牛顿插值法求的近似值,估计其误差,并与例 6.2.6的计算结果比较.

解  方法1(牛顿插值及其误差估计的MATLAB主程序)输入MATLAB程序

>> x=2*pi/9;M=1; X=[pi/6 ,pi/4, pi/3];

Y=[0.5,0.7071,0.8660]; [y,R]= newcz(X,Y,x,M)

运行后输出

y =                 R =

0.6434             8.8610e-004

方法2 (求牛顿插值多项式和差商的MATLAB主程序)输入MATLAB程序

>> x=2*pi/9; X=[pi/6 ,pi/4, pi/3];

 Y=[0.5,0.7071,0.8660]; M=1;

 [A,C,L,wcgs,Cw]= newploy(X,Y), y=polyval(C,x)

运行后输出结果

A =

    0.5000         0         0

    0.7071    0.7911         0

    0.8660    0.6070   -0.3516

C =

   -0.3516    1.2513   -0.0588

L =

-1583578379808357/4503599627370496*x^2+1408883391907005/1125899906842624*x-132405829044691/2251799813685248

wcgs =

1/6*M*(x^3-3/4*x^2*pi+4012734077357799/2251799813685248*x-7757769783530263/18014398509481984)

Cw =

    0.1667   -0.3927    0.2970   -0.0718

y =

    0.6434

上述两种方法计算y的结果相同.

欢迎转载,转载请注明来自一手册:http://yishouce.com/book/3/3060304.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1