数值代数实验报告(1)绝对经典

更新时间:2024-03-03 05:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数值代数实验报告 Numerical Linear Algebra And Its Applications 学生所在学院:理 学 院 学生所在班级:计算数学10-1 学 生 姓 名:戈 东 潮 指 导 教 师:于 春 肖 教 务 处 2012年 12月

实验一

实验名称: Poisson方程边值问题的五点差分格式 实验时间: 2012年12月13日 星期四 实验成绩: 一、实验目的:

通过上机利用Matlab数学软件实现Poisson方程的边值问题的五点差分格式的线性代数方程组来认真解读Poisson方程边值问题的具体思想与方法,使我们掌握得更加深刻,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。

二、实验内容:

利用Poisson方程来解下列问题:

??2u?2u2??(2?)?2?sin?xsin?y,(x,y)??2 ??x?y?u(x,y)?0,(x,y)????其中???(x,y)0?x,y?1?,??是?的边界。 边值问题的解释是u(x,y)?sin?xsin?y

(1)用例题中模型问题的方法取N=5,10(也可以取N=20)列出五点差分格式的线性代数方程组

三、实验过程:

? 系数矩阵A的Matlab实现函数如下:

%文件名:poisson.m function T=poisson(N) for i=1:N a(i)=4; end b=diag(a); for j=1:N-1

共25页,第- 2 -页

b(j,j+1)=-1; end for j=2:N b(j,j-1)=-1; end for i=1:N I(i)=-1; end I=diag(I); for i=1:N:N*N

for j=1:N

T(i+j-1,i:i+N-1)=b(j,:); end end

for i=1:N:N*N-N for j=1:N

T(i+j-1,i+N:i+N-1+N)=I(j,:); end end

for i=1+N:N:N*N

for j=1:N

T(i+j-1,i-N:i-1)=I(j,:); end end

? 求解常数项b的Matlab实现函数如下:

%函数名:constant.m function b=constant(N) n=N+1; h=1/n;

i=1;

for y=1/n:1/n:N/n

for x=1/n:1/n:N/n

f(i)=2*pi*pi*sin(pi*x)*sin(pi*y); i=i+1; end end b=h*h*f; b=b';

共25页,第- 3 -页

四、实验结果(总结/方案) 在Matlab运行窗口输入 >>A=poisson(5) Enter 输出结果

A =

Columns 1 through 11

4 -1 0 0 -1 4 -1 0 0 -1 4 -1 0 0 -1 4 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Columns 12 through 22

0 -1 0 0 0 0 -1 0 0 0 0 -1 -1 0 0 0 4 0 0 0 0 4 -1 0 0 -1 4 -1 0 0 -1 4 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 共25页,第- 4 -页

0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 -1 0 4 -1 -1 4 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 4 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 -1 0 0 0 4 -1 0 0 -1 4 -1 0 0 -1 4 -1 0 0 -1 4 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Columns 23 through 25

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 4 -1 0 0 -1 4 -1 0 0 -1 4 -1 0 0 -1 4 0 0 0 -1 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 共25页,第- 5 -页

0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 -1 0 0 0 0 -1 0 4 0 0 4 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 -1 4 -1 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 0 -1 0 0 4 -1 0 -1 4 -1

0 -1 4 在运行窗口输入 >>b=constant(5) Enter 常数项的输出结果

b =[ 0.1371 0.2374 0.2742 0.2374 0.1371 0.2374 0.4112 0.4749 0.4112 0.2374 0.2742 0.4749 0.5483 0.4749 0.2742 0.2374 0.4112 0.4749 0.4112 0.2374 0.1371 0.2374 0.2742 0.2374 0.1371]T

所以A*u=b的五点差分格式为

4ui,j?ui?1,j?ui?1,j?ui,j?1?ui,j?1?hfi,j (i,j=1,2……)

2实验二

实验名称: 用Jacobi迭代法和SOR迭代法求解方程组 实验时间: 2012年12月13日 星期四 实验成绩: 一、实验目的:

