文档库 最新最全的文档下载
当前位置:文档库 › 高斯消元法(完整)

高斯消元法(完整)

高斯消元法(完整)
高斯消元法(完整)

高斯消元法解线性方程组

在工程技术和工程管理中有许多问题经常可以归结为线性方程组类型的数学模型,这些模型中方程和未知量个数常常有多个,而且方程个数与未知量个数也不一定相同。那么这样的线性方程组是否有解呢?如果有解,解是否唯一?若解不唯一,解的结构如何呢?这就是下面要讨论的问题。

一、线性方程组

设含有n 个未知量、有m 个方程式组成的方程组

a x a x a x

b a x a x a x b a x a x a x b n n n n m m mn n m

11112211211222221122+++=+++=+++=???????ΛΛΛΛΛΛΛΛΛ (3.1) 其中系数a ij ,常数b j 都是已知数,x i 是未知量(也称为未知数)。当右端常数项b 1,

b 2,

…, b m 不全为0时,称方程组(3.1)为非齐次线性方程组;当b 1=b 2= … =b m = 0时,即

a x a x a x a x a x a x a x a x a x n n n n m m mn n 111122121122221122000

+++=+++=+++=???????ΛΛΛΛΛΛΛΛΛ (3.2) 称为齐次线性方程组。

由n 个数k 1, k 2, …, k n 组成的一个有序数组(k 1, k 2, …, k n ),如果将它们依次代入方程组(3.1)中的x 1, x 2, …, x n 后,(3.1)中的每个方程都变成恒等式,则称这个有序数组(k 1, k 2, …, k n )为方程组(3.1)的一个解。显然由x 1=0, x 2=0, …, x n =0组成的有序数组(0, 0, …, 0)是齐次线性方程组(3.2)的一个解,称之为齐次线性方程组(3.2)的零解,而当齐次线性方程组的未知量取值不全为零时,称之为非零解。

(利用矩阵来讨论线性方程组的解的情况或求线性方程组的解是很方便的。因此,我们先给出线性方程组的矩阵表示形式。)

非齐次线性方程组(3.1)的矩阵表示形式为:

AX = B

其中

A = ????????????mn m m n n a a a a a a a a a ΛΛΛΛΛΛΛ212222111211,X = ????????????n x x x M 21,

B = ?????

