数值计算方法程序设计.docx
- 文档编号:1917190
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:19
- 大小:223.56KB
数值计算方法程序设计.docx
《数值计算方法程序设计.docx》由会员分享,可在线阅读,更多相关《数值计算方法程序设计.docx(19页珍藏版)》请在冰豆网上搜索。
数值计算方法程序设计
数值计算方法程序设计
1.用matlab编写拉格朗日插值算法的程序并且以(x=,f(x)=x=,f(x)=x=,f(x)=x=,f(x)=为数据基础,在整个插值区间上采用拉格朗日插值算法计算f(x=,写出程序源代码,输出计算结果
x0=;x1=;x2=;x3=;
y0=;y1=;y2=;y3=;
x=
y=(x-x1).*(x-x2).*(x-x3)/((x0-x1).*(x0-x2).*(x0-x3))*y0+(x-x0).*(x-x2).*(x-x3)/((x1-x0).*(x1-x2).*(x1-x3))*y1+(x-x0).*(x-x1).*(x-x3)/((x2-x0).*(x2-x1).*(x2-x3))*y2+(x-x0).*(x-x1).*(x-x2)/((x3-x0).*(x3-x1).*(x3-x2))*y3;
disp('y=');disp(y);
结果为:
x=
y=
2.追赶法
functionx=zhuiganfa
%首先说明:
追赶法是适用于三对角矩阵的线性方程组求解的方法,并不适用于其他类型矩阵。
%定义三对角矩阵A的各组成单元。
方程为Ax=d
%b为A的对角线元素(1~n),a为-1对角线元素(2~n),c为+1对角线元素(1~n-1)。
%A=[2-100
%-13-20
%0-24-3
%00-35]
a=[0-1-2-3];c=[-1-2-3];b=[2345];d=[61-21];
n=length(b);
u0=0;y0=0;a
(1)=0;
%“追”的过程
L
(1)=b
(1)-a
(1)*u0;
y
(1)=(d
(1)-y0*a
(1))/L
(1);
u
(1)=c
(1)/L
(1);
fori=2:
(n-1)
L(i)=b(i)-a(i)*u(i-1);
y(i)=(d(i)-y(i-1)*a(i))/L(i);
u(i)=c(i)/L(i);
end
L(n)=b(n)-a(n)*u(n-1);
y(n)=(d(n)-y(n-1)*a(n))/L(n);
%“赶”的过程
x(n)=y(n);
fori=(n-1):
-1:
1
x(i)=y(i)-u(i)*x(i+1);
end
3.特征向量的计算,幂法
5.2.2幂法的MATLAB程序
用幂法计算矩阵的主特征值和对应的特征向量的MATLAB主程序
function[k,lambda,Vk,Wc]=mifa(A,V0,jd,max1)
lambda=0;k=1;Wc=1;,jd=jd*;state=1;V=V0;
while((k<=max1)&(state==1))
Vk=A*V;[mj]=max(abs(Vk));mk=m;
tzw=abs(lambda-mk);Vk=(1/mk)*Vk;
Txw=norm(V-Vk);Wc=max(Txw,tzw);V=Vk;lambda=mk;state=0;
if(Wc>jd)
state=1;
end
k=k+1;Wc=Wc;
end
if(Wc<=jd)
disp('请注意:
迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:
')
else
disp('请注意:
迭代次数k已经达到最大迭代次数max1,主特征值的迭代值lambda,主特征向量的迭代向量Vk,相邻两次迭代的误差Wc如下:
')
end
Vk=V;k=k-1;Wc;
例5.2.2用幂法计算下列矩阵的主特征值和对应的特征向量的近似向量,精度.并把
(1)和
(2)输出的结果与例中的结果进行比较.
(1);
(2);(3);(4).
解
(1)输入MATLAB程序
>>A=[1-1;24];V0=[1,1]';
[k,lambda,Vk,Wc]=mifa(A,V0,,100),
[V,D]=eig(A),Dzd=max(diag(D)),wuD=abs(Dzd-lambda),wuV=V(:
2)./Vk,
运行后屏幕显示结果
请注意:
迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:
k=lambda=Wc=
33
Vk=V=wuV=
Dzd=wuD=
3
由输出结果可看出,迭代33次,相邻两次迭代的误差Wc19e-007,矩阵的主特征值的近似值00和对应的特征向量的近似向量Vk(00,00,lambda与例5.1.1中的最大特征值近似相等,绝对误差约为37e-006,Vk与特征向量的第1个分量的绝对误差约等于0,第2个分量的绝对值相同.由wuV可以看出,的特征向量V(:
2)与Vk的对应分量的比值近似相等.因此,用程序计算的结果达到预先给定的精度.
(2)输入MATLAB程序
>>B=[123;213;336];V0=[1,1,1]';
[k,lambda,Vk,Wc]=mifa(B,V0,,100),[V,D]=eig(B),
Dzd=max(diag(D)),wuD=abs(Dzd-lambda),wuV=V(:
3)./Vk,
运行后屏幕显示结果
请注意:
迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:
k=lambda=Wc=Dzd=wuD=
39090
Vk=wuV=
V=
0
(3)输入MATLAB程序
>>C=[122;1-11;4-121];V0=[1,1,1]';
[k,lambda,Vk,Wc]=mifa(C,V0,,100),[V,D]=eig(C),
Dzd=max(diag(D)),wuD=abs(Dzd-lambda),
Vzd=V(:
1),wuV=V(:
1)./Vk,
运行后屏幕显示
请注意:
迭代次数k已经达到最大迭代次数max1,主特征值的迭代值lambda,主特征向量的迭代向量Vk,相邻两次迭代的误差Wc如下:
k=lambda=Wc=
100
Dzd=wuD=
Vk=Vzd=wuV=
由输出结果可见,迭代次数k已经达到最大迭代次数max1=100,并且lambda的相邻两次迭代的误差58>2,由wuV可以看出,lambda的特征向量Vk与真值Dzd的特征向量Vzd对应分量的比值相差较大,所以迭代序列发散.实际上,实数矩阵C的特征值的近似值为,并且对应的特征向量的近似向量分别为=(,,),
(,),
(,+,
+,是常数).
(4)输入MATLAB程序
>>D=[-4140;-5130;-102];V0=[1,1,1]';
[k,lambda,Vk,Wc]=mifa(D,V0,,100),[V,Dt]=eig(D),
Dtzd=max(diag(Dt)),wuDt=abs(Dtzd-lambda),
Vzd=V(:
2),wuV=V(:
2)./Vk,
运行后屏幕显示结果
请注意:
迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:
k=lambda=Wc=
19
Dtzd=wuDt=
Vk=Vzd=wuV=
(一)原点位移反幂法的MATLAB主程序1
用原点位移反幂法计算矩阵的特征值和对应的特征向量的MATLAB主程序1
function[k,lambdan,Vk,Wc]=ydwyfmf(A,V0,jlamb,jd,max1)
[n,n]=size(A);A1=A-jlamb*eye(n);jd=jd*;RA1=det(A1);
ifRA1==0
disp('请注意:
因为A-aE的n阶行列式hl等于零,所以A-aE不能进行LU分解.')
return
end
lambda=0;
ifRA1~=0
forp=1:
n
h(p)=det(A1(1:
p,1:
p));
end
hl=h(1:
n);
fori=1:
n
ifh(1,i)==0
disp('请注意:
因为A-aE的r阶主子式等于零,所以A-aE不能进行LU分解.')
return
end
end
ifh(1,i)~=0
disp('请注意:
因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.')
k=1;Wc=1;state=1;Vk=V0;
while((k<=max1)&(state==1))
[LU]=lu(A1);Yk=L\Vk;Vk=U\Yk;[mj]=max(abs(Vk));
mk=m;Vk1=Vk/mk;Yk1=L\Vk1;Vk1=U\Yk1;
[mj]=max(abs(Vk1));mk1=m;Vk2=(1/mk1)*Vk1;tzw1=abs((mk-mk1)/mk1);
tzw2=abs(mk1-mk);Txw1=norm(Vk)-norm(Vk1);
Txw2=(norm(Vk)-norm(Vk1))/norm(Vk1);
Txw=min(Txw1,Txw2);tzw=min(tzw1,tzw2);Vk=Vk2;
mk=mk1;Wc=max(Txw,tzw);Vk=Vk2;mk=mk1;state=0;
if(Wc>jd)
state=1;
end
k=k+1;%Vk=Vk2,mk=mk1,
end
if(Wc<=jd)
disp('A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:
')
else
disp('A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k已经达到最大迭代次数max1,按模最小特征值的迭代值lambda,特征向量的迭代向量Vk,相邻两次迭代的误差Wc如下:
')
end
hl,RA1
end
end
[V,D]=eig(A,'nobalance'),Vk;k=k-1;Wc;lambdan=jlamb+1/mk1;
例5.3.2用原点位移反幂法的迭代公式(),根据给定的下列矩阵的特征值的初始值,计算与对应的特征向量的近似向量,精确到1.
(1),;
(2),;(3),.
解
(1)输入MATLAB程序
>>A=[1-10;-24-2;0-12];V0=[1,1,1]';
[k,lambda,Vk,Wc]=ydwyfmf(A,V0,,,10000)
运行后屏幕显示结果
请注意:
因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.
A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:
k=lambda=Wc=hl=
3
Vk=V=D=
00
00
00
(2)输入MATLAB程序
>>A=[1-1;24];V0=[20,1]';
[k,lambda,Vk,Wc]=ydwyfmf(A,V0,,,100)
运行后屏幕显示结果
请注意:
因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 计算方法 程序设计