通过上机利用Matlab数学软件采用Jacobi迭代法和SOR迭代法来求解方程组,求解过程中了解两种迭代方法的基本思想与迭代过程,并分析两种迭代方法的

共25页,第- 6 -页

收敛性和实用用以及他们的异同点。并且熟悉Matlab软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。

二、实验背景:

考虑线性方程组Ax =b时,一般当A为低阶稠密矩阵时,用主元消去法解此方程组是有效方法。但是,对于由工程技术中产生的大型稀疏矩阵方程组(A的阶数很高,但零元素较多,例如求某些偏微分方程数值解所产生的线性方程组),利用迭代法求解此方程组就是合适的,在计算机内存和运算两方面,迭代法通常都可利用A中有大量零元素的特点。雅克比迭代法就是众多迭代法中比较早且较简单的一种,其命名也是为纪念普鲁士著名数学家雅可比。

三、实验内容:

??2u?2u2??(2?)?2?sin?xsin?y,(x,y)??2 ??x?y?u(x,y)?0,(x,y)????其中???(x,y)0?x,y?1?,??是?的边界。 边值问题的解释是u(x,y)?sin?xsin?y (1)取初始向量u(0)各分量均为1,分别用Jacobi迭代法和SOR迭代法

(k)(w=1,1.25,1.5,1.75)解方程组,迭代至u出各种情形的迭代次数,和u?u*?u(k?1)??10?6s时结束,给

?其中u*是迭代至最后的结果,u是解函数

u(x,y)在?xi,yi?上的值作为分量的向量,对数值结果进行分析(G-S)

四、实验过程:

?

Matlab主函数如下: %主函数start.m %start.m function start(N) clc w=N*N; i=1;

共25页,第- 7 -页

x0=ones(w,1);

disp('方程的系数矩阵为:') T=poisson(N)

disp('常数项为:')

b=constant(N)

disp('雅克比迭代后的解和迭代次数为:') [x1 k1]=jacobi(T,b,x0)

for w=1:0.25:1.75

disp('超松弛迭代的解和迭代次数为:') [x2 k2(i)]=ESOR(T,b,x0,w) i=i+1; end

disp('精确解为')

x=exact(N)

disp('雅克比迭代后的解与准确解的误差为') w=max(abs(x1-x)) for t=1:3

w(t)=max(abs(x1-x))

end

disp('超松弛迭代后的解与准确解的误差分别为') w ?

表示矩阵A的Matlab函数如下:

%生成N阶的系数矩阵poisson.m function T=poisson(N) for i=1:N a(i)=4; end

b=diag(a); for j=1:N-1 b(j,j+1)=-1; end

for j=2:N

b(j,j-1)=-1; end for i=1:N I(i)=-1; end

I=diag(I);

for i=1:N:N*N

共25页,第- 8 -页

for j=1:N

T(i+j-1,i:i+N-1)=b(j,:); end end

for i=1:N:N*N-N

for j=1:N

T(i+j-1,i+N:i+N-1+N)=I(j,:); end end

for i=1+N:N:N*N

for j=1:N

T(i+j-1,i-N:i-1)=I(j,:); end end

? 常数b的Matlab实现函数如下: %方程常数项实现函数constant.m function b=constant(N) n=N+1; h=1/n; i=1;

for y=1/n:1/n:N/n

for x=1/n:1/n:N/n

f(i)=2*pi*pi*sin(pi*x)*sin(pi*y); i=i+1; end

end

b=h*h*f; b=b';

? 超松弛迭代法(SOR)的Matlab实现函数如下: %函数名:ESOR.m

function [x k]=ESOR(A,b,x0,omiga,eps)

%超松弛(SOR,Successive Over-Relaxation)迭代法求解线性方程组Ax=b %[x k]=ESOR(A,b,x0,eps) %x:解向量,列向量 %k:迭代次数 %A: 系数矩阵 %b:列向量

%x0:迭代初始值,列向量

