1. 首页 > 电脑手机 >

雅可比迭代法_雅克比迭代法

雅克比迭代法为什么比直接法好

方法简单。根据查询雅克比迭代法相关资料得知,雅克比迭代法具有方法简单,存储空间小所以比直接法好。

雅可比迭代法_雅克比迭代法雅可比迭代法_雅克比迭代法


1、迭代法是一种常使用求解大型、稀疏线性方程组的方法,相比直接解法,迭代解法在高性能并行实现上拥有很大的优势。

2、问题通常需要通过计算机设计算法来解决,当未知数非常多,问题规模非常大的时候,直接法占用的内存非常大,而迭代法占用的内存比较少。

雅克比迭代法收敛问题 ,矩阵 ,特征方程,求高手解答啊

结果为t>5。首先计算雅可比迭代的迭代矩阵,再计算其行范数或者列范数,使其范数小于1,迭代过程就收敛。

或者计算迭代矩阵的谱半径。要想雅克比迭代收敛,其迭代矩阵的谱半径要小于1,即迭代矩阵的特征值要小于1。

雅可比迭代法和高斯赛德尔迭代法的迭代矩阵怎么求?

1. 用雅克比迭代法和高斯--赛德尔迭代法求解下列方程组,取迭代初值[0;0;0]。

(1) 编程求解,并与用数学软件求解的结果对比。

(2) 考察迭代法的收敛性,若均收敛,对比两种方法的收敛速度。

解:源程序:

①雅克比迭代法:建立函数文件jacobi.m

function [n,x]=jacobi(A,b,X,nm,w)

%用雅克比迭代法求解方程组Ax=b

%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为迭代次数,w为误精度

%输出:x为求得的方程组的解构成的列向量,n为迭代次数

n=1;

m=length(A);

D=diag(diag(A)); %令A=D-L-U,计算矩阵D

L=tril(-A)+D; %令A=D-L-U,计算矩阵L

U=triu(-A)+D; %令A=D-L-U,计算矩阵U

M=inv(D)(L+U); %计算迭代矩阵

g=inv(D)b; %计算迭代格式中的常数项

%下面是迭代过程

while n<=nm

x=MX+g; %用迭代格式进行迭代

if norm(x-X,2)

disp('迭代次数为');n

disp('方程组的解为');x

return;

%上面:达到精度要求就结束程序,输出迭代次数和方程组的解

end

X=x;n=n+1;

end

%下面:如果达到迭代次数仍不收敛,输出警告语句及迭代的终结果(并不是方程组的解)

disp('在迭代次数内不收敛!');

disp('迭代次数后的结果为');x

②高斯赛德尔迭代法:建立函数文件gaussseidel.m

function [n,x]=gaussseidel(A,b,X,nm,w)

%用高斯-赛德尔迭代法求解方程组Ax=b

%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为迭代次数,w为误精度

%输出:x为求得的方程组的解构成的列向量,n为迭代次数

n=1;

m=length(A);

I=eye(m); %生成mm阶的单位矩阵

D=diag(diag(A)); %令A=D-L-U,计算矩阵D

L=tril(-A)+D; %令A=D-L-U,计算矩阵L

U=triu(-A)+D; %令A=D-L-U,计算矩阵U

M=inv(D-L)U; %计算迭代矩阵

g=inv(I-inv(D)L)(inv(D)b); %计算迭代格式中的常数项

%下面是迭代过程

while n<=nm

x=MX+g; %用迭代格式进行迭代

if norm(x-X,2)

disp('迭代次数为');n

disp('方程组的解为');x

return;

%上面:达到精度要求就结束程序,输出迭代次数和方程组的解

end

X=x;n=n+1;

end

%下面:如果达到迭代次数仍不收敛,输出警告语句及迭代的终结果(并不是方程组的解)

disp('在迭代次数内不收敛!');

disp('迭代次数后的结果为');x

运行过程及结果:

①雅克比迭代法的运行过程及结果为:

>> A=[10,3,1;2,-11,3;1,3,12];

b=[2;-5;4];

X=[0;0;0];

nm=50;

w=10^-6;

>> jacobi(A,b,X,nm,w)

迭代次数为

n =

14

方程组的解为

x =

0.0254

0.5144

0.2026

②高斯赛德尔迭代法的运行过程及结果为:

>> A=[10,3,1;2,-11,3;1,3,12];

b=[2;-5;4];

X=[0;0;0];

nm=50;

w=10^-6;

>> gaussseidel(A,b,X,nm,w)

迭代次数为

n =