???????n b b b M 21 称A 为方程组(3.1)的系数矩阵,X 为未知矩阵,B 为常数矩阵。将系数矩阵A 和常数矩阵B 放在一起构成的矩阵

][B A =????????????m mn m m n n b b b a a a a a a a a a ΛΛΛΛΛΛΛΛ2121

2222111211 称为方程组(3.1)的增广矩阵。

齐次线性方程组(3.2)的矩阵表示形式为:AX = O

二、高斯消元法

(下面介绍利用矩阵求解方程组的方法,那么矩阵初等行变换会不会改变方程组的解呢?我们先看一个定理。)

定理3.1 若用初等行变换将增广矩阵][B A 化为][D C ,则AX = B 与CX = D 是同解方程组。

证 由定理3.1可知,存在初等矩阵P 1, P 2, …, P k ,使 P k …P 2P 1()A B = ()C D 记P k …P 2P 1 = P ,则P 可逆,即P -1存在。 设X 1为方程组A X = B 的解,即 A X 1 = B 在上式两边左乘P ,得 P A X 1 = PB 即 C X 1= D 说明X 1也是方程组C X = D 的解。反之,设X 2为方程组C X = D 的解,即 C X 2= D 在上式两边左乘P -1,得 P -1C X 2= P -1D 即 A X 2 = B 说明X 2也是方程组AX = B 的解。 因此,方程组A X = B 与C X = D 的解相同,即它们是同解方程组。(证毕)

(由定理3.1可知,求方程组(3.1)的解,可以利用初等行变换将其增广矩阵][B A 化简。又有第二章定理2.10可知,通过初等行变换可以将][B A 化成阶梯形矩阵。因此,我们得到了求解线性方程组(3.1)的一般方法:)

用初等行变换将方程组(3.1)的增广矩阵][B A 化成阶梯形矩阵,再写出该阶梯形矩阵所对应的方程组,逐步回代,求出方程组的解。因为它们为同解方程组,所以也就得到了原方程组(3.1)的解。这种方法被称为高斯消元法,

(下面举例说明用消元法求一般线性方程组解的方法和步骤。)

例1 解线性方程组 x x x x x x x x x x x x x x x x 1234123412341234215320342221

+--=-+--=-++=-++-=??????? (3.3) 解 先写出增广矩阵][B A ,再用初等行变换将其逐步化成阶梯形矩阵,即

][B A =????????????--------11122241130235111211②①③①④①+-+-+?→???()()132?????

???????---------13340577401114011211 ③②

④②++-?→???()1????????????--------22200666001114011211④③+?→???()13?????

???????-----00000666001114011211

上述四个增广矩阵所表示的四个线性方程组是同解方程组,最后一个增广矩阵表示的线性方程组为

x x x x x x x x x 1234234342141666+--=---=+=????

? 将最后一个方程乘16

,再将x 4项移至等号的右端,得 x x 341=-+

将其代入第二个方程,解得

212=x

再将x x 23,代入第一个方程组,解得

2141+-=x x

因此,方程组(3.3)的解为 ?????+-==+-=1212143

241x x x x x (3.4)

其中x 4可以任意取值。

由于未知量x 4的取值是任意实数,故方程组(3.3)的解有无穷多个。由此可知,表示式(3.4)表示了方程组(3.3)的所有解。表示式(3.4)中等号右端的未知量x 4称为自由未知量,用自由未知量表示其它未知量的表示式(3.4)称为方程组(3.3)的一般解,当表示式(3.4)中的未知量x 4取定一个值(如x 4=1),

得到方程组(3.3)的一个解(如x 112=-,x 212

=,x 30=,x 41=),称之为方程组(3.3)的特解。

注意,自由未知量的选取不是唯一的,如例1也可以将x 3取作自由未知量。

如果将表示式(3.4)中的自由未知量x 4取一任意常数k ,即令x 4= k ,那么方程组(3.3)的一般解为

???????=+-==+-=k

x k x x k x 43

2112121 ,其中k 为任意常数。 用矩阵形式表示为 ???????????

?+-+-=????????????k k k x x x x 121214321=????????????+????????????--0121211101k (3.5) 其中k 为任意常数。称表示式(3.5)为方程组(3.3)的全部解。

(用消元法解线性方程组的过程中,当增广矩阵经过初等行变换化成阶梯形矩阵后,要写出相应的方程组,然后再用回代的方法求出解。如果用矩阵将回代的过程表示出来,我们可以发现,这个过程实际上就是对阶梯形矩阵进一步简化,使其最终化成一个特殊的矩阵,从这个特殊矩阵中,就可以直接解出或“读出”方程组的解。例如,)对例1中的阶梯形矩阵进一步化简,

????????????-----00000666001114011211③①③②③162++?→???????

???????00000111002004011011 ②①②141+-?→???()?????

???????0000011100210010211001 上述矩阵对应的方程组为

?????=+==+1212143

241x x x x x

将此方程组中含x 4的项移到等号的右端,就得到原方程组(3.3)的一般解,

?????+-==+-=12

12143

241x x x x x (3.4) 其中x 4可以任意取值。

例2 解线性方程组 x x x x x x x x x x x x 1231231

23123234235743992588

+-=+-=+-=+-=???????

解 利用初等行变换,将方程组的增广矩阵[]B A 化成阶梯阵,再求解。即

[]B A =????????????----8852993475324321→?????

???????------0210735011104321 →????????????-------1100220011104321→?????

???????---0000110011104321 →????????????0000110020107021→?????

???????0000110020103001 一般解为

x x x 123

321===?????

例3 解线性方程组 x x x x x x x x x 1231231231242253++=-+-=+-=????

? 解 利用初等行变换,将方程组的增广矩阵[]B A

化成阶梯阵,再求解。即 []B A =??????????---315224211111→??????????--1330333011

11

→????

??????--200033301111

阶梯形矩阵的第三行“0, 0, 0, -2”所表示的方程为:0002123x x x ++=-,由该方程可知,无论x 1,x 2,x 3取何值,都不能满足这个方程。因此,原方程组无解。

三、线性方程组的解的判定

前面介绍了用高斯消元法解线性方程组的方法,通过例题可知,线性方程组的解的情况有三种:无穷多解、唯一解和无解。从求解过程可以看出,方程组(3.1)是否有解,关键在于增广矩阵[A B ]化成阶梯非零行的行数与系数矩阵A 化成阶梯形矩阵后非零行的行数是否相等。因此,线性方程组是否有解,就可以用其系数矩阵和增广矩阵的秩来描述了。

定理3.9 线性方程组(3.1)有解的充分必要是 r A ()=r A B ()。

推论1 线性方程组有唯一解的充分必要条件是r A ()=r A B ()= n 。

推论2 线性方程组有无穷多解的充分必要条件是r A ()=r A B ()

例4 判别下列方程组是否有解?若有解,是有唯一解还是有无穷多解?

(1) x x x x x x x x x x x x 12312312312323117236324+-=---+=-+=-++=??????? (2) x x x x x x x x x x x x 123123123123231127236325

+-=---+=-+=-++=??????? (3) x x x x x x x x x x x x 12312312312323117236325

+-=---+=-+=-++=??????? 解 (1) 用初等行变换将增广矩阵化成阶梯阵,即

[A B ]=????????????------42136132711111321→ ?????

???????-------2977028770421011321 →?????

???????------10000700421011321 因为 r A B ()= 4,r A ()=3,两者不等,所以方程组无解。

(2) 用初等行变换将增广矩阵化成阶梯阵,即

[A B ]=????????????------52136132721111321→ … →?????

???????----00000000411011321 因为 r A B ()=r A ()=2

(3) 用初等行变换将增广矩阵化成阶梯形矩阵,即

[A B ]=????????????------52136132711111321→… →????????????-----00

000700421011321 因为 r A B ()=r A ()= 3 = n ,所以方程组有唯一解。

例5 判别下列齐次方程组是否有非零解? (机动)

x x x x x x x x x x x x x x x x 123412341234123437802544037230412160

+--=+++=----=+--=??????? 解 用初等行变换将系数矩阵化成阶梯形矩阵,即

A =????????????--------161241327344528731→?????

???????-------85102723202018108731 →????????????---1213001313002018108731→?????

???????----10001313002018108731 因为 r A ()= 4 = n ,所以齐次方程组只有零解。

向量组的相关性

在实际问题有许多研究的对象要用n 元有序数组来表示。如总结某五年计划各年某产品产量的数据资料,某工程一年12个月份的用料情况等,就分别要用到5元和12元有序数组。

一、n 维向量的定义

定义3.2 把有顺序的n 个数n a a a ,,,21Λ称为一个n 维向量,记作

????

?

???????=n a a a M 21α 其中),,2,1(1n i a Λ=称为n 维向量α的第i 个分量。

例如,矩阵 A =????

??????--735244313121中每一列都可以看作三维向量: ??????????211,??????????532,??????????--341,????

??????743 称为矩阵A 的列向量。A 中的每一行都可以看作四维向量: []3121,[]4431-,[]7352-

称为矩阵A 的行向量。

规定:n 维向量相等、相加、数乘与列矩阵对应相等。

二、n 维向量组的线性相关性

如果把方程组

?????=-+=-+=++735244332321

321321x x x x x x x x x (3.6)

用向量相等、向量运算关系来表示:

????

??????2111x +??????????5322x +??????????--3413x =??????????743 那么方程组求解问题就变成了求一组使上式列向量存在某种的数321,,x x x 了。下面给出向量之间这种关系的定义。

定义3.3 对于向量α, m ααα,,,21Λ,如果有一组数m k k k ,,,21Λ,使得

α=m m k k k ααα+++Λ2211

则称α是m ααα,,,21Λ的线性组合,或称α由m ααα,,,21Λ线性表出,且称这组数m k k k ,,,21Λ为组合系数。

例1 二维向量组??????=011e ,??

????=102e ,称为二维单位向量组。任意一个二维向量??

????=21a a α都可以由21,e e 线性表出: 2211e a e a +=α。

例2 向量??

????-11不是向量??????-02和??????01的线性组合,因为对于任意一组数21,k k , ??????-021k +??????012k =??????+-0221k k ??

????≠01

例 3 向量组m ααα,,,21Λ中的任一向量)1(m i i ≤≤α都能由这个向量组线性表出:

i α=m i i i ααααα00100111+++++++-ΛΛ

如果用列向量分别把方程组(3.6)的系数矩阵第j 列和常数列表示为

??????????=2111α,??????????=5322α,??????????--=3413α,????

??????=743β 那么方程组(3.6)可以用向量形式表示为

βααα=++332211x x x

若方程组(3.6)有解)3,2,1(==i k x i i ,则有

βααα=++332211k k k

即向量β可以由向量组321,,ααα线性表出。反之,若存在数321,,k k k 使得上式成立,则)3,2,1(==i k x i i 就是方程组(3.6)的一组解。

命题 1 向量β可以由向量组m ααα,,,21Λ线性表出的充分必要条件是:以m ααα,,,21Λ为系数列向量,以β为常数列向量的线性方程组有解,并且此线性方程组的一组解就是线性组合的一组系数。

例4 设 ??????????-=2111α,??????????--=3212α,??????????-=6323α,????

??????-=132β 判断向量β能否由向量组321,,ααα线性表出,若能够,写出它的一种表达式。 解 设βααα=++332211x x x ,由此可得

?????-=+-=-+-=+-163233222321

321321x x x x x x x x x

因为

][B A =??????????-----1632

3321

2211

→??????????----521051102211 →??????????-010*********

→????

??????010********* 方程组的解为 0,5,7321===x x x 。 所以 321057αααβ++=。

定义3.3 对于向量组m ααα,,,21Λ,若存在m 个不全为零的数m k k k ,,,21Λ,使得

02211=+++m m k k k αααΛ (3.7) 则称向量组m ααα,,,21Λ线性相关;否则称向量组m ααα,,,21Λ线性无关。

例5 式证单位向量组

????????????=00011e ,????????????=00102e ,????????????=01003e ,????

?

???????=10004e 是线性无关的。

证 设 044332211=+++e k e k e k e k 。即

?????

???????00011k +????????????00102k +????????????01003k +????????????10004k =????

????????0000 由上式得唯一解0,0,0,04321====k k k k 。所以,4321,,,e e e e 线性无关。

可以证明,n 维单位向量组n e e e ,,,21Λ是线性无关的。

n 维单位向量组 ????????????=0011M e ,????????????=0102M e ,… ,????

?

???????=100M n e

如果把定义 3.3中的(3.7)式看作以m ααα,,,21Λ为系数列向量,以m k k k ,,,21Λ为未知量的齐次线性方程组,那么

定理3.2 对于向量组m ααα,,,21Λ,若齐次线性方程组

02211=+++m m e k e k e k Λ (3.8) 有非零解,则向量组m ααα,,,21Λ线性相关;若齐次线性方程组(3.8)只有零解,

则向量组m ααα,,,21Λ线性无关。

定理3.3 关于向量组m ααα,,,21Λ,设矩阵

[]m A ααα,,,21Λ=

若m A r =)(,则向量组m ααα,,,21Λ线性无关;若m A r <)(,则向量组m ααα,,,21Λ线性相关。

推论 任意n +1个n 维向量一定线性相关。

例6 判断下列向量组的相关性:

(1) []'-=2111α,[]'=1202α,[]'=1113α;

(2) []'-=21011α,[]'---=42112α,[]'-=105323α;

(3) []'=2311α,[]'-=1212α,[]'-=4563α,[]'-=6784α。 解 (1) 因为

A =??????????-112121101→??????????-110220101→????

??????-200220101 m A r ==3)(,所以向量组321,,ααα线性无关。

(2) 因为

B = ????????????-----1042521310211→????????????----620310310211→?????

???????--000000310211 m B r <=2)(,所以向量组321,,ααα线性相关。

(3) 由推论知道,四个三维向量一定是线性相关的。

上面介绍了利用定理3.3来判断向量组的相关性,下面再介绍一个揭示同组向量之间具有某种相关性的特点。

定理3.4 向量组m ααα,,,21Λ,)2(≥m 线性相关的充分必要条件是:其中至少有一个向量可以由其余向量线性表出。

(证明请参阅教材)

推论 向量组m ααα,,,21Λ,)2(≥m 线性无关的充分必要条件是:其中每一个向量都不能由其余向量线性表出。

例7 试证:若向量组的一个部分向量组线性相关,则整个向量组也线性相关。 证 不妨设向量组m ααα,,,21Λ中的部分向量组s ααα,,,21Λ)(m s <线性相关,则存在不全为零的数s k k k ,,,21Λ,使得

02211=+++s s k k k αααΛ

从而有

00012211=+++++++m s s s k k k αααααΛΛ

其中0,,0,,,,21ΛΛs k k k 不全为零,所以向量组m ααα,,,21Λ线性相关。

可以证明:若一个向量组线性无关,它的任意一个部分向量组也线性无关

例8 设向量组m ααα,,,21Λ线性无关,而向量组m ααα,,,21Λ,β线性相关,证明β一定可以由m ααα,,,21Λ线性表出。

证 因为向量组m ααα,,,21Λ,β线性相关,即存在不全为零的数m k k k ,,,21Λ和k ,使得

02211=++++βαααk k k k m m Λ

若0=k ,则上式为 02211=+++m m k k k αααΛ,且m k k k ,,,21Λ不全为零,得m ααα,,,21Λ线性相关,与条件矛盾。因此0≠k ,且

m m k

k k k k k αααβ----

=Λ2211 即β可以由m ααα,,,21Λ线性表出。

三、向量组的秩

(下面简单地介绍向量组的秩的概念及计算方法,首先向量组的极大无关组的定义)

定义3.4 若向量组S 中的部分向量组0S 满足:

(1) 0S 线性无关;

(2) S 中的每一个向量都是0S 中向量的线性组合,则称部分向量组0S 为向量组S 的极大无关组。

可以证明:对于一个向量组,其所有极大无关组所含向量个数都相同。因此向量组的秩定义如下:

定义3.5 对于向量组S ,其极大无关组所含向量个数称为向量组S 的秩。

利用定义求向量组的秩是比较困难的。但是,我们可以利用矩阵与列向量组之间的关系,把求向量组的秩的问题转化为求矩阵的秩序。这是因为

定理3.7 矩阵A 的秩=矩阵A 列向量组的秩=矩阵A 行向量组的秩。

例9 设向量组

????????????-=00211α,????????????--=11112α,????????????-=11103α,????

?

???????-=12414α 求向量组的秩及其一个极大无关组。

解 作矩阵A =[]4321αααα,用初等行变换求A 的秩,即

A = ????????????-----1110211041121011????????????--→3000211021101011?????

???????--→00

00300021101011 所以),,(4,321ααααr =3,且421,,ααα为其中的一个 极大无关组。

线性方程组解的结构

前两讲介绍了方程组的有关概念,方程组的解的几种情况及判定,向量组的相关性。这一讲主要介绍方程组解的结构。

一、齐次线性方程组解的结构 齐次线性方程组的矩阵形式为:AX = O

a x a x a x a x a x a x a x a x a x n n n n m m mn n 111122121122221122000

+++=+++=+++=???????ΛΛΛΛΛΛΛΛΛ (3.2) 解的情况可以归纳为:

1.齐次线性方程组只有零解的充分必要条件是r A ()= n 。

2.齐次线性方程组有非零解的充分必要条件是r A ()

注意:当A 为n 阶方阵时也可利用矩阵行列式A 判断。

3.当r A ()= r

齐次线性方程组AX = O 解的性质:

性质1 若1X 和2X 为齐次线性方程组AX = O 的解,则1X +2X 亦为AX = O 的解。

证 因为1X 和2X 为方程组AX = O 的两个解,故有

A 1X = O , A 2X = O

A (1X +2X )= A 1X + A 2X = O

所以,1X +2X 亦为AX = O 的解。

性质2 若1X 为齐次线性方程组AX = O 的解,则k 1X 亦为AX = O 的解,其中k 为任意常数。

证 因为1X 为方程组AX = O 的解,故有

A (k 1X )= k (A 1X )= O

所以,k 1X 亦为AX = O 的解。

由性质1,2可知,若1X ,2X ,…,s X 为方程组AX = O 的解,则11X k +22X k +…+s s X k 亦为AX = O 的解,其中s k k k ,,,21Λ为任意常数。

若1X ,2X ,…,s X 线性无关,且方程组AX = O 的任何一个解X 都可以被1X ,2X ,…,s X 线性表出,则AX = O 的全部解就是

11X k +22X k +…+s s X k

其中s k k k ,,,21Λ为任意常数。

定义3.6 齐次线性方程组AX = O 满足下列两个条件的一组解向量,称为AX = O 的基础解系。

(1) 线性无关;

(2) 方程组AX = O 的任何一个解都可以用它们线性表出。

(由定义3.6可知)方程组AX = O 的基础解系就是其全部解向量的一个极大无关组。

当r A ()= n 时,方程组AX = O 只有零解,故不存在基础解系;而当r A ()= r (

4.当r A ()= r

11X k +22X k +…+r n r n X k -- (3.9)

其中s k k k ,,,21Λ为任意常数。

(3.9)式称为AX = O 的通解。

如何求方程组AX = O 的基础解系呢?

(1) 把齐次线性方程组的系数写成矩阵A ;

(2) 用初等行变换把A 化为阶梯阵;

(3) 把阶梯阵中非主元列所对应的变量作为自由未知量

(4) 分别令自由未知量中一个为1其余全部为0的办法,求出n -r 个解向量,这n -r 个解向量构成了基础解系。

例1 设齐次线性方程组

???????=-+++=+++=-+++=++++0

33450623032305432154325432154321x x x x x x x x x x x x x x x x x x x 求其基础解系和通解。

解 先写出系数矩阵A ,再用初等行变换将其逐步化成阶梯形矩阵,即

A =????

????????--13345623103112311111???→?-+-+)5()3(①④①②????????????--------622

10623106221011111 ???→?-++)1(②④②

③????????????----0000

0001006221011111 再进一步化简,得

???→?+-+2)1(③②③①????????????---00000001006201011011??→?-+)1(②②①?????

???????--0000

0001006201051001 由此可知54,x x 为自由未知量。 令14=x ,05=x ,得解向量???????

?????????-=010211X ; 令04=x ,15=x ,得解向量???????

?????????-=100652X ; 于是{1X ,2X }为方程组的基础解系。通解为

11X k +22X k

其中21,k k 为任意常数。

二、非齐次线性方程组解的结构 非齐次线性方程组的矩阵表示形式为:AX = B

a x a x a x

b a x a x a x b a x a x a x b n n n n m m mn n m

11112211211222221122+++=+++=+++=???????ΛΛΛΛΛΛΛΛΛ

非齐次线性方程组AX = B 的解的情况可以归纳为:

1.方程组AX = B 有解的充分必要条件是][B A r =r A ()。

2.若][B A r =r A ()= n 时,方程组AX = B 有唯一解。

3.若][B A r =r A ()= r

未知量。

在非齐次线性方程组AX = B 中,令B = O ,得到相应的齐次方程组AX = O 。 方程组AX = B 与相应的AX = O 之间有密切的关系,满足如下性质: 性质3 若1X 和2X 为非齐次线性方程组AX = B 的解,则1X -2X 必为AX = O 的解。

证 因为1X 和2X 为方程组AX = B 的两个解,故有

A 1X =

B , A 2X = B

A (1X -2X )= A 1X - A 2X =

B -B = O

所以,1X -2X 为AX = O 的解。

性质4 若0X 为非齐次线性方程组AX = B 的解,X ~为相应的方程组AX = O

的解,则0X +X ~必为AX = B 的解。

证 因为0X 为方程组AX = B 的解,X ~为方程组AX = O 的解,故有

A 0X =

B , A X ~= O

A (0X +X ~)= A 0X +A X ~=B+ O= B

所以,0X +X ~为AX = B 的解。

例1 解线性方程组 x x x x x x x x x x x x x x x x 1234123412341234215320342221

+--=-+--=-++=-++-=??????? (3.3) 解 先写出增广矩阵][B A ,再用初等行变换将其逐步化成阶梯形矩阵,即

][B A =????????????--------11122241130235111211②①③①④①+-+-+?→???()()132?????

???????---------13340577401114011211 ③②

④②++-?→???()1????????????--------22200666001114011211④③+?→???()13?????

???????-----00000666001114011211

上述四个增广矩阵所表示的四个线性方程组是同解方程组,最后一个增广矩阵表示的线性方程组为

x x x x x x x x x 1234234342141666+--=---=+=????

? 将最后一个方程乘16

,再将x 4项移至等号的右端,得

x x 341=-+

将其代入第二个方程,解得

212=x

再将x x 23,代入第一个方程组,解得

2141+-=x x

因此,方程组(3.3)的解为 ?????+-==+-=1212143

241x x x x x (3.4)

其中x 4可以任意取值。

由于未知量x 4的取值是任意实数,故方程组(3.3)的解有无穷多个。由此可知,表示式(3.4)表示了方程组(3.3)的所有解。表示式(3.4)中等号右端的未知量x 4称为自由未知量,用自由未知量表示其它未知量的表示式(3.4)称为方程组(3.3)的一般解,当表示式(3.4)中的未知量x 4取定一个值(如x 4=1),

得到方程组(3.3)的一个解(如x 112=-,x 212

=,x 30=,x 41=),称之为方程组(3.3)的特解。

注意,自由未知量的选取不是唯一的,如例1也可以将x 3取作自由未知量。 如果将表示式(3.4)中的自由未知量x 4取一任意常数k ,即令x 4= k ,那么方程组(3.3)的一般解为

???????=+-==+-=k

x k x x k x 43211

2121 ,其中k 为任意常数。 用矩阵形式表示为 ???????????

?+-+-=????????????k k k x x x x 121214321=????????????+????????????--0121211101k (3.5) 其中k 为任意常数。称表示式(3.5)为方程组(3.3)的全部解。

(用消元法解线性方程组的过程中,当增广矩阵经过初等行变换化成阶梯形矩阵后,要写出相应的方程组,然后再用回代的方法求出解。如果用矩阵将回代的过程表示出来,我们可以发现,这个过程实际上就是对阶梯形矩阵进一步简化,使其最终化成一个特殊的矩阵,从这个特殊矩阵中,就可以直接解出或“读出”方程组的解。例如,)对例1中的阶梯形矩阵进一步化简,

????????????-----00000666001114011211③①③②③162++?→???????

???????00000111002004011011

②①②141+-?→???()?????

???????00000

11100210010211001 上述矩阵对应的方程组为 ?????=+==+1212143

241x x x x x

将此方程组中含x 4的项移到等号的右端,就得到原方程组(3.3)的一般解,

?????+-==+-=12

12143

241x x x x x (3.4) 其中x 4可以任意取值。

例2 解线性方程组 x x x x x x x x x x x x 1231231

23123234235743992588

+-=+-=+-=+-=??????? 解 利用初等行变换,将方程组的增广矩阵[]B A 化成阶梯阵,再求解。即

[]B A =????????????----8852993475324321→?????

???????------0210735011104321 →????????????-------1100220011104321→?????

???????---0000110011104321 →????????????0000110020107021→?????

???????0000110020103001 一般解为

x x x 123

321===?????

例3 解线性方程组 x x x x x x x x x 1231231231242253++=-+-=+-=????

? 解 利用初等行变换,将方程组的增广矩阵[]B A 化成阶梯阵,再求解。即

[]B A =??????????---315224211111→????

??????--133033301111 →????

??????--200033301111

阶梯形矩阵的第三行“0, 0, 0, -2”所表示的方程为:0002123x x x ++=-,由该方程可知,无论x 1,x 2,x 3取何值,都不能满足这个方程。因此,原方程组无解。

二、线性方程组的解的判定

前面介绍了用高斯消元法解线性方程组的方法,通过例题可知,线性方程组的解的情况有三种:无穷多解、唯一解和无解。从求解过程可以看出,方程组(3.1)是否有解,关键在于增广矩阵[A B ]化成阶梯非零行的行数与系数矩阵A 化成阶梯形矩阵后非零行的行数是否相等。因此,线性方程组是否有解,就可以用其系数矩阵和增广矩阵的秩来描述了。

定理3.9 线性方程组(3.1)有解的充分必要是 r A ()=][B A r 。 将上述结论应用到齐次线性方程组(3.2)上,则总有r A ()=r A B ()。因此齐次线性方程组一定有解。

例4 判别下列方程组是否有解?若有解,是有唯一解还是有无穷多解?

(1) x x x x x x x x x x x x 12312312312323117236324+-=---+=-+=-++=??????? (2) x x x x x x x x x x x x 123123123123231127236325

+-=---+=-+=-++=??????? (3) x x x x x x x x x x x x 12312312312323117236325

+-=---+=-+=-++=??????? 解 (1) 用初等行变换将增广矩阵化成阶梯阵,即

[A B ]=????????????------42136132711111321→ ?????

???????-------2977028770421011321

→????????????------10

000700421011321 因为 r A B ()= 4,r A ()=3,两者不等,所以方程组无解。

(2) 用初等行变换将增广矩阵化成阶梯阵,即

[A B ]=????????????------52136132721111321→ … →?????

???????----00000000411011321 因为 r A B ()=r A ()=2

(3) 用初等行变换将增广矩阵化成阶梯形矩阵,即

[A B ]=????????????------52136132711111321→… →?????

???????-----00000700421011321 因为 r A B ()=r A ()= 3 = n ,所以方程组有唯一解。

例5 判别下列齐次方程组是否有非零解?

x x x x x x x x x x x x x x x x 123412341234123437802544037230412160

+--=+++=----=+--=??????? 解 用初等行变换将系数矩阵化成阶梯形矩阵,即

A =137825443723141216--------?? ??????→13780118200223270158-------?? ??

????

→1378011820001313001312---?? ??????→13780118200013130001----?? ??

???? 因为 r A ()= 4 = n ,所以齐次方程组只有零解。

数值分析列主元消去法的实验报告

实验一 列主元消去法 【实验内容】 1.掌握列主元消去法的基本思路和迭代步骤 2.并能够利用列主元的高斯消去法解任意阶数的线性方程组; 3、从课后题中选一题进行验证,得出正确结果,交回实验报告与计算结果。 【实验方法与步骤】 1.列主元消去法基本思路 设有线性方程组Ax b =,设A 是可逆矩阵。列主元消去法的基本思想就是通过列主元的选取将初等行变换作用于方程组的增广矩阵[]|B A b =,将其中的A 变换成一个上三角矩阵,然后求解这个三角形方程组。 2.列主元高斯消去法算法描述 将方程组用增广矩阵[]()(1)|ij n n B A b a ?+==表示。 步骤1:消元过程,对1,2,,1k n =-L (1) 选主元,找{},1,,k i k k n ∈+L 使得 ,max k i k ik k i n a a ≤≤= (2) 如果,0k i k a =,则矩阵A 奇异,程序结束;否则执行(3); (3) 如果k i k ≠,则交换第k 行与第k i 行对应元素位置,k kj i j a a ?, ,,1j k n =+L ; (4) 消元,对,,i k n =L ,计算/,ik ik kk l a a =对1,,1j k n =++L ,计算 .ij ij ik kj a a l a =- 步骤 2:回代过程: (1) 若0,nn a =则矩阵奇异,程序结束;否则执行(2); (2) ,1/;n n n nn x a a +=对1,,2,1i n =-L ,计算 ,11/n i i n ij j ii j i x a a x a +=+??=- ??? ∑

[实验程序] #include #include #include #include #define NUMBER 20 #define Esc 0x1b #define Enter 0x0d using namespace std; float A[NUMBER][NUMBER+1] ,ark; int flag,n; void exchange(int r,int k); float max(int k); void message(); void main() { float x[NUMBER]; int r,k,i,j; char celect; void clrscr(); printf("\n\nUse Gauss."); printf("\n\n1.Jie please press Enter."); printf("\n\n2.Exit press Esc."); celect=getch(); if(celect==Esc) exit(0); printf("\n\n input n="); scanf("%d",&n); printf(" \n\nInput matrix A and B:"); for(i=1;i<=n;i++) { printf("\n\nInput a%d1--a%d%d and b%d:",i,i,n,i); for(j=1;j<=n+1;j++) scanf("%f",&A[i][j]); } for(k=1;k<=n-1;k++) { ark=max(k); if(ark==0) { printf("\n\nIt’s wrong!");message();

高斯消元法(完整)

高斯消元法解线性方程组 在工程技术和工程管理中有许多问题经常可以归结为线性方程组类型的数学模型,这些模型中方程和未知量个数常常有多个,而且方程个数与未知量个数也不一定相同。那么这样的线性方程组是否有解呢?如果有解,解是否唯一?若解不唯一,解的结构如何呢?这就是下面要讨论的问题。 一、线性方程组 设含有n 个未知量、有m 个方程式组成的方程组 a x a x a x b a x a x a x b a x a x a x b n n n n m m mn n m 11112211211222221122+++=+++=+++=???????ΛΛΛΛΛΛΛΛΛ (3.1) 其中系数a ij ,常数b j 都是已知数,x i 是未知量(也称为未知数)。当右端常数项b 1, b 2, …, b m 不全为0时,称方程组(3.1)为非齐次线性方程组;当b 1=b 2= … =b m = 0时,即 a x a x a x a x a x a x a x a x a x n n n n m m mn n 111122121122221122000 +++=+++=+++=???????ΛΛΛΛΛΛΛΛΛ (3.2) 称为齐次线性方程组。 由n 个数k 1, k 2, …, k n 组成的一个有序数组(k 1, k 2, …, k n ),如果将它们依次代入方程组(3.1)中的x 1, x 2, …, x n 后,(3.1)中的每个方程都变成恒等式,则称这个有序数组(k 1, k 2, …, k n )为方程组(3.1)的一个解。显然由x 1=0, x 2=0, …, x n =0组成的有序数组(0, 0, …, 0)是齐次线性方程组(3.2)的一个解,称之为齐次线性方程组(3.2)的零解,而当齐次线性方程组的未知量取值不全为零时,称之为非零解。 (利用矩阵来讨论线性方程组的解的情况或求线性方程组的解是很方便的。因此,我们先给出线性方程组的矩阵表示形式。) 非齐次线性方程组(3.1)的矩阵表示形式为: AX = B 其中 A = ????????????mn m m n n a a a a a a a a a ΛΛΛΛΛΛΛ212222111211,X = ????????????n x x x M 21, B = ????? ???????n b b b M 21 称A 为方程组(3.1)的系数矩阵,X 为未知矩阵,B 为常数矩阵。将系数矩阵A 和常数矩阵B 放在一起构成的矩阵

高斯消去法算法实验报告

算法设计与分析基础 实验报告 应用数学学院 二零一六年六月

实验高斯消去法算法 一、实验性质设计 二、实验学时14学时 三、实验目的 1、掌握高斯消去法的方法和原理。 2、掌握java语言实现该算法的一般流程。 四、实验内容 1、数组的输入。 2、高斯消去法的算法流程。 4、运行结果的输出。 五、实验报告 Ⅰ、算法原理 通过一系列的初等变换,交换方程组中两个方程的位置,把一个方程替换为它的非零倍,把一个方程替换为它和另一个方程倍数之间的和 或者差。 Ⅱ、Java算法代码: import java.util.Scanner; publicclass Gaosi { publicstaticvoid main(String[] args) { Gao ga = new Gao(); ga.set(); ga.yunSuan(); } } class Gao {

double A[][], B[], X[], ss, sum; int n, k, j, t; void set() { System.out.println("请输入方程组中方程的个数:"); Scanner sc = new Scanner(System.in); n = sc.nextInt(); A = newdouble[n][n]; B = newdouble[n]; X = newdouble[n]; System.out.println("请输入各方程的系数:"); Scanner sd = new Scanner(System.in); for (int i = 0; i

消元法实验报告4

西京学院数学软件实验任务书

《数值分析》实验报告 实验一 一、实验目的与要求 1.掌握高斯列主元消去法解线性方程组的基本思路; 2.了解一些计算机的算法,会以某种汇编语言实现算法结果(本实验主要用matlab编程) 二、实验内容 1.编写用高斯列主元消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. (1) 123 123 123 221 1 221 x x x x x x x x x +-= ? ? ++= ? ?++= ? (2) 123 123 123 21 1 21 x x x x x x x x x -+= ? ? ++= ? ?+-= ? 2.列主元消元法及其matlab程序function [Ra,Rb,n,X]=GaussXQLineMain(A,b) %高斯列主元消元法,其中B为增广矩阵 B=[A b]; %读入b的长度 n=length(b); %读出矩阵a,b秩 Ra=rank(A); Rb=rank(B); if (Rb-Ra)>0 disp('因为Ra不等于Rb,所以此方程组无解.') return end if Ra==Rb if Ra==n disp('因为Ra=Rb=n,所以此方程组有唯一解.') X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 %找出列中最大的元素并指出他的位置

[Y,j]=max(abs(B(p:n,p))); C=B(p,:); B(p,:)= B(j+p-1,:); B(j+p-1,:)=C; for k=p+1:n m= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1); end end b=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n); for q=n-1:-1:1 X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q); end else disp('因为Ra=Rb> clear; A=[1 2 -2;1 1 1;2 2 1 ]; b=[1;1;1]; [Ra,Rb,n,X] =GaussXQLineMain(A,b) 因为Ra=Rb=n,所以此方程组有唯一解. Ra = 3 Rb = 3 n = 3 X = -3.0000 3.0000 1.0000 方程组(2)过程

Gauss列主元消去法程序设计

《Gauss列主元消去法》实验报告 实验名称:Gauss列主元消去法程序设计???成绩:_________ 专业班级:数学与应用数学1202班?姓名:王晓阳???学号: 实?验?日?期:?2014?年11月10日 实验报告日期:?2014年?11月10日 一.实验目的 1. 学习Gauss消去法的基本思路和迭代步骤. 2. 学会运用matlab编写高斯消去法和列主元消去法程序,求解线性方程组. 3. 当绝对值较小时,采用高斯列主元消去法? 4. 培养编程与上机调试能力. 二、实验内容 用消去法解线性方程组的基本思想是用逐次消去未知数的方法把原线性方程组Ax二b 化为与其等价的三角形线性方程组,而求解三角形线性方程组可用回代的方法求解 1. 求解一般线性方程组的高斯消去法? (1) 消元过程: 设a kk k-0 ,第i个方程减去第k个方程的m ik Tk k倍,("k 1^1, n),得到 A k1x=b k1.

经过n-1次消元,可把方程组A1^b1化为上三角方程组A n x=b n. ⑵回代过程: 以解如下线性方程组为例测试结果 2. 列主元消去法 由高斯消去法可知,在消元过程中可能出现a kk k =0的情况,这是消去法将无法进行, 即使主元素a kk k-0但很小时,用其作除数,会导致其他元素数量级的严重增长和舍入误差的扩散,最后也使得计算解不可靠.这时就需要选取主元素,假定线性方程组的系数矩阵A是菲奇异的. (1)消元过程: 对于k =1,2,川,n -1,进行如下步骤: 1) 按列选主元,记 2) 交换增广阵A的p,k两行的元素 A(k,j)=A(p,j) ( j=k,…,n +1) 3) 交换常数项b的p,k两行的元素。 b(k)=b(p) 4) 计算消元 (2) 回代过程 (3) 以解如下线性方程组为例测试结果 三、实验环境 MATLAB R2014a 四、实验步骤

