首页 理论教育 线性代数方程的直接解法

线性代数方程的直接解法

时间:2023-06-25 理论教育 版权反馈
【摘要】:,xn表示的x1,再代到其余方程中去,得到一个新的消去了x1的(n-1)元1次方程组。依次类推,最后得到只剩下xn的1元1次方程,并由此方程求得xn。所幸的是,在大多数情况下,线性系统的动力学方程的系数矩阵为对称正定矩阵,满足Cholesky分解的条件。向前-向后代入运算在完成矩阵分解之后,即可通过向前-向后代入运算来求得线性代数方程组的解。

线性代数方程的直接解法

1.高斯消去法

线性代数方程组的基本解法就是高斯消去法。下面以一个简单的三元一次方程组为例加以说明。

首先,由式(5.1a)可得

x1=-x2+x3-1)/2 (5.1d)

代入式(5.1b)和式(5.1c),可得到消去x1的2元1次方程

再由式(5.1e)得

x2=-1-x3 (5.1g)

代入式(5.1f),即可求得x3=1。然后依次代回到式(5.1e)和式(5.1d),即可求得x2=-2,x1=1。

可见,对于一个n元1次方程组来说,高斯消去法分为两部:第一部是逐次消元的过程,即由第一个方程得到由x2x3,…,xn表示的x1,再代到其余方程中去,得到一个新的消去了x1的(n-1)元1次方程组。依次类推,最后得到只剩下xn的1元1次方程,并由此方程求得xn。第二部则是把xn的值回代,逐次求得xn-1xn-2,…,x1的值。

上述3元1次方程组的例子可以用矩阵的形式来表达

[A]{x}={b}

这里,978-7-111-33620-4-Chapter05-3.jpg978-7-111-33620-4-Chapter05-4.jpg978-7-111-33620-4-Chapter05-5.jpg。消元的过程相当于对[A]、{b}做初等变换。给第1行乘以3/2,再加到第2行,同时把第1行加到第3行,得

这样的变换相当于从式(5.1b)和(5.1c)中消去x1。在此变换中,作为除数的a11=2称为主元(Pivot)。接下来,进一步做变换。此时,主元成为a22=1/2。给上列矩阵的第2行乘以-2/(1/2)=-4,然后加到第3行,得

于是,新的方程为

新方程的系数矩阵为上三角矩阵的形式,因而很容易求得x3=1,x2=-2,x1=1。

可见,从矩阵运算的角度来看,高斯消去法的消元过程实际上是把系数矩阵变换成上三角矩阵的过程。容易看到,在此变换过程中,如果某个主元为0或接近于0,则这个方法无法进行下去。这时,可以对行或列进行交换,把不为0的最大数换到主元位置上去,即所谓的选主元。

2.向前-向后代入法(Forward-Backward Substitution)

有限元方法中,高斯消去法用来进行矩阵分解(Matrix Decomposition)。在完成矩阵分解后,可以很方便地通过向前-向后代入法来求得方程组的解。

(1)LU分解

在线性代数中,给定一个方阵[A],则可以将其分解为一个下三角矩阵[L]和一个上三角矩阵[U]的乘积

[A]=[L][U]

这个理论称为矩阵的LU分解。以一个3×3矩阵为例,LU分解可以表示为

LU分解的另外一种形式为LDU分解。这里,[D]为对角矩阵,[L]、[U]的对角项为1。例如(www.xing528.com)

(2)Cholesky分解

当矩阵[A]为对称正定矩阵[1]时,则可以将其分解为

[L]为一个下三角矩阵,[L]∗为[L]的共轭转置矩阵(对实数矩阵,即为转置矩阵[L]T)。或者可以写成另一种形式

这里,[D]为对角矩阵,[L]为对角项为1的下三角矩阵。

可见,Cholesky分解是LU分解的特殊形式。在可能的情况下,应进行Chol-esky分解,因为其计算效率是LU分解的2倍。所幸的是,在大多数情况下,线性系统的动力学方程的系数矩阵为对称正定矩阵,满足Cholesky分解的条件。

(3)向前-向后代入运算

在完成矩阵分解之后,即可通过向前-向后代入运算来求得线性代数方程组的解。下面以LU分解为例,来对该方法进行说明。对于下列方程组

[A]{x}={b}

将[A]=[L][U]代入,得

[L][U]{x}={b}

引入中间变量{y},上式可以变为两个方程组

例如以3元1次方程为例,方程组(5.4)可以写成

从方程组(5.5a)很容易由向前代入依次求得y1y2y3,然后再由方程组(5.5b)通过向后代入求得最终解x3x2x1。这个方法简称为FBS法。一旦完成了矩阵分解,则对于不同的{b},很容易求出新的解,而不需像高斯消去法那样重新进行运算。

3.解的稳定性问题

有时,线性方程组的系数矩阵上可能存在极其大或极其小的元素。对于这样的不太规整的矩阵,其解的精度和稳定性都不好。所谓稳定性不好,是指[A]或者{b}的微小变化可能会引起解的巨大变化。显然,这样的解没有实际意义。我们称这样的矩阵为病态矩阵。一个矩阵是否为病态矩阵,可由其条件数来判别。条件数被定义为解的相对变化量与系数相对变化量的最大比值。

假设{b}有一小变化{δb},则相应的解的变化为{δx}=[A-1]{δb}。引入衡量向量“大小”的模的概念,978-7-111-33620-4-Chapter05-15.jpg,则根据定义,条件数可表达为

进一步引入矩阵的模的定义,978-7-111-33620-4-Chapter05-17.jpg。这里,{z}为任意非零向量。则上式可以写成

对于对称正定矩阵,其条件数等于最大特征值与最小特征值之比,即

KAmaxmin

当条件数很大时,则为病态矩阵。

判断矩阵是否病态的另一个方法是计算比值r=max(aii/dii)。这里,分子为原始矩阵的对角元素,分母为通过Cholesky分解得到的对角矩阵的相应位置上的元素。这个比值越大,矩阵越接近于病态。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