当前位置:文档之家› 线性方程组的直接法和迭代法

线性方程组的直接法和迭代法

线性方程组的直接法和迭代法
线性方程组的直接法和迭代法

线性方程组的直接法

直接法就是经过有限步算术运算,无需迭代可直接求得方程组精确解的方法。 线性方程组迭代法

迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法.该方法具有对计算机的存贮单元需求少,程序设计简单、原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法.迭代法不是用有限步运算求精确解,而是通过迭代产生近似解逼近精确解.如Jacobi 迭代、Gauss — Seidel 迭代、SOR 迭代法等。

1. 线性方程组的直接法

直接法就是经过有限步算术运算,无需迭代可直接求得方程组精确解的方法。

1.1 Cramer 法则

Cramer 法则用于判断具有n 个未知数的n 个线性方程的方程组解的情况。当方程组的系数行列式不等于零时,方程组有解且解唯一。如果方程组无解或者有两个不同的解时,则系数行列式必为零。如果齐次线性方程组的系数行列式不等于零,则没有非零解。如果齐次线性方程组有非零解,则系数行列式必为零。 定理1如果方程组Ax b =中0D A =≠,则Ax b =有解,且解事唯一的,解为1212,,...,n n D D D x x x D D D

===i D 是D 中第i 列换成向量b 所得的行列式。 Cramer 法则解n 元方程组有两个前提条件:

1、未知数的个数等于方程的个数。

2、系数行列式不等于零

例1 a 取何值时,线性方程组

1231231

2311x x x a ax x x x x ax ++=??++=??++=?有唯一解。 解:2111111

11011(1)11001

A a a a a a a ==--=---

所以当1a ≠时,方程组有唯一解。

定理2当齐次线性方程组0Ax =,0A ≠时该方程组有唯一的零解。 定理3齐次线性方程组0Ax =有非零解0A <=>=。

1.2 Gauss 消元法

Gauss 消元法是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。当用于一个矩阵时,高斯消元法会产生出一个“行梯阵式”。

1.2.1 用Gauss 消元法为线性方程组求解

eg :Gauss 消元法可用来找出下列方程组的解或其解的限制:

()()()123283211223x y z L x y z L x y z L +-=??--+=-??-++=-?

这个算法的原理是:首先,要将1L 以下的等式中的x 消除,然后再将2L 以下的等式中的y 消除。这样可使整个方程组变成一个三角形似的格式。之后再将已得出的答案一个个地代入已被简化的等式中的未知数中,就可求出其余的答案了。 在刚才的例子中,我们将132

L 和2L 相加,就可以将2L 中的x 消除了。

然后再将1L 和3L 相加,就可以将3L 中的x 消除。

方程组则变为:

281112

225

x y z y z y z +-=???+=??+=?? 现在将24L -和3L 相加,就可将3L 中的y 消除,方程组变为:

281112

21

x y z y z z +-=???+=??-=?? 这样就完成了整个算法的初步,一个三角形的格式(指:变量的格式而言,上例中的变量各为3,2,1个)出现了。第二步,就是由尾至头地将已知的答案代入其他等式中的未知数。第一个答案就是

1z =-。然后直接带入,立即就可得出第二个答案:3y =和最后一个答案2x =。这样,我们利用高斯消元法解决了这个方程组。

2. 线性方程组迭代法

迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法.该方法具有对计算机的存贮单元需求少,程序设计简单、原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法.迭代法不是用有限步运算求精确解,而是通过迭代产生近似解逼近精确解.如Jacobi 迭代、Gauss — Seidel 迭代、SOR 迭代法等。

2.1 Jacobi 迭代法

2131321,11,2,1

,2,1000...............00n n n n n n a a a L a a a a a ---????????=??????????

1122331,1,...n n n n a a a D a a --????????=?????????

?

1213 1.11,232,12,343,0...0...0......00n n n n n a a a a a a a a a U --????????=?????????

? 对于线性方程组Ax b =则A L D U =++,即将A 分解为一个严格下三角矩阵、一个对角阵和一个严格上三角矩阵之和,从而可写出Jacobi 迭代格式的

矩阵表示形式为:

(1)1()(1)()k k x D L U x D b +--=-++,其迭代矩阵1()J D L U -=-+)称为雅可比迭代矩阵.

将线性方程组Ax b =变为一个通解方程组x Bx f =+,对其进行迭代式

改写,

(1)(),0,1,2....k k x Bx f k +=+=矩阵B 为迭代矩阵

()11112211211222221122n n n n n n nn n n

a x a x a x

b a x a x a x b I a x a x a x b +++=??+++=????+++=? 由方程组(I )的第i 个方程解出1(1,2,)x i

n =,得到一个同解方程组: ()

()()

112213311112212233222212211()1n n n n n n n n nn n n nn x a x a x a x b a x a x a x a x b a II x a x a x a x b a ?=----+???=----+?????=---+?

?

构造相应的迭代公式

()()()(1)()()()11221331111(1)()()()22122332222(1)()()()12211()1k k k k n n k k k k n n k k k k n n n n nn n n nn x a x a x a x b a x a x a x a x b a III x a x a x a x b a +++?=----+???=----+?????=---+?

?

取初始向量()(0)(0)(0)(0)12,,T n x

x x x =,利用(III )反复迭代可以得到一个向量序列{}()k x ,利用此迭代格式求解方程组的解法称为Jacobi 迭代法。

用Jacobi 迭代求解下列方程组

121232343243330424x x x x x x x +=??+-=??-+=-?

输入

A=[4 3 0;3 3 -1;0 -1 4];

b=[24;30;-24];

[x, k, index]=Jacobi(A, b, 1e-5, 100)

输出:

x =

-2.9998

11.9987

-3.0001

k =

100

index =

所以解为:1x =-2.9998, 2x =11.9987, 3x =-3.0001

2.2 Gauss-Seide 迭代

若L 、 U 、 D 为上述的L 、 U 、 D 。则Gauss —Seidel 迭代法的矩阵表示为:(1)1(1)()()k k k x D Lx Ux b +-+=--+,现将(1)k x +显示化由

(1)()()k k D L x Ux b ++=-+得:(1)1()1()()k k x D L Ux D L b +--=-+++,令

相关主题
文本预览
相关文档 最新文档