高斯消元法 主元消去法

实验内容 1.编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. (1) 123 123 123 0.101 2.304 3.555 1.183 1.347 3.712 4.623 2.137 2.835 1.072 5.643 3.035 x x x x x x x x x ++= ? ? -++= ? ?-++= ? (2) 123 123 123 528 28321 361 x x x x x x x x x ++= ? ? +-= ? ?--= ? MATLAB计算源程序 1. 用高斯消元法解线性方程组b AX=的MATLAB程序 输入的量:系数矩阵A和常系数向量b; 输出的量:系数矩阵A和增广矩阵B的秩RA,RB, 方程组中未知量的个数n 和有关方程组解X及其解的信息. function [RA,RB,n,X]=gaus(A,b) B=[A b]; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0, disp('请注意:因为RA~=RB,所以此方程组无解.') return end if RA==RB if RA==n disp('请注意:因为RA=RB=n,所以此方程组有唯一解.') X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 for k=p+1:n m= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1); end end b=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n); for q=n-1:-1:1 X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q); end else disp('请注意:因为RA=RB

计算方法实验三线性方程组解法列主元高斯消去法

实验报告 学院:电子信息工程 实验课程:计算方法 学生姓名: 学号: 专业班级:通信工程

实验三线性方程组解法 1 目的与要求 (1)进一步理解和掌握求线性方程组数值解的有关方法和理论。(2)完成利用列主元高斯消去法、雅可比迭代法及高斯-赛德尔迭代法求线性方程组数值解的程序设计。本次实验只需完成列主元高斯消去法的程序设计。 (3)比较三种算法的不同特点。 2 实验内容 通过编制程序,分别用列主元高斯消去法、雅可比迭代法及高斯-赛德尔迭代法计算如下方程组的解。 设初始值为要求满足前后两次迭代结果的差向量的 1 范数小于 3 实验原理 1)列主元高斯消去法 列主元高斯消去法就是在顺序高斯消去法的基础上,每步消元之前都要进行选主元操作,即在第k 步消元前,在第k 列的元素 中选取绝对值最大的元素,设为