6方程组的解为

x =

0.0254

0.5144

0.2026

③用matlab中的A\b命令的运行过程及结果如下:

>> A=[10,3,1;2,-11,3;1,3,12];

b=[2;-5;4];

>> A\b

ans =

0.0254

0.5144

0.2026

(1)由运行结果可知,编程得到的方程组的解为[0.0254;0.5144;0.2026]。而用matlab中的A\b命令求出的方程组的解为[0.0254;0.5144;0.2026],完全一致。

(2)由运行过程可知,两种方法均收敛,雅克比迭代次数为14,高斯赛德尔迭代次数为6,说明后者的迭代速度比前者快。

2.用超松弛迭代法求解方程组,分别取松弛因子 ,取迭代初值[0;0;0],迭代30次或满足 时停止计算。

(1) 编程求解,并与用数学软件求解的结果对比。

(2) 考察迭代是否收敛,若收敛,松弛因子取何值时收敛快,与有关定理的结论对照,看结果是否一致。

解:源程序:

①超松弛迭代法:建立函数文件sor22.m

function [n,x]=sor22(A,b,X,nm,w,ww)

%用超松弛迭代法求解方程组Ax=b

%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为迭代次数,w为误精度,ww为松弛因子

%输出:x为求得的方程组的解构成的列向量,n为迭代次数

n=1;

m=length(A);

D=diag(diag(A)); %令A=D-L-U,计算矩阵D

L=tril(-A)+D; %令A=D-L-U,计算矩阵L

U=triu(-A)+D; %令A=D-L-U,计算矩阵U

M=inv(D-wwL)((1-ww)D+wwU); %计算迭代矩阵

g=wwinv(D-wwL)b; %计算迭代格式中的常数项

%下面是迭代过程

while n<=nm

x=MX+g; %用迭代格式进行迭代

if norm(x-X,'inf')

disp('迭代次数为');n

disp('方程组的解为');x

return;

%上面:达到精度要求就结束程序,输出迭代次数和方程组的解

end

X=x;n=n+1;

end

%下面:如果达到迭代次数仍不收敛,输出警告语句及迭代的终结果(并不是方程组的解)

disp('在迭代次数内不收敛!');

disp('迭代次数后的结果为');x

②向后超松弛迭代法:建立函数文件sorxh22.m

function [n,x]=sorxh22(A,b,X,nm,w,ww)

%用向后超松弛迭代法求解方程组Ax=b

%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为迭代次数,w为误精度,ww为松弛因子

%输出:x为求得的方程组的解构成的列向量,n为迭代次数

n=1;

m=length(A);

D=diag(diag(A)); %令A=D-L-U,计算矩阵D

L=tril(-A)+D; %令A=D-L-U,计算矩阵L

U=triu(-A)+D; %令A=D-L-U,计算矩阵U

M=inv(D-wwU)((1-ww)D+wwL); %计算矩阵迭代矩阵

g=wwinv(D-wwU)b; %计算迭代格式中的常数项

%下面是迭代过程

while n<=nm

x=MX+g; %用迭代格式进行迭代

if norm(x-X,'inf')

disp('迭代次数为');n

disp('方程组的解为');x

return;

%上面:达到精度要求就结束程序,输出迭代次数和方程组的解

end

X=x;n=n+1;

end

%下面:如果达到迭代次数仍不收敛,输出警告语句及迭代的终结果(并不是方程组的解)

disp('在迭代次数内不收敛!');

disp('迭代次数后的结果为');x

③对称超松弛迭代法:建立函数文件ssor22.m

function [n,x]=ssor22(A,b,X,nm,w,ww)

%用对称超松弛迭代法求解方程组Ax=b

%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为迭代次数,w为误精度,ww为松弛因子

%输出:x为求得的方程组的解构成的列向量,n为迭代次数

n=1;

m=length(A);

I=eye(m); %生成mm阶的单位矩阵

D=diag(diag(A)); %令A=D-L-U,计算矩阵D

L=tril(-A)+D; %令A=D-L-U,计算矩阵L

U=triu(-A)+D; %令A=D-L-U,计算矩阵U

%下面计算迭代矩阵和迭代格式中的常数项

M=inv(D-wwU)((1-ww)D+wwL)inv(D-wwL)((1-ww)D+wwU); g=wwinv(D-wwU)(I+((1-ww)D+wwL)inv(D-wwL))b;

%下面是迭代过程

while n<=nm

x=MX+g; %用迭代格式进行迭代

if norm(x-X,'inf')

disp('迭代次数为');n

