线性方程组数值解法总结
第二章 线性方程组的数值解法
第二章 线性方程组的数值解法在科技、工程技术、社会经济等各个领域中很多问题常常归结到求解线性方程组。
例如电学中的网络问题,样条函数问题,构造求解微分方程的差分格式和工程力学中用有限元方法解连续介质力学问题,以及经济学中求解投入产出模型等都导致求解线性方程组。
n 阶线性方程组的一般形式为⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++nn nn n n n n n n b x a x a x a b x a x a x a b x a x a x a L K K K K L L 22112222212********* (1.1) 其矩阵形式为b Ax = (1.2) 其中⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n n nn n n n n b b b b x x x x a a a a a a a a a A M M L K K K K L L 2121212222111211),,2,1,(n j i a ij L =,),,2,1(n i b i L =均为实数,i b 不全为0,且A 为非奇异。
关于线性方程组的数值解法一般分为两类:1.直接法 就是不考虑计算机过程中的舍入误差时,经有限次的四则运算得到方程组准确解的方法。
而实际中由于计算机字长的限制,舍入误差的存在和影响,这种算法也只能求得线性方程组的近似解。
本章将阐述这类算法中最基本的消去法及其某些变形。
这些方法主要用于求解低阶稠密系数矩阵方程组。
2.迭代法 从某个解的近似值出发,通过构造一个无穷序列,用某种极限过程去逐步逼近线性方程组的精确解的方法。
本章主要介绍迭代法与迭代法。
迭代法是解大型稀疏矩阵(矩阵阶数高而且零元素较多)的线性方程组的重要方法。
§1 高斯)(Gauss 消去法1.1 Gauss 消去法Gauss 消去法是将线性方程组化成等价的三角形方程组求解。
首先举例说明Gauss消去法的基本思想和过程。
第4章线性方程组的数值解法
。
(3)消元过程: 对 k 1,2,, n 1 ,计算:
k ai(k ) ( a k kk)
ci k
( ai( kj 1) ai( kj ) ci k a kkj)
( i , j k 1 , k 2 , , n )
bi( k 1) bi( k ) ci k bk( k )
a n1 x1 a n 2 x2 ann xn bn
(4.1)
( i, j 1, 2 ,3 , , n )
其中,a i j 、bi 为常数, x i 为待求的未知量
用矩阵形式表示是
其中:
Ax b
a11 a 21 A a n 1
a12 a 22 an 2
( i , j k 1 , , n )
bi( k 1) bi( k ) ci k bk( k )
( 只要设 a k kk) 0 就可以继续进行消元,直到经过 n 1 次消元后, 将线性方程组(4.1)化为(4.2)所示上三角方程组(以上计算过程称为 消元过程)。 (1 (1 a11) a12) a1(1) x1 b1(1) n ( (2 (2 ( a 22) a 23) a 22 ) x 2 b22 ) n (k ) (k ) (k ) (4.2) a kk a kn x k bk (n) (n) a n n x n bn
但其绝对值很小时,用它作除数时,根据数值运算中“用绝对值很小
的数做除数,舍入误差会增大,而且严重影响计算结果的精度”的原 则,这种方法在一定程度上也具有局限性。为了克服这一局限性,产
第六章:线性方程组的数值解法
l l
21 31
1
l
32
1
UX
l l u u u
n1 n2 11
l
12 22
n ( n 1)
... ... ...
( a11) n ( 2) a2n . . . (n a nn )
( x1 b11) x ( 2) 2 b2 . . . . . . ( n) x n bn
20
Doolittle分解法:
思 路 通过比较法直接导出L 和 U 的计算公式。
a11 ... a1n 1 . . l . . . . 21 1 . . . . ... . . . . . an1 ... ann l n1 ...
(n 30, 为9890)
通常也说Gauss消去法的运算次数与n3同阶,记为O(n3)
12
二、 选主元消去法
在高斯消去法消去过程中可能出现a 0的情况,这时 (k akk ) 0 但很小, 高斯消去法将无法进行;即使主元素 其作除数 ,也会导致其它元素数量级的严重增长和舍入 误差的扩散.
(1) If p k then 交换第 k 行与第p行; If q k then 交换第 k 列与第 q 列; (2) 消元 注:列交换改变了 xi 的顺序,须记录交换次序, 解完后再换回来。
16
6.1.2 三角分解法
高斯消元法的矩阵形式 每一步消去过程相当于左乘初等变换矩阵Lk
记: 其中 1 l 21 1 L1 l 31 0 1 l n1 0 0 1
线性方程组的解法知识点总结
线性方程组的解法知识点总结在数学中,线性方程组是一类常见且重要的数学问题。
解线性方程组可以帮助我们找到变量之间的关系,从而求出满足一组条件的未知数值。
本文将总结线性方程组的解法知识点,包括高斯消元法、矩阵法、克莱姆法则以及向量法等。
一、高斯消元法高斯消元法是解线性方程组最常用的方法之一。
它通过一系列的行变换将线性方程组转化为行简化阶梯形,从而求解方程组的解。
高斯消元法的基本步骤如下:1. 转换为增广矩阵将线性方程组转换为增广矩阵,其中矩阵的最右侧一列是常数项。
2. 主元选择选择合适的主元,使得消元过程更加简化。
通常选择系数绝对值最大的元素作为主元。
3. 消元操作通过行变换的方式,将主元所在的列下面的元素全部消为零。
这一步需要注意保持增广矩阵的形式,并且避免除0操作。
4. 回代求解将简化后的增广矩阵转化为线性方程组,根据系数矩阵的特殊形式,我们可以通过回代的方式求解出未知量。
二、矩阵法矩阵法是另一种常用的求解线性方程组的方法,它利用矩阵的运算性质,将方程组转化为矩阵的乘法运算。
其基本步骤如下:1. 构建系数矩阵将线性方程组的系数写成矩阵的形式,形成系数矩阵A。
2. 构建常数矩阵将线性方程组的常数项写成矩阵的形式,形成常数矩阵B。
3. 求解逆矩阵判断系数矩阵的逆矩阵是否存在,若存在,则通过乘法运算求得未知量矩阵X。
4. 检验解将求解得到的未知量矩阵代入原方程组中,验证解的正确性。
三、克莱姆法则克莱姆法则是一种分别求解线性方程组未知量的方法,它利用行列式的性质,将方程组转化为行列式的运算。
其基本原理如下:1. 构建系数矩阵将线性方程组的系数写成矩阵的形式,形成系数矩阵A。
2. 计算行列式计算系数矩阵A的行列式值D。
3. 构建代数余子式矩阵将系数矩阵A中的某一列替换为常数矩阵B,形成代数余子式矩阵。
4. 求解未知量将代数余子式矩阵的行列式值除以系数矩阵的行列式值D,得到每个未知量的值。
四、向量法向量法是一种几何解法,通过向量的线性组合关系,求解线性方程组的未知量。
数值分析第三章线性方程组解法
数值分析第三章线性方程组解法在数值分析中,线性方程组解法是一个重要的主题。
线性方程组是由一组线性方程组成的方程组,其中未知数的次数只为一次。
线性方程组的解法包括直接解法和迭代解法两种方法。
一、直接解法1.1矩阵消元法矩阵消元法是求解线性方程组的一种常用方法。
这种方法将方程组转化为上三角矩阵,然后通过回代求解得到方程组的解。
1.2LU分解法LU分解法是将系数矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积,然后通过解两个三角方程组求解线性方程组。
这种方法可以减少计算量,提高计算效率。
1.3 Cholesky分解法Cholesky分解法是对称正定矩阵进行分解的一种方法。
它将系数矩阵A分解为一个下三角矩阵L和它的转置的乘积,然后通过解两个三角方程组求解线性方程组。
Cholesky分解法适用于对称正定矩阵的求解,具有较高的精度和稳定性。
二、迭代解法2.1 Jacobi迭代法Jacobi迭代法是一种迭代求解线性方程组的方法。
它通过分解系数矩阵A为一个对角矩阵D和一个余项矩阵R,然后通过迭代更新未知数的值,直至达到一定精度要求为止。
Jacobi迭代法简单易懂,容易实现,但收敛速度较慢。
2.2 Gauss-Seidel迭代法Gauss-Seidel迭代法是一种改进的Jacobi迭代法。
它通过使用新计算出的未知数值代替旧的未知数值,达到加快收敛速度的目的。
Gauss-Seidel迭代法是一种逐步逼近法,每次更新的未知数值都会被用于下一次的计算,因此收敛速度较快。
2.3SOR迭代法SOR迭代法是一种相对于Jacobi和Gauss-Seidel迭代法更加快速的方法。
它引入了一个松弛因子,可以根据迭代的结果动态地调整未知数的值。
SOR迭代法在理论上可以收敛到线性方程组的解,而且收敛速度相对较快。
三、总结线性方程组解法是数值分析中的一个重要内容。
直接解法包括矩阵消元法、LU分解法和Cholesky分解法,可以得到线性方程组的精确解。
线性方程组的四种数值解法
线性方程组的四种数值解法(电子科技大学物理电子学院,四川 成都 610054)摘要:本文介绍了四种求解线性方程组的数值解法: 雅克比迭代法、高斯赛德尔迭代法、高斯消去法和改进的平方根法的基本原理和算法流程,通过求解具体方程,对四种求解方法进行了对比。
对于雅克比迭代法和高斯赛德尔迭代法,研究了两种算法对求解同一方程组的迭代效率差异,结果表明高斯赛德尔迭代法达到同样精度所需迭代次数较少。
对于高斯消去法,通过选择列主元的方法提高算法的准确度,计算结果表明高斯消去法计算精确,且运算复杂度也不是很高。
对于改进的平方根法,其运算复杂度低,但对于给定的方程组有着严苛的要求。
关键词:雅克比迭代法;高斯赛德尔迭代法;高斯消去法;改进的平方根法;线性方程组引言线性方程组的求解在日常生活和科研中有着极其重要的应用,但在实际运算中,当矩阵的维数较高时,用初等方法求解的计算复杂度随维数的增长非常快,因此,用数值方法求解线性方程组的重要性便显现出来。
经典的求解线性方程组的方法一般分为两类:直接法和迭代法。
前者例如高斯消去法,改进的平方根法等,后者的例子包括雅克比迭代法,高斯赛德尔迭代法等。
这些方法的计算复杂度在可以接受的范围内,因此被广泛采用。
一般来说,直接法对于阶数比较低的方程组比较有效;而后者对于比较大的方程组更有效。
在实际计算中,几十万甚至几百万个未知数的方程组并不少见。
在这些情况下,迭代法有无可比拟的优势。
另外,使用迭代法可以根据不同的精度要求选择终止时间,因此比较灵活。
在问题特别大的时候,计算机内存可能无法容纳被操作的矩阵,这给直接法带来很大的挑战。
而对于迭代法,则可以将矩阵的某一部分读入内存进行操作,然后再操作另外部分。
本文使用上述四种算法求解对应的方程组,验证各种算法的精确度和计算速度。
1 算法介绍1.1 雅克比迭代法 1.1.1 算法理论设线性方程组(1)b Ax的系数矩阵A 可逆且主对角元素 均不为零,令并将A 分解成 (2)从而(1)可写成令其中. (3)以B 1为迭代矩阵的迭代法(公式)(4)称为雅克比(Jacobi)迭代法(公式),用向量的分量来表示,(4)为(5)其中为初始向量.1.1.2 算法描述 1给定迭代初始向量X 0以及误差要求delta 2根据雅克比迭代公式计算出下一组向量 3判断X 是否满足误差要求,即||X k+1 – X k || < delta4若误差满足要求,则停止迭代返回结果;若否,则返回第二步进行下一轮迭代1.2 高斯赛德尔迭代法nna ,...,a ,a 2211()nna ,...,a ,a diag D 2211=()D D A A +-=()b x A D Dx +-=11f x B x +=b D f ,A D I B 1111--=-=()()111f x B x k k +=+⎩⎨⎧[],...,,k ,n ,...,i x a ba xnij j )k (j j i iii)k (i21021111==∑-=≠=+()()()()()Tn x ,...x ,x x 002010=1.2.1 算法理论由雅克比迭代公式可知,在迭代的每一步计算过程中是用的全部分量来计算的所有分量,显然在计算第i 个分量时,已经计算出的最新分量没有被利用,从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第次近似的分量加以利用,就得到所谓解方程组的高斯—塞德尔(Gauss-Seidel )迭代法.把矩阵A 分解成(6)其中,分别为的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成即其中(7)以为迭代矩阵构成的迭代法(公式)(8)称为高斯—塞德尔迭代法(公式),用变量表示的形式为(9)1.2.2 算法描述 1给定迭代初始向量X 0以及误差要求delta2根据高斯赛德尔迭代公式计算出下一组向量()k x ()1+k x ()1+k ix ()()1111+-+k i k x ,...,x 1+k()1+k x()1+k jx U L D A --=()nna ,...,a ,a diag D 2211=U ,L --A ()b Ux x L D +=-22f x B x +=()()b L D f ,U L D B 1212---=-=2B ()()221f x B x k k +=+⎩⎨⎧[],...,,k ,n ,,i x a x a b a xi j n i j )k (j ij )k (j ij i ii)k (i21021111111==∑∑--=-=+=++3判断X 是否满足误差要求,即||X k+1 – X k || < delta4若误差满足要求,则停止迭代返回结果;若否,则返回第二步进行下一轮迭代1.3 高斯消去法 1.3.1 算法理论下面三种变换称为初等行变换:1.对调两行;2.以数k ≠0乘某一行中的所有元素;3.把某一行所有元素的k 倍加到另一行对应的元素上去。
线性方程组的解法知识点总结
线性方程组的解法知识点总结在数学中,线性方程组是研究线性关系的重要工具。
解决线性方程组的问题有助于我们理解和应用线性代数的基本知识。
本文将总结线性方程组的解法,包括高斯消元法、矩阵的逆和克拉默法则。
一、高斯消元法高斯消元法是解决线性方程组的常见方法。
它通过逐步消去未知数,将方程组化简为上三角形式,并利用回代求解未知数的值。
步骤:1. 将线性方程组写成增广矩阵的形式,其中矩阵的最后一列是常数列。
2. 选取一个基准元素,通常选择矩阵的左上角元素或者第一列的首个非零元素。
3. 通过初等行变换,将基准元素下方的元素转化为零,从而将方程组化为上三角形式。
4. 从最后一行开始,通过回代求解未知数的值。
高斯消元法的优点是能够很好地处理大规模的线性方程组,但其缺点是计算量较大,并且可能需要进行主元交换。
二、矩阵的逆矩阵的逆也是解决线性方程组的重要方法。
对于一个非奇异方阵(可逆矩阵),我们可以通过求解逆矩阵来得到线性方程组的解。
步骤:1. 将线性方程组写成矩阵形式,其中系数矩阵为一个非奇异方阵。
2. 判断系数矩阵是否可逆。
如果可逆,则计算系数矩阵的逆矩阵。
3. 将方程组的常数列构成一个列矩阵,记为向量b。
4. 计算未知数向量x的值,即x = A^(-1) * b,其中A^(-1)为系数矩阵的逆矩阵。
矩阵的逆方法适用于已知系数矩阵可逆的情况,且计算矩阵的逆矩阵需要考虑到矩阵的性质和运算法则。
三、克拉默法则克拉默法则是一种解决线性方程组的特殊方法,适用于方程组的系数矩阵为方阵并且可逆的情况。
它利用行列式的性质来求解未知数的值。
步骤:1. 将线性方程组写成矩阵形式,并记为Ax = b,其中A为系数矩阵,x为未知数向量,b为常数向量。
2. 求解系数矩阵的行列式,记为det(A)。
3. 分别将系数矩阵每一列替换为常数向量b,得到新的矩阵A1到An。
4. 分别求解A1到An的行列式,得到d1到dn。
5. 根据克拉默法则,未知数向量x的值为x = (d1/det(A),d2/det(A), ..., dn/det(A))。
线性方程组的数值解法
・3 8 ・
© 1994-2015 China Academic Journal Electronic Publishing House. All rights reserved.
第 3 期 杨凤霞: 线性方程组的数值解法 再做回代可求得 1 3 1 x 1 = , x2 = , x3 = 4 2 4 方法二: 全主元高斯消去法 计算步骤如下: ( 1) 记录未知量的初始顺序: t1 α i, i = 1, 2…, n ( 2) 消元过程: 对 k = 1, 2, …, n - 1 作如下运算 ① 选主元: 确定 r, s 使 Α rs = m ax Α ij k ≤ i, j ≤ n 若Α rs = 0, 说明系数矩阵奇异, 则转结束; ② 行交换和列交换: 若 r > k, 则交换第 r, k 两 行; 若 s > k, 则交换第 s, k 两列, 并交换 t s 和 t k 的值; ③ 消元计算: Α Α ij α Α ij ik Α kj Α kk ( 3) 回代过程: 若 Α nn = 0 则系数矩阵为奇异, 转结 束; 否则对 k = n, n - 1, …, 1 计算 x tk α ( Α k, n+ 1 2 Α kjx tj) Α kk j= k+ 1
u nn 然后按 L y = b, U x = y 解方程组 LU x = b, 从而 求得方程组 A x = b 的解。 现在用此种方法求解上例方程组。 解: 令 1 0 0 u 11 u 12 u 13 l 0 u 22 u 23 = 21 1 0 l31 l32 1 0 0 u 33 1 2 - 1 1 - 1 5 4 1 2 利用矩阵乘法可得到 1 0 0 1 0 0 l21 1 0 = 1 1 0 l31 l32 1 4 7 3 0 u 11 u 12 u 13 1 2 - 1 0 u 22 u 23 = 0 - 3 6 0 0 12 0 0 u 33 这样原方程组就化为依次求下列两个三角形方程组 1 0 0 y1 3 1 1 0 y2 = 0 4 7 3 0 y3 2 x1 y1 1 2 - 1 x 2 = y2 0 - 3 6 0 0 - 12 x 3 y3 最后求得原方程组的解为: 1 3 1 x 1 = , x2 = , x3 = 4 2 4 方 法四、 五属于同一类方法, 使用它们的条件是: 系数矩阵 A 为非奇异并且其各阶主子矩阵均非奇异。 以上列举了求解线性方程组的五类数值方法。 当 n 较小时, 我们用克莱姆法则和求逆矩阵的方法求解 较方便; 当 n 较大时, 我们用上面介绍的五种方法求解 较方便, 特别地, 当 n 很大时, 我们可按这五种方法的 解题思想编制程序, 在计算机上求解, 这是非常有效可 行的方法。
线性方程组数值解法总结
好久没来论坛,刚刚发现以前的帖子现在那么火很欣慰,谢谢大家支持!今天趁着不想做其他事情,把线性方程组的数值解法总结下,有不足的地方希望大神指教!数学建模中也会用到线性方程组的解法,你会发现上10个的方程手动解得话把你累个半死,而且不一定有结果,直接用matlab的函数,可以,关键是你不理解用着你安心吗?你怎么知道解得对不对?我打算开个长久帖子,直到讲完为止!这是第一讲,如有纰漏请多多直接,大家一起交流!线性方程组解法有两大类:直接法和迭代法直接法是解精确解,这里主要讲一下Gauss消去法,目前求解中小型线性方程组(阶数不超过1000),它是常用的方法,一般用于系数矩阵稠密,而有没有特殊结构的线性方程组。
首先,有三角形方程组的解法引入Gauss消去法,下三角方程组用前代法求解,这个很简单,就是通过第一个解第二个,然后一直这样直到解出最后一个未知数,代码如下:前代法:function [b]= qiandai_method(L,b)n=size(L,1); %n 矩阵L的行数for j=1:n-1 %前代法求解结果存放在b中b(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);endb(n)=b(n)/L(n,n);上三角方程组用回代法,和前面一样就是从下面开始解x,代码:后代法:function [y]=houdai_method(U,y)n=size(U,1); %n 矩阵L的行数for j=n:-1:2 %后代法求解结果存放在y中y(j)=y(j)/U(j,j);y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);endy(1)=y(1)/U(1,1);Gauss消去的前提就是这两个算法:具体思想是把任何一个线性方程组的系数矩阵A,分解为一个上三角和一个下三角的乘积,即A=LU,其中L为下三角,U为上三角。
那么具体怎么做呢?有高斯变换,什么是高斯变换?由于时间有限我不可能去输入公式,所以我用最平白的话把它描述出来。
数值分析第二章 线性方程组的数值解法
(2.2)
a11 x1 a12 x2 a1n xn b1 a22 x2 a2 n xn b2 ann xn bn
(2.3)
2.顺序高斯消去法
a11 x1 a12 x2 a13 x3 a1n xn a1, n 1 a 21 x1 a 22 x2 a 23 x3 a 2 n xn a 2, n 1 a n1 x1 a n 2 x2 a n 3 x3 a nn xn a n , n 1
(1) a12 (1) a 22
(1) an 2
0
(1) a1 n (1) a2 n (1) a nn
?
A( 1 )
(1) (1) (1) a11 a12 a1 n (1) (1) (1) a21 a22 a2 n (1) (1) (1) an 2 ann a n1
(k ) (k ) m a 用 ik ik / akk 乘第k行
加到第i行中,得到
a (1) a (1) 1k 11 (k ) akk 0 0
(1) (1) x a1 b 1 n 1 (k ) (k ) (k ) akk 1 akn xk bk ( k 1) . ( k 1) ( k 1) x ak 1k 1 ak 1n k 1 bk 1 ( k 1) ( k 1) x ( k 1) ank 1 ann n b n (1) a1 k 1
写出原方程组的增广矩阵:
0.0120 0.0100 0.1670 0.6781 1.000 0.8334 5.910 12.10 1200 4.200 981.0 3200
数值分析线性方程组求解的数值方法
记
Lk
1
k 1, 2 , , n 1
m ik
a ik
(k ) (k )
, ( i , j k 1, k 2 , , n )
用 4 位浮点数计算精确解, 然后舍入到 4 位有效数字, 解出原方程的组的解为: (MATLAB 求解程序如下) A=[0.001 2.0 3.0;-1 3.712 4.623;-2 1.072 5.643]; >> b=[1 2 3]'; >> X=A\b
x1 0.4904 , x2 0.05104 , x3 0.3675 ,
a r i m r k u r i m rk u k i u ri , 有 :
k 1 r 1 k 1
n
r1
u r i a r i m r k u k i , i r , r 1, , n ) (
k 1 r 1
a i r m ik u k r
比较得知,用高斯消元法求解结果误差较大,不能作 为原方程组的近似解,其原因就是在消元过程中使用了小 主元 0.001,至使方程组的系数数量级增加,使误差扩散。
避免方法:高斯主元消元法
高斯主元消去法的MATLAB实现
程 序 8- 2 用 高 斯 列 主 元 消 去 法 求 解 线 性 方 程 组 AX b , 首 先 将 矩 阵 A 化 为上三角矩阵,再执行回代过程。
用回代法求解上三角线性方程组AX=B,其中A为非奇异。
function X=backsub(A,b) %A是一个n阶上三角非奇异阵。 %b是一个n维向量。 %X是线性方程组AX=b的解。 n=length(b); X=zeros(n,1); X(n)=b(n)/A(n,n); for k=n-1:-1:1 X(k)=(b(k)-A(k,k+1:n)*X(k+1:n))/A(k,k); End
第4章线性方程组的数值解法(直接法)
为了减少计算过程中的舍入误差对解的影响, 应选择 绝对值尽可能大的主元作除数, 基于这种思想导出了选主 元消去法。
2. Gauss 列主元消去法 基本思想: 在第 k 步消元前,从 A( k ) 的第 k 列 n-k+1
准确到小数点后第9位的解为 x1 2.000010000, x2 0.999989999.
如果计算过程用四位十进制浮点数(仿机器实际计算) , 用第一个方程消去第二个方程中的, 得 10 4 0.1000 x1 10 0.2000 x2 10 0.2000 6 6 10 0.2000 x2 10 0.2000 由此解得 x2 1, x1 0, 显然它不是原方程的解.
适宜于求解大型(n 1000)稀疏的(零元素较多)线性方程组。
主要方法有:
1). 雅可比(Jacobi)迭代法 2). 高斯 — 赛德尔(Guass Seidel)法
是G S方法的加速 3). 超松弛(SOR)法: 优点:速度高,计算机存储量小,程序设计简单; 缺点:有误差,需要事先确定迭代算法的收敛性及收敛速度。
(1) a12 (2) a22
(1) a1 k (2) a2 k (k ) akk
(1) a1, k 1 (2) a2, k 1 (k ) ak ,k 1
(1) a1 n (2) a2 n
0 0 0
(k ) akn
0 0
( k 1) ( k 1) ak a 1,k 1 k 1,n
3). 改进的Gauss消去法: 实际计算中常用的有效方法。
如:列(行)主元法, 全主元法, LU分解法, 平方根法, 追赶法等
(2)迭代法: 利用不动点理论将方程组变形为某种等价的迭代公式,
线性方程组求解的数值方法52614共103页文档
(1)
an1x1 an2 x2 L ann xn bn
系数矩阵
a11 a12 L
A
a
21
a22
L
L L L
a
n1
an2
L
a1n
a
2
n
,
L
a
nn
x1
x
x
2
,
L
x
n
b1
b
b
2
。
L
b
n
5
若记 则(1)可写为
A=A (1)(ai(j1)),bb(1),
A(1)xb(1)
ai(jk1)
a(k) ij
mij
a(k kj
)
i k 1,L ,n
j
k 1,L
, n
bi(k1)
b(k) j
mikbk(k) (i
k 1,L
, n)
n 1
除法: (n k )次 k 1
n1 乘法:(nk)(nk)2次 k1
乘除法: k n 1 1 2 (n k) (n k)2 1 6(2 n 3 3 n 2 5 n )n 3 3,
3
=
说明:整个计算过程可分为两部分: 1. 消元:把原方程组转化为系数矩阵为上三角矩阵的 方程组; 2. 回代:由系数矩阵为上三角矩阵的方程组求解
4
一般情形: n阶线性方程组的高斯消元法
a11x1 a12 x2 L a1n xn b1
aM21x1
a22 x2 M
L M
a2n xn b2 M
(n-k)2次乘法
i,jk1,L,n (n-k)次乘法
A(k+1)与A(k) 前 k 行元素相同,A(k+1)左上角为上三角阵
数值分析-第二章小结
第二章 线性方程组的数值解法-------学习小结姓名 班级 学号 一、本章学习体会通过本章的学习,我了解了线性方程组的不同解法,切实体会到了不同的计算方法对计算结果的影响。
求解线性方程组的方法可分为两大类:直接方法和迭代方法。
直接方法在解一般的线性方程组的时候比较简便,使用此方法经过有限次运算就可得到方程组的解。
然而迭代法是要构造一个无限的向量序列,其极限是方程组的解向量,它适用于求解大型稀疏线性方程组。
总的来说,直接方法和迭代法各有优点与不足,在解线性方程组的时候,我们要根据具体的线性方程组的特点来选择合适的解法,这样我们才能快速准确的得到方程组的解。
因此,我们要熟悉书中介绍的各类线性方程组的解法,同时要善于思考、总结,在使用各种方法求解的同时尽量提出自己独特的见解,通过不断练习计算,使自己的能力得到提高。
二、本章知识梳理线性方程组的求解方法分为直接法和迭代法两种,Gramer (克莱姆)法是直接法的一种,但由于其计算量比较大,在世界工作中其效率比较低、经济效益差,所以此方法我们很少使用,本章主要介绍其他的计算方法。
2.1 Gauss 消去法Gauss (高斯)消去法由消元和回代两个过程组成。
消元过程就是对方程组的增广矩阵做有限次的初等行变换,使它的系数矩阵部分变换为上三角阵。
所用的初等行变换主要有两种:第一种,交换两行的位置;第二种,用一个数乘某一行加到另一行上。
回代过程就是先由方程组的最后一个方程解出n x ,然后通过逐步回代,依次求出1n x -,2n x -,…,1x 。
这种Gauss 消去法可分为Gauss 消去法和列主元素Gauss 消去法两种。
2.1.1 顺序Gauss 消去法在Gauss 消去法的消元过程中对方程组的增广矩阵只做前述的第二种初等行变换就形成了顺序Gauss 消去法,其算法如下:记(1)ij ij a a = (i ,j=1,2,…,n )i i 1、 消元过程对于k=1,2,…,n-1执行 (1)如果()0k kka =,则算法失效,停止计算;否则转(2)。
第三章线性方程组的数值解法
主元素所在的行称为主行。
高斯消去法的计算步骤为:
1〉消元过程
设 a 0 ,对 k 1,2,, n 1 ,计算
k kk
2〉回代过程
bnn xn n ann n , i bi aiji x j j i 1 xi aiii
结果与准确解非常接近。这个例子告诉我们,在采用高 斯消元法解方程组时,用做除法的小主元素可能使舍入 误差增加,主元素的绝对值越小,则舍入误差影响越大。 固应避免采用绝对值小的主元素,同时选主元素尽量的 大,可使该法具有较好的数值稳定性。
为避免上述问题,可在每一次消元之前增加一 个选主元的过程,将绝对值大的元素交换到主对角 线的位置。根据交换的方法可分成全选主元和列选 主元两种方法。
a11
1 2 a 22
Hale Waihona Puke a121 2 a 23
k a kk k a nk
A
k
a1n a 22 n k a kn k a nn
1 ai1 mi 1 1 , i 2,3,, n a11
用 mi1 乘以第1个方程,加到第 i 个方程,消去
第 2个方程到第 n个方程的未知数x1 ,得 A2 x b2
即:
1 a11 1 a12 a11 x1 b11 n 2 2 2 a 22 a 2 n x 2 b2 2 2 2 a n 2 a nn x n bn
写成矩阵-向量形式
Ax b
其中 A 为系数矩阵,x 为解向量,b 为右端常向量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
好久没来论坛,刚刚发现以前的帖子现在那么火很欣慰,谢谢大家支持!
今天趁着不想做其他事情,把线性方程组的数值解法总结下,有不足的地方希望大神指教!数学建模中也会用到线性方程组的解法,你会发现上10个的方程手动解得话把你累个半死,而且不一定有结果,直接用matlab的函数,可以,关键是你不理解用着你安心吗?你怎么知道解得对不对?
我打算开个长久帖子,直到讲完为止!这是第一讲,如有纰漏请多多直接,大家一起交流!线性方程组解法有两大类:直接法和迭代法
直接法是解精确解,这里主要讲一下Gauss消去法,目前求解中小型线性方程组(阶数不超过1000),它是常用的方法,一般用于系数矩阵稠密,而有没有特殊结构的线性方程组。
首先,有三角形方程组的解法引入Gauss消去法,下三角方程组用前代法求解,
这个很简单,就是通过第一个解第二个,然后一直这样直到解出最后一个未知数,代码如下:前代法:
function [b]= qiandai_method(L,b)
n=size(L,1); %n 矩阵L的行数
for j=1:n-1 %前代法求解结果存放在b中
b(j)=b(j)/L(j,j);
b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j);
end
b(n)=b(n)/L(n,n);
上三角方程组用回代法,和前面一样就是从下面开始解x,代码:
后代法:
function [y]=houdai_method(U,y)
n=size(U,1); %n 矩阵L的行数
for j=n:-1:2 %后代法求解结果存放在y中
y(j)=y(j)/U(j,j);
y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j);
end
y(1)=y(1)/U(1,1);
Gauss消去的前提就是这两个算法:
具体思想是把任何一个线性方程组的系数矩阵A,分解为一个上三角和一个下三角的乘积,即A=LU,其中L为下三角,U为上三角。
那么具体怎么做呢?
有高斯变换,什么是高斯变换?由于时间有限我不可能去输入公式,所以我用最平白的话把它描述出来。
你先想一下怎么把一个矩阵的某一列的从第j个分量后全部变0?
高斯变换就是通过每次一个矩阵Li把A的第i列对角线元素以下的都变为0,最后把这么多Li一次左乘起来就是一个矩阵L’=L(n-1)L(n-2)…L2L1,而L’A=U,
那么L=L’的转置,这样就得到了A得分解。
我们要求Ax=b
A=LU
因此可以利用前代法先求Ly=b,
得到y
Ux=y
回代法求解x,这样就可以得到线性方程组的解。
高斯消去:
function [b]=Gauss(A,b)
n=size(A,1);
for k=1:n-1
A(k+1:n,k)=A(k+1:n,k)/A(k,k);
A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n);
end
L=zeros(n,n); %L为下三角矩阵
U=zeros(n,n); %U为上三角矩阵
for i=1:n; %求解L,为A的对角下半部分
L(i+1:n,i)=A(i+1:n,i);
end
U=A-L;
L=L+eye(n); %将L的对角位置设为1
if(rank(L)<n||rank(U)<n) %提醒,如果L或U求出的秩小于n报错
error('输入的矩阵无法进行高斯分解(前代|后代法无法调用)');
end
n=size(b);
y=ones(n);
y=qiandai_method(L,b);
x=houdai_method(U,y);
给一个测试案例:
function test1
A = [ 1 3 6 8 9 2;
2 5
3 1 6 3;
3 6 1 2 8 5;
2 6 8 9
3 8;
5 8 9 3 2 3;
3 5 8 1 7 2];
b=[ 2; -3; 2;55;16;-6];
b=Gauss(A,b)
但是注意这个解法并不是完美的,如果A 的顺序主子式不是全为非奇异是不能得到精确解,而且误差非常大,所以下面会讲到选主元三角分解。
我今天就讲到这里,请继续关注第二讲!
谢谢
这些算法要熟练能随时写出来或者背默出来,当然是理解的基础上.。