,然后交换第 k 行和第 p 行,继续进行消去过程,直到获得上三角方程组,然后通过回代得到方程的根。 4 程序设计 (1)流程图 列主元高斯消去程序流程图 (2)程序代码 #include #include void main() { float a[3][4],x,s; int i,j,m,k; printf("please input coeffient martix array:\n");

for(i=0;i<3;i++) //输入增广矩阵// { for(j=0;j<4;j++) { scanf("%f",&a[i][j]); } } printf("\n"); printf("Output the input matrix"); printf("\n"); for(i=0;i<3;i++) //输出输入的矩阵// { for(j=0;j<4;j++) { printf("%8.4f",a[i][j]); } printf("\n"); } printf("\n"); for(k=0;k<=2;k++) //在不同列中选主元// { m=k;

高斯消元法讲解

#include "Stdio.h" #include "Conio.h" /*L是矩阵的行减1,从程序上看是最外层循环的次数 N 对应矩阵的行数,M对应矩阵的列数 可以通过改变L、N、M来控制矩的阶数 */ #define L 3 #define N 4 #define M 5 void gauss(double a[N][M],double x[N]) {int i,j,l,n,m,k=0; double temp[N]; /*第一个do-while是将增广矩阵消成上三角形式*/ do{n=0; for(l=k;l=0;l--)temp[n++]=a[k-l][k+1]/a[k+1][k+1]; for(m=0,i=k;i>=0;i--,m++) for(j=k;j=0) ; /*下一个for是解方程组*/ for(i=0;i