%omiga:松弛因子,可缺省,缺省值为1,即为GS迭代法

共25页,第- 9 -页

%eps:误差限,可缺省,缺省值为0.5e-6 %应用举例:

%A=[4 3 0;3 4 -1;0 -1 4];b=[24;30;-24];x0=[1;1;1];omiga=1.25; %[x k]=ESOR(A,b,x0,omiga,0.5e-6) %x=ESOR(A,b,x0) if nargin==4

eps=0.5e-6; end if nargin==3 omiga=1; eps=0.5e-6; end

%检查输入参数 n=length(b);

if size(A,1) ~= n || n ~= length(x0) disp('输入参数有误!'); x=' '; k=' '; return; end

%迭代求解 k=0; x=zeros(n,1); while 1

k=k+1; for i=1:n z=0;

for j=1:i-1

z=z+A(i,j)*x(j); end

for j=i+1:n

z=z+A(i,j)*x0(j); end

x(i)=(1-omiga)*x0(i)+omiga*(b(i)-z)/A(i,i); end

if norm(x-x0)<=eps || k==30 break; end x0=x;

共25页,第- 10 -页

end if k==50

disp('迭代次数太多!') x=' '; end

return;

? Jacobi迭代法的Matlab实现函数如下: %函数名:jacobi.m

function [x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200; elseif nargin<3 error

return

elseif nargin==5 M=varargin{1}; end

D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); B=D\\(L+U); f=D\\b; x=B*x0+f; n=1;

while norm(x-x0)>=eps x0=x;

x=B*x0+f; n=n+1;

if(n>=M)

disp('warming:迭代次数太多,可能不收敛!'); return end

end

? 准确值matlab实现函数 %函数名:exect.m function b=exact(N) n=N+1; h=1/n;

共25页,第- 11 -页

i=1;

for y=1/n:1/n:N/n for x=1/n:1/n:N/n

f(i)=sin(pi*x)*sin(pi*y); i=i+1; end end b=f; b=b';

五、实验结果(总结/方案) 1、在运行窗口输入

>>start(5) Enter

(1)Jacobi迭代后的输出结果

x1 =[ 0.2558 0.4430 0.5116 0.4430 0.8861 0.7674 0.4430 0.5116 0.8861 0.4430 0.7674 0.8861 0.7674 0.4430 0.4430 0.2558]T

k1 =87

(2)超松弛迭代法(SOR)的输出结果

ω=1 时

x2 =[0.2558 0.4431 0.5117 0.4431 0.8862 0.7675 0.4431 0.5117 0.8862 0.4431 0.7675 0.8862 0.7674 0.4431 0.4431 0.2558]T

k2 = 30

ω=1.25时

x2 =[0.2558 0.4430 0.5116 0.4430 0.8861 0.7674 0.4430 0.5116 0.8861 0.4430 0.7674 0.8861 0.7674 0.4430 0.4430 0.2558]T

k2 = 28

共25页,第- 12 -页

0.2558 1.0232 0.2558 0.2558 1.0233 0.2558 0.2558 1.0232 0.2558 0.4430 0.7674 0.8861 0.5116 0.4430 0.5116 0.4431 0.7675 0.8862 0.5116 0.4431 0.5116 0.4430 0.7674 0.8861 0.5116 0.4430 0.5116

ω=1.5时

x2 =[0.2558 0.4430 0.5116 0.4430 0.2558 0.4430 0.7674 0.8861 0.7674 0.4430 0.5116 0.8861 1.0232 0.8861 0.5116 0.4430 0.7674 0.8861 0.7674 0.4430 0.2558 0.4430 0.5116 0.4430 0.2558]T

k2 = 25

ω=1.75时

x2 =[0.2557 0.4430 0.5116 0.4429 0.2559 0.4430 0.8860 0.7674 0.4430 0.5116 0.8860 1.0232 0.8860 0.4429 0.7674 0.8860 0.7673 0.4430 0.2559 0.4430 0.4430 0.2558]T

