线性方程组的直接法
直接法就是经过有限步算术运算,无需迭代可直接求得方程组精确解的方法。 线性方程组迭代法
迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法.该方法具有对计算机的存贮单元需求少,程序设计简单、原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法.迭代法不是用有限步运算求精确解,而是通过迭代产生近似解逼近精确解.如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 +--=-+++,令