完整版高斯消元法MATLAB实现

《数值分析》实验报告 一、实验目的与要求 1.掌握高斯消去法的基本思路和迭代步骤; 2.培养编程与上机调试能力。 二、实验内容 1.编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. 5x?2x?x?80.101x?2.304x?3.555x?1.183??312312??(1)(2) 21x?8x?32x?2.137x?3.712x?4.623?1.347x???312312??1x?3x?6x??2.835x?1.072x?5.643x?3.035??132 312 2.编写用列主元高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. 5x?2x?x?80.101x?2.304x?3.555x?1.183??312312??(1)(2) 2x?8x?3x?212.137?4.6231.347?x?3.712x?x??321321??1x?3x?6x??2.835x?1.072x?5.643x?3.035??132 312三.MATLAB计算源程序 AX?b MATLAB1. 程序用高斯消元法解线性方程组的b;输入的量:系数矩阵和常系数向量A RA,RB, n方程组中未知量的个数的秩输出的量:系数矩阵和增广矩阵BA.及其解的信息和有关方程组解X gaus(A,b) function [RA,RB,n,X]=B=[A b]; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0, disp('RA~=RB.') ,所以此方程组无解请注意:因为return end if RA==RB if RA==n disp('RA=RB=n.') ,所以此方程组有唯一解请注意:因为X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 for k=p+1:n m= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);