k2 = 30

(3)误差计算

雅克比迭代后的解与准确解的误差为 w = 0.0232

超松弛迭代后的解与准确解的误差分别为 w = 0.0232 0.0232 0.0232 1、在运行窗口输入

>>start(10) Enter

(1)Jacobi迭代后的输出结果

x1 = [0.0799 0.1534 0.2144 0.2581 0.2808 0.2581 0.2144 0.1534 0.0799 0.1534 0.2943 0.4952 0.5389 0.5389 0.4952 0.4114 0.2943 0.2144 0.4114 0.5751 0.6923 0.7533 0.7533 0.5751 0.4114 0.2144 0.2581 0.4952 0.6923 0.9067 0.9067 0.8332 0.6923 0.4952 0.2581

共25页,第- 13 -页

0.7673 0.5116 0.5116 0.2808 0.4114 0.1534 0.6923 0.8332 0.2808

0.5389 0.7533 0.9067 0.5389 0.2808 0.2808 0.9866 0.9067 0.7533 0.6923 0.8332 0.9067 0.2581 0.2144 0.4114 0.6923 0.5751 0.4114 0.4952 0.5389 0.5389 0.0799 0.1534 0.2144 0.9866 0.5389 0.5389 0.9067 0.5751 0.2144 0.4952 0.2581 0.9866 0.7533 0.2808 0.8332 0.6923 0.1534 0.4114 0.2808 0.9067 0.9067 0.2581 0.6923 0.7533 0.2943 0.2943 0.2808 0.7533 0.9866 0.4952 0.4952 0.7533 0.4114 0.1534 0.2581

0.2144 0.1534 0.0799]T

k1 = 200

(2)超松弛迭代法(SOR)的输出结果

ω=1 时

x2 =[ 0.0855 0.1638 0.2286 0.2746 0.2732 0.2265 0.1617 0.0841 0.1638 0.5259 0.5713 0.5703 0.5231 0.4338 0.2286 0.4377 0.6107 0.7337 0.7970 0.6053 0.4322 0.2248 0.2746 0.5259 0.9576 0.9559 0.8769 0.7273 0.5194 0.5713 0.7970 0.9576 1.0402 1.0384 0.5642 0.2935 0.2978 0.5703 0.7956 1.0366 0.9510 0.7888 0.5633 0.2930 0.7299 0.8769 0.9526 0.9510 0.8725 0.2689 0.2265 0.4338 0.6053 0.7273 0.7237 0.6003 0.4287 0.2230 0.1617 0.5194 0.5642 0.5633 0.5168 0.4287 0.0841 0.1611 0.2248 0.2702 0.2935 0.2230 0.1593 0.0829]T

ω=1.25时

x2=[ 0.0855 0.1638 0.2286 0.2746 0.2732 0.2265 0.1617 0.0841 0.1638 0.5259 0.5713 0.5703 0.5231 0.4338 0.2286 0.4377 0.6107 0.7337 0.7970 0.6053 0.4322 0.2248 0.2746 0.5259 0.9576 0.9559 0.8769 0.7273 0.5194 0.5713 0.7970 0.9576 1.0402 1.0384 0.5642 0.2935 0.2978 0.5703 0.7956

共25页,第- 14 -页

0.2983 0.3137 0.3098 0.7956 0.7337 0.2702 0.9526 0.9559 0.2732 0.7237 0.7901 0.3098 0.3062 0.2930

0.2983 0.3137 0.3098 0.7956 0.7337 0.2702 0.9526 0.9559 0.2978 0.4377 0.1611 0.7299 0.8815 0.2983 0.7901 1.0384 0.5231 0.5168 0.7888 0.4322 0.1593 0.2689

0.2978 0.4377 0.1611 0.7299 0.8815 0.2983 0.7901 1.0384

1.0366 0.9510 0.7888 0.7299 0.8769 0.9526 0.2689 0.2265 0.4338 0.7237 0.6003 0.4287 0.5194 0.5642 0.5633 0.0841 0.1611 0.2248 0.2230 0.1593 0.0829]T