disp('方程组的解为');x

return;

%上面:达到精度要求就结束程序,输出迭代次数和方程组的解

end

X=x;n=n+1;

end

%下面:如果达到迭代次数仍不收敛,输出警告语句及迭代的终结果(并不是方程组的解)

disp('在迭代次数内不收敛!');

disp('迭代次数后的结果为');x

雅可比迭代法的工作原理

雅可比迭代法可求解线性方程组,亦可用于求实对称矩阵的特征值,原理是: 实对称矩阵A实施正交相似变换可得A的相似对角阵,即A~Λ。正交变换矩阵Q是一个旋转矩阵。看下面的例子。

概念:

雅克比迭代法就是众多迭代法中比较早且较简单的一种,其命名也是为纪念普鲁士数学家雅可比。雅克比迭代法的计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容易并行计算。

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

迭代过程

首先将方程组中的系数矩阵A分解成三部分,即:A = L+D+U,如图1所示,其中D为对角阵,L为下三角矩阵,U为上三角矩阵。

之后确定迭代格式,X^(k+1) = BX^(k) +f ,(这里^表示的是上标,括号内数字即迭代次数),如图2所示,其中B称为迭代矩阵,雅克比迭代法中一般记为J。(k = 0,1,......)

再选取初始迭代向量X^(0),开始逐次迭代。

收敛性

设Ax= b,其中A=D+L+U为非奇异矩阵,且对角阵D也非奇异,则当迭代矩阵J的谱半径ρ(J)<1时,雅克比迭代法收敛。

高斯—赛德尔迭代法与雅克比迭代法有何异同?

高斯迭代法可看作是雅克比迭代法的一种修正。两者的收敛速度在不同条件下不同,不能直接比较,即使在同样条件下,有可能对于同样的系数矩阵出现一种方法收敛,一种方法发散。

计算谱半径,普半径小于1,则收敛,否则不收敛。其中谱半径就是迭代矩阵J或者G的特征值。

也可用列范数或行范数判断,列范数或者行范数小于1,则收敛。但范数大于1时,不能说明其发散,还要通过计算谱半径来确定其收敛性。

扩展资料:

在数值线性代数中是用于求解线性方程组的迭代方法。 它以德国数学家卡尔·弗里德里希·高斯(Carl Friedrich Gauss)和菲利普·路德维希·冯·塞德尔(Philipp Ludwig von Seidel)命名,与雅可比方法相似。

虽然它可以应用于对角线上具有非零元素的任何矩阵,但只能在矩阵是对角线主导的或对称的和正定的情况下,保证收敛。

参考资料来源:

雅可比迭代法的计算公式

设n阶线性方程组

地球物理数据处理基础

的系数矩阵A非奇异,且对角元素aii(i=1,2,…,n)均不为零。则可分别从方程组(5-1)的第i个方程解出xi(i=1,2,…,n)。这样,方程组(5-1)就改写为同解方程组

地球物理数据处理基础

其分量形式可统一记为

地球物理数据处理基础

选取初始向量x(0)=(x(0)1,x(0)2,…,x(0)n)T,将其代入方程组(5-3)的右端,进行次迭代,计算结果记为x(1)=(x(1)1,x(1)2,…,x(1)n)T;再将x(1)代入方程组(5-3)的右端,进行第二次迭代,计算结果记为x(2)=(x1(2),x2(2),…,xn(2))T。如此继续,就得到了如下迭代格式:

地球物理数据处理基础

记x(k)=(x1(k),x(k)2,…,xn(k))T,按照式(5-4)进行迭代得出解向量序列{x(k)}的方法称为雅可比迭代法,简称J-迭代法。由于在式(5-4)每步迭代中,等式右端所有分量都是利用前一步的迭代结果,故又称为同步迭代法或简单迭代法。

由此可见,雅可比迭代法的迭代公式简单,每迭代一次只需计算一次矩阵和向量的乘法,在计算时只需用两组存储单元,以便存储x(k)和x(k+1)。但必须指出,上述所得的向量序列{x(k)}是否收敛于Ax=b的解是有条件的,而且即使同样是收敛的,还有收敛速度快慢的问题。

[例]用J-迭代法解方程组

地球物理数据处理基础

解:方程组的雅可比迭代计算式为

地球物理数据处理基础

若取x(0)=(0,0,0)T,可得到表5-1所列迭代序列。

表5-1 迭代序列 若取ε=10-4,则‖x(12)-x(11)‖∞<ε,可取x12=(-0.000034,0.499988,0.000025)T为方程组的解。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息