“线性方程组高斯消去法”实验报告(内含matlab程序)

实验一实验报告 一、实验名称:线性方程组高斯消去法。 二、实验目的:进一步熟悉理解Guass 消元法解法思路,提高matlab 编程能力。 三、实验要求:已知线性方程矩阵,利用软件求解线性方程组的解。 四、实验原理: 消元过程: 设0)0(11≠a ,令乘数)0(11 )0(11/a a m i i -=,做(消去第i 个方程组的i x )操作1i m ×第1个方程+第i 个方程(i=2,3,.....n ) 则第i 个方程变为1)1(2)1(2...i n in i b x a x a =++ 这样消去第2,3,。。。,n 个方程的变元i x 后。原线性方程组变 为: ???? ?????=++=++=++)1()1(2)1(2)1(2)1(22)1(22)0(1)0(11)0(11... . . ... ...n n nn n n n n n b x a x a b x a x a b x a x a 这样就完成了第1步消元。 回代过程: 在最后的一方程中解出n x ,得:)1()1(/--=n nn n n n a b x

再将n x 的值代入倒数第二个方程,解出1-n x ,依次往上反推,即可求出方程组的解: 其通项为3,...1-n 2,-n k /)()1(1)1()1(=-=-+=--∑k kk n k j j k kj k k k a x a b x 五、实验内容: A=[1 1 1;0 4 -1;2 -2 1];%?μêy???ó b=[6 5 1]'%3£êy?? num=length(b) for k=1:num-1 for i=k+1:num if A(k,k)~=0 l=A(i,k)/A(k,k); A(i,:)=A(i,:)-A(k,:).*l; b(i)=b(i)-b(k)*l; end end end A b %??′ú?óx x(num)=b(num)/A(num,num); for i=num-1:-1:1 sum=0; for j=i+1:num sum=sum+A(i,j)*x(j); end x(i)=(b(i)-sum)/A(i,i); end x 六、实验结果:

高斯消元法简介

高斯消元法简介 一,教学目标 知识与技能:了解高斯消元法 过程与方法:直接演示说明,学习做简单练习 情感,态度和价值观:进一步体会解方程组的根本思想消元,通过高斯消元的学习增强学习数学的能力 二,重点与难点:高斯消元法 三,课型:新授课 四,教学过程: 1.在前面的几节课,已经用加减消元和代入消元法求解二元或者三元一次方程组,其基本的思想就是从已知的方程导出未知数较少的方程组,直到最后得到一个一元一次方程,这种做法可适用于一般的n 元线性方程组(线性方程组),但是由于未知数的增加,我们希望我们的消元是有规律的,以避免混乱,下面介绍高斯消元法 2.例1:解方程组 1234123412341234251027612632517315292763 x x x x x x x x x x x x x x x x ---=?? -++-=?? ---=??--++=-? 解:把第一个方程的2倍,-3倍,5倍分别加到第2,3,4个方程上,可以消去2,3,4个 方程的未知数1x 12342342342342510 522226 2 1 7213 x x x x x x x x x x x x x ---=?? +-=?? +-=??--+=-? 为了使以后少出现分数运算,交换第二,三个方程的位置 12342342342342510 2 1 522226 7213 x x x x x x x x x x x x x ---=?? +-=?? +-=??--+=-? 把第2个方程的-5倍,7倍分别加到第3,4个方程,可以消去第3,4个方程未知数2x 123423434342510 2 1 31221 6126 x x x x x x x x x x x ---=?? +-=?? --=??-=-? 整理一下方程,第3个方程的左右两边乘以13 - ,第4个方程左右两边乘以1 6 123423434342510 2 1 47 21 x x x x x x x x x x x ---=?? +-=?? +=-??-=-?

UL分解与高斯消元法实验报告

数值方法实验报告 课程名称:LU分解法与高斯消元法 学院:数学与财经学院 专业:信息与计算科学(金融软件)年级:2011级 姓名:郑荐 学号:201102334023 指导教师:李梦

实验一 【实验名称】 实现LU算法,并利用该算法求解线性方程组 【实验目的】 了解如何用LU三角分解法解线性方程组,利用LU三角分解法解线性方程组 【实验原理】 设无行交换变换的高斯消去法可求解一般线性方程组AX=B,则矩阵A可分解为一个下三角矩阵L和一个上三角矩阵U乘积: A=LU 而且L的对角线元素为1,U的对角线元素非零。得到L和U后,可通过如下步骤得到X: 1.利用向前替换法对方程组L Y=B求解Y。 2.利用回带法对方程组UX=Y求解X。 【实验步骤】 1.输入矩阵A 2.LU分解A,得到L矩阵与U矩阵的值[L U]=LU_1(A) 3.输入矩阵B,利用向前回带法求出Y值Y=upsub(L,B) 4.利用回带发求出X值[X]=backsub(U,Y) 【实验程序】 1.LU分解 代码: function [L U]=LU_1(A) n=length(A(1,:)); L=eye(n); U=zeros(n); for j=1:n U(1,j)=A(1,j); end for i=2:n L(i,1)=A(i,1)/U(1,1); end for k=2:n for j=k:n U(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j); end for i=k+1:n L(i,k)=(A(i,k)-L(i,1:k-1)*U(1:k-1,k))/U(k,k); end end 结果:

高斯消元法解线性方程组

高斯消元法解线性方程组 C++实验报告2015年6月 一、完成人 王婧婷张子承郗滢 二、问题描述 线性方程组问题是大学阶段经常研究的问题,为了进一步熟悉理解高斯消元法的解题思路并且掌握编程语言在数学方面的应用。且为解决线性方程组问题提供便利,要求给出线性方程组的矩阵,能够输出线性方程组的解。 三、解决方案设计 基本程序流程为: (1)输入矩阵 (2)运用初等行变换将其化为阶梯型矩阵 (3)调用一个函数:r()求其秩(有解时)及其无解情况 实验原理为: (1)系数矩阵及其增广矩阵经过初等行变换所得到的矩阵对应的方程与原方程同解 (2)化为阶梯型矩阵过程(输入增广矩阵后,运用初等行变换,使其a[i][i]以下全为零,若a[i][i]为零,运用行变换交换使其不为零) (3)输出阶梯型矩阵 (4)判断解情况并输出(解情况)

(5)输出解 四、模块及代码组织设计 其基本模块分为三大部分,7小部分。第一部分为输入矩阵阶段,用for语句实现。第二部分是对矩阵进行一系列的处理以求得线性方程组的解,先运用初等行变换化为阶梯型,并输出化简矩阵;然后以线性方程组的秩判断其是否有解(规定无解时秩为零)。第三部分是输出线性方程组的解情况及其解,如果无解即输出无解。 五、关键代码 (1)实现化为阶梯型的代码 实现此功能的代码是整个程序的重要内容,其需要进行的初等变换以实现校园的目的,使线性方程组得到简化。其实现如下: for( i=0; i<=n-1&&i

数值分析实验二(列主元Gauss消去法)

《数值分析》实验报告 实验编号:实验二 课题名称:列主元Gauss消去法 一、算法介绍 1、输入矩阵的阶数n,方程组的增广矩阵A; 2、对k=0,1,…,n-2,循环:选取列中绝对值最大的元素,将主元所在的行的元素保存在 数组temp[n+1]中。若主元为零,则系数矩阵奇异,计算停止;否则,顺序进行。如果绝对值最大的元素就在矩阵的对角线上,则进行普通高斯消元法的第一大步,否则将方程组系数换行之后再进行普通高斯消元法的第一大步; 3、然后利用回代法求解线性方程组。 二、程序代码 #include #include #include using namespace std; int main() { int n=0,k=0,i=0,j=0,h=0,g=0,flag=0,i1,j1; double max=0,m=0; cout<<"***利用列主元Gauss消元法求解线性方程组***"<>n; double a[n][n+1]; double t[n+1]; double x[n]; memset(a,0,sizeof(a)); memset(x,0,sizeof(x)); cout<<"请输入方程组的增广矩阵:"<>a[i][j]; } } for(k=0;kmax) { max=fabs(a[i][k]); i1=i; j1=k; } } if(max==0)

实验报告1

实验报告1

西京学院数学软件实验任务书

一、实验目的: 运用高斯消元法、列主元、全主元对线性方程组进行求解 二、问题重述: 对于线性方程:b AX =,其中, 111211222212 n n n n nn a a a a a a a a a ?? ? ?A = ? ? ??L L M M O M L ,12n b b b b ?? ? ?= ? ??? M () ()111(1)(1)11121(1)(1)(1) (1) 212222(1)(1)(1) (1)1 2n n n n nn nn a a a b a a a b a a a b ?? ? ? ?A = ? ? ??? L L M M O M M M M O M M L 进行求解。 三、实验内容: 3.1、高斯消去法 高斯消元就是通过初等行变换将系数矩阵化为上三角矩阵,通过回代求解未知变元。 3.1.1、消元过程: step1:判断对角线上的元素11a 是否为零,若不为零给第一行的每一个元素乘上1 11 i a a - 加到对应的第i 行,将11a 下方的所有元素消为零,其中, () () ()() ()121111111i ij ij j a a a a a =-, () ()()()111(2) 11111 i i i a b b b a =- ,2,i n =L 将矩阵化为: () ()111(1)(1)11121(2)(2)(2) 2222(2) (2)(2) (2)200 n n n nn nn a a a b a a b a a b ?? ? ? ?A = ? ? ??? L L M M O M M M M O M M L 同样可得到step k

高斯消元法

求解线性方程组的直接解法 5.1 Gauss 消去法 ① 三角方程组 先举一个简单的例子来说明消去法的基本思想. 例1. 用消去法解方程组 ??? ??=+-=-=++(3) .122(2) ,54(1) ,6321 32321x x x x x x x x 解 第一步.将方程(1)乘上-2加到方程(3)上去,消去(3)中的未知数1x ,得到 (4) .11432-=--x x 第二步.将方程(2)加到方程(4)上去,消去方程(4)中的未知数2x ,得到与原方程组等 价的三角形方程组 (5) .62 ,54 ,6332321?? ? ??-=-=-=++x x x x x x 显然,方程组(5)是容易求解的,解为.)3,2,1(T x =* 上述过程相当于 332331 (-2) 6-56 20014011111-56 140140111156 122140111)|(r r r r r r b A →+→+??? ? ?? ??--→????? ??---→????? ??--= 其中用i r 表示矩阵的第i 行. 下面我们讨论求解一般线性方程组的高斯消去法. 一般地 ???????==++=+++n n nn n n n n b x a b x a x a b x a x a x a 2 222211212111 当a 11a 22…a nn ≠0时,可解出 x n =b n /a nn for k=n-1:1 x k =(b 1- a k,k+1x k +1-…- a kn x n )/ a kk end

注: k k b x ,可用同一组单元.并可解出一个未知数即代入其它方程消去该未知数 Gauss 消元法的流程图为: 流程图中,,(,1,2,...,)ij i a b i j n 分别为线性方程组的系数矩阵和常数向量; k 是循环次数。 ② 顺序消去法 一般地,k =1对n 阶方程组消去第k 个元(a kk ≠0):

实验二:列主元消元法实验报告

《数值分析》实验报告 实验序号:实验二题目名称: 列主元Gauss消元法解n阶线性代数方程组 学号: 姓名: 任课教师: 马季骕专业班级:计算机科学与技术(非师范) 1、实验目的:用列主元Gauss消元法解n阶线性代数方程组 编写一个程序实现用列主元消元法实现解方程组的问题。 2、算法分析: 其基本做法是把上述方程组通过列主元Gauss消元转化为一个等价的三角形方程组,然后再进行回代就可以求出方程组的解。列主元消元的基本做法是选取系数矩阵的每一列中绝对值最大的作为主元,然后采取和顺序Gauss 消元法相同的步骤进行,求得方程组的解。 1. 列主元Gauss消元法的算法思想: 1.输入系数矩阵A,右端项b,阶n。 2.对k=1,2,…,n,循环: (a)按列选主元保存主元所在行的指标。 (b)若a=0,则系数矩阵奇异,计算停止;否则,顺序进行。 (c)若=k则转向(d);否则换行 (d)计算乘子 (e)消元: 3. 回代:用右端项b来存放解。 3、实验分析: 建立两个数组a和b,通过循环语句将n阶增广矩阵输入进去,通过对列的循环对每一列进行消去未知数,通过n小步n大步把矩阵化简成上三角形矩阵,最后通过迭代法解得方程组得解。 3、函数分析: 具体程序设计:

for(i=1;i<=n;i++) //消元的第一重循环 { p=0; q=0; for(m=i;m

列主元高斯消去法实验报告

实验四:线性方程组数值解法——列主元高斯消去法 目的与要求: 1)熟悉列主元高斯消元法解线性方程组的算法; 2)掌握列主元高斯消去法的编程。 实验内容: 列主元高斯消去法的编程实现。 算法: 消元:对k=0,2,…,n -2,按下列步骤进行: ● 选主元:找出m ?{k,k+1,…,n -1},使)(,)(,m ax k k i n i k k k m a a ≤≤= ● 若|a m,k | #include #include #define DETLA 1e-6 #define N 100 void main()

高斯消元法

这里向你推荐一下克鲁特算法(其实就是对高斯列主元消元法进行优化,使之更适合于计算机编程),首先将矩阵A进行LU分解(将系数矩阵分解成一个上三角矩阵和一个下三角矩阵),分解的过程中用到了隐式的主元寻找法,同时利用克鲁特算法可以将两个n*n矩阵压缩到一个n*n矩阵中,大大节省了存储空间提高了计算速度。 方程可化为L*U*x=B,令U*x=y --->L*y=B 然后利用回代先求y,再利用y求x 因为该方法在求解过程中不涉及增广矩阵所以矩阵B几乎不参与什么运算,所以它的计算速度应该能够达到高斯列主元消元法的三倍,但原理与其基本一致。 而且我在程序中使用了动态数组方便你今后进行扩展。 以下程序按照《矩阵论第二版》和《C语言数值计算法方法大全》编写,LU分解部分程序主要参考了《C语言数值计算法方法大全》第二章的程序 如果你需要详细的理论讲解我可以将这两本书和源程序发给你.,我的邮箱 hu_hu605@https://www.wendangku.net/doc/0517582479.html, 计算结果: A矩阵: 2 2 5 3 4 7 1 3 3 B矩阵: 5 6 5 解矩阵: x 1=-7 x 2=0.333333 x 3=3.66667 Press any key to continue #include #include #include #include #include #include #include using namespace std; #define TINY 1.0e-20 //A small number. #define N 3

列主元消去法解方程组实验报告

实验名称: 列主元消去法解方程组 1 引言 我们知道,高斯消去法是一个古老的解线性方程组的方法。而在用高斯消去法解Ax=b 时,其中设A 为非奇异矩阵,可能出现() 0k kk a =的情况,这时必须进行带行交换的高斯消去法。但在实际计算中即使()0k kk a ≠但其绝对值很小时,用()k kk a 作除数,会导致中间结果矩阵()k A 元素数量级严重增长和舍入误差的扩散,使得最后的结果不可靠。因此,小主元可能导致计算的失败,我们应该避免采用绝对值很小的主元素。为此,我们在高斯消去法的每一步应该在系数矩阵或消元后的低阶矩阵中选取绝对值最大的元素作为主元素,保持乘数1ik m ≤,以便减少计算过程中舍入误差对计算解的影响。 一种方式是完全主元消去法,这种消去法是在每次选主元时,选择()() max 0k k k k i j ij k i n k j n a a ≤≤≤≤=≠为主元素。这种方法是解低阶稠密矩阵方程组的有效方法,但这种方法在选取主元时要花费一定的计算机时间。实际计算中我们常采用部分选主元的的消去法。列主元消去法即在每次选主元时,仅依次按列选取绝对值最大的元素作为主元素,且仅交换两行,再进行消元计算。 2 实验目的和要求 运用matlab 编写一个.m 文件,要求用列主元消去法求解方程组(实现PA=LU ): 12345671 111111721111118321111110432111113543211117654321122765432128x x x x x x x ?? ?????? ???? ???????? ?????? ???? ??=???????????????? ???????? ??????? ??????? 要求输出以下内容: (1) 计算解x ; (2) L,U ; (3) 整形数组IP (i )(i=1,2,…,n-1)(记录主行信息) 3 算法原理与流程图 (1) 算法原理 设有线性方程组A x =b ,其中设A 为非奇异矩阵。方程组的增广矩阵为

相关文档