0.5633 0.9510 0.6053 0.2230 0.5168 0.2702 0.2930 0.8725 0.7273 0.1617 0.4287 0.2935 0.2732 0.7237 0.7901 0.3098 0.3062 0.2930 0.5231 0.5168 0.7888 0.4322 0.1593 0.2689

k2 = 30

ω=1.5时

x2=[0.0814 0.2611 0.2168 0.5020 0.5457 0.2178 0.4175 0.5806 0.4151 0.9167 0.9160 0.5457 0.7622 0.5430 0.2828 0.9954 0.9142 0.6994 0.8412 0.2597 0.2168 0.6972 0.5790 0.4993 0.5430 0.0807 0.1547 0.2156 0.1542 k2 = 30

ω=1.75时

x2= [0.0798 0.2581 0.2145 0.4952 0.5389 0.2143 0.4114 0.5752 0.4115 0.9067 0.9067 0.5389 0.7533 0.5389 0.2808 0.9866 0.9065 0.6924 0.8333 0.2580 0.2145

0.1560 0.2178 0.2619 0.1550 0.0807 0.1560 0.5453 0.5007 0.4157 0.5830 0.7011 0.7622 0.2162 0.2619 0.5020 0.8412 0.6984 0.4993 0.9167 0.9967 0.9960 0.2844 0.5453 0.7616 0.7591 0.5427 0.2827 0.9147 0.9142 0.8396 0.4157 0.5806 0.6984 0.4140 0.2156 0.1550 0.5427 0.4985 0.4140 0.2162 0.2600 0.2828 0.0803]T

0.1531 0.2143 0.2579 0.1534 0.0800 0.1531 0.5389 0.4954 0.4116 0.5751 0.6923 0.7533 0.2143 0.2579 0.4952 0.8333 0.6922 0.4951 0.9067 0.9866 0.9866 0.2807 0.5389 0.7534 0.7533 0.5389 0.2808 0.9066 0.9065 0.8333 0.4116 0.5752 0.6922 共25页,第- 15 -页

0.2847 0.2990 0.2971 0.7616 0.7011 0.2600 0.9147 0.9160 0.2611 0.6972 0.7595 0.2971 0.2960 0.2827 0.2807 0.2941 0.2945 0.7534 0.6923 0.2581 0.9066 0.9067 0.2581 0.6922 0.7531 0.2844 0.4175 0.1547 0.6994 0.8431 0.2847 0.7595 0.9960 0.5007 0.4985 0.7591 0.4151 0.1542 0.2597 0.2807 0.4114 0.1535 0.6924 0.8333 0.2807 0.7531 0.9866 0.4954 0.4952 0.7533

0.6922 0.5751 0.4114 0.2144 0.1534 0.2945 0.4115 0.4951 0.5389 0.5389 0.4952 0.4114 0.2943 0.1534 0.0800 0.1535 0.2143 0.2581 0.2808 0.2808 0.2580 0.2144 0.1534 0.0799]T

k=30

(3)误差计算

雅克比迭代后的解与准确解的误差为 w =0.0068

超松弛迭代后的解与准确解的误差分别为 w = 0.0068 0.0068 0.0068

总结:在两种迭代方法中,当SOR所选取的W值有所变化的时候迭代次数也有所变化,但是都要比Jacobi迭代要低,当N取5的时候,Jacobi迭代次数为87次,而当用SOR 迭代的时候W取1、1.25、1.5、1.75不同值的时候迭代次数分别为30、28、25、30次,在精度要求相同的情况下相对于Jacobi迭代要对很多,因此在本次试验中的SOR迭代收敛速度要比Jacobi迭代要快。而且误差都一样。说明这两种方法只是在收敛速度上有所不同,最后的迭代结果的精确度还是相同的。

实验二

