数值计算方法(2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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