数值计算方法(2)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值计算(一)

主讲:张森

2011-7-9

一、矩阵的数值计算相关MATLAB函数提示:

二、插值法

1、插值有关的MATLAB函数:

2、拉格朗日和牛顿插值法

(1) 拉格朗日多项式和基函数的MATLAB 程序 求拉格朗日插值多项式和基函数的MATLAB 主程序

function [C, L,L1,l]=lagran1(X,Y) m=length(X); L=ones(m,m); for k=1: m V=1;

for i=1:m if k~=i

V=conv(V,poly(X(i)))/(X(k)-X(i)); end

end

L1(k,:)=V; l(k,:)=poly2sym (V) end

C=Y*L1;L=Y*l

例1 给出节点数据03.17)15.2(=-f ,24.7)00.1(=-f ,05.1)01.0(=f ,

03.2)02.1(=f , 06.17)03.2(=f ,05.23)25.3(=f ,作五次拉格朗日插值多项式和基函数,并写出估计其误差的公式.

解 在MATLAB 工作窗口输入程序

>> X=[-2.15 -1.00 0.01 1.02 2.03 3.25]; Y=[17.03 7.24 1.05 2.03 17.06 23.05]; [C, L ,L1,l]= lagran1(X,Y)

运行后输出五次拉格朗日插值多项式L 及其系数向量C ,基函数l 及其系数矩阵L 1如下

C =

-0.2169 0.0648 2.1076 3.3960 -4.5745 1.0954

L =

1.0954-4.5745*x+3.3960*x^2+

2.1076*x^3+0.0648*x^4-0.2169*x^5 L1 =

-0.0056 0.0299 -0.0323 -0.0292 0.0382 -0.0004 0.0331 -0.1377 -0.0503 0.6305 -0.4852 0.0048 -0.0693 0.2184 0.3961 -1.2116 -0.3166 1.0033 0.0687 -0.1469 -0.5398 0.6528 0.9673 -0.0097 -0.0317 0.0358 0.2530 -0.0426 -0.2257 0.0023 0.0049 0.0004 -0.0266 0.0001 0.0220 -0.0002 l =

[ -0.0056*x^5+0.0299*x^4-0.0323*x^3-0.0292*x^2+0.0382*x-0.0004] [ 0.0331*x^5-0.1377*x^4-0.0503*x^3+0.6305*x^2-0.4852*x+0.0048] [ -0.0693*x^5+0.2184*x^4+0.3961*x^3-1.2116*x^2-0.3166*x+1.0033] [ 0.0687*x^5-0.1469*x^4-0.5398*x^3+0.6528*x^2+0.9673*x-0.0097] [ -0.0317*x^5+0.0358*x^4+0.2530*x^3-0.0426*x^2-0.2257*x+0.0023] [ 0.0049*x^5+0.0004 *x^4-0.0266*x^3+0.0001*x^2+0.0220*x-0.0002] 估计其误差的公式为

)(5x R )25.3)(03.2)(02.1)(01.0()00.1)(15.2(!

6)

()

6(----++=

x x x x x x f

ξ,)3.25,-2.15(∈ξ.

拉格朗日插值及其误差估计的MATLAB 程序 拉格朗日插值及其误差估计的MATLAB 主程序

function [y,R]=lagranzi(X,Y,x,M) n=length(X); m=length(x); for i=1:m

z=x(i);s=0.0; for k=1:n

p=1.0; q1=1.0; c1=1.0;

for j=1:n

if j~=k

p=p*(z-X(j))/(X(k)-X(j)); end

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

s=p*Y(k)+s; end

y(i)=s; end

R=M*q1/c1;

例 2 已知5.030sin = ,1707.045sin = ,0866.060sin = ,用拉格朗日插值及其误差估计的MATLAB 主程序求 40sin 的近似值,并估计其误差.

解 在MATLAB 工作窗口输入程序

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

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

运行后输出插值y 及其误差限R 为

y = R =

0.6434 8.8610e-004.

(2) 牛顿插值法的MATLAB 综合程序

求牛顿插值多项式、差商、插值及其误差估计的MATLAB 主程序

function [y,R,A,C,L]=newdscg(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

相关文档
最新文档