实验名称: 用Jacobi迭代法和SOR迭代法求解方程组 实验时间: 2012年12月13日 星期四 实验成绩:

一、实验目的:

熟悉Jacobi迭代法求矩阵特征值问题的思想和一般步骤,并且利用matlab实

现。

二、实验内容:

利用Jacobi迭代方法求解矩阵A=[1 2 3;2 2 4;3 4 3];

的特征值及相应的特征向量

共25页,第- 16 -页

三、实验过程:

编写MATLAB程序如下:

function [k,Bk,V,D,Wc]=jacobite(A,jd,max1)

[n,n]=size(A);Vk=eye(n);Bk=A;state=1;k=0;P0=eye(n); Aij=abs(Bk-diag(diag(Bk)));[m1 i]=max(Aij); [m2 j]=max(m1);i=i(j); while ((k<=max1)&(state==1))

k=k+1,aij=abs(Bk-diag(diag(Bk)));[m1 i]=max(abs(aij)); [m2 j]=max(m1);i=i(j),j,Aij=(Bk-diag(diag(Bk))); mk=m2*sign(Aij(i,j)),

Wc=m2,Dk=diag(diag(Bk));Pk=P0; c=(Bk(j,j)-Bk(i,i))/(2*Bk(i,j)), t=sign(c)/(abs(c)+sqrt(1+c^2)), pii=1/( sqrt(1+t^2)), pij=t/( sqrt(1+t^2)), Pk(i,i)=pii;Pk(i,j)=pij; Pk(j,j)=pii; Pk(j,i)=-pij;

Pk,B1=Pk'*Bk;B2=B1*Pk; Vk=Vk*Pk,Bk=B2, if(Wc>jd) state=1; else

return end

Pk;Vk;Bk=B2;Wc; end

if(k>max1)

disp('请注意迭代次数k已经达到最大迭代次数max1,迭代次数k,对称矩阵Bk,以特征向量为列向量的矩阵V,特征值为对角元的对角矩阵D如下:') else

disp('请注意迭代次数k,对称矩阵Bk,以特征向量为列向量的矩阵V,特征值为对角元的对角矩阵D如下:')

end

Wc;k=k; V=Vk;Bk=B2;D=diag(diag(Bk));[V1,D1] =eig(A,'nobalance') 输入以下程序

>> A=[8 3 1;3 4 7;1 7 2];

>> [k,B,V,D,Wc]=jacobite(A,0.001,100)

运行最后一次迭代结果的:

k =

共25页,第- 17 -页

7 i = 3 j = 2

mk =

3.2007e-005 Wc =

3.2007e-005 c =

2.5561e+005 t =

1.9561e-006 pii =

1.0000 pij =

共25页,第- 18 -页

1.9561e-006 Pk =

1.0000 0 0 0 1.0000 -0.0000 0 0.0000 1.0000

Vk =

0.8065 0.5821 0.1037 -0.3774 0.6418 -0.6676 -0.4552 0.4992 0.7373 Bk =

6.0318 0.0000 -0.0000 0.0000 12.1655 -0.0000 -0.0000 0.0000 -4.1973

由结果可看出迭代7次后主对角线以外的元素变为了0. 故原矩阵的特征值为v=[6.0318 12.16554 -4.1973] 相应的特征向量为 x1=[0.8065 -0.3774 -0.4552] x2=[0.5821 0.6418 0.4992] x3=[0.1037 -0.6676 0.7373]

五、总结

利用雅可比迭代法求矩阵特征值的一般思想为:

选取非对角线上最大的元素,利用变换矩阵将其变为0,之后再选取变换后的矩阵中非对角线中最大值,再将其变为0,如此迭代下去,知道非对角线元素平方和小于设定的精度,这样所得到的矩阵主对角线元素即为特征值,而所有变换矩阵的转置相乘所得矩阵的每列向量即为相对应的特征向量。

共25页,第- 19 -页

共25页,第- 20 -页

本文来源:https://www.bwwdw.com/article/vr2a.html

Top