线性方程组解的判定

合集下载

高教社2024高等数学第五版教学课件-10.2 线性方程组解的判定

高教社2024高等数学第五版教学课件-10.2 线性方程组解的判定
2 − 3 = 2
3 − 4 = 3
4 − 5 = 4
5 − 1 = 5
有解的充要条件是1 + 2 + 3 + 4 + 5 = 0.在有
解的情况下,求出它的全部解。
证明 由矩阵的行初等变换化简增广矩阵
1
0
= 0
0
−1
−1 0
0
0 1
1 −1 0
0 2
0
1 −1 0 3
将后 − 个未知量项移至等号的右侧,有
11 1 + 12 2 + ⋯ + 1 = 1 − 1,+1 +1 − ⋯ − 1
22 2 + ⋯ + 2 = 2 − 2,+1 +1 − ⋯ − 2
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
= − ,+1 +1 − ⋯ −
程组无解;
(2)当 = 1时, = = 1 < 3,线性方程
组有无穷多解,即
1 = 1 − 2 − 3 ,这里2 , 3 是自由未知量;
(3)当 ≠ 1且 ≠ −2时, = = 3,线性
方程组有唯一解,即
+1
1 =
+2
1
2 =
+2
( + 1)2
0
0
0
−1
−5
−1 2 + 3 + 4
−1
3 + 4
−1
4
0
0
于是线性方程组在σ5=1 = 0下的解为
1 = 5 − 5
2 = 5 + 2 + 3 + 4

线性方程组的解的判定

线性方程组的解的判定
从而R(BT )=R(BT MCT )
R(C) R(CT ) R(BT MCT ) R(BT ) R(B)
k
- 2 1 0
3 0 2
(k R).
有关矩阵秩的重要结论:
(1) 0 R( Amn ) minm, n
(2) 设矩阵Amn , 若 R( A) s 则存在可逆矩阵P,Q
使得
PAQ
Es o
o
o
即矩阵A可以经过初等变换化为
Es o
o
o
形式。
(3) 若 P,Q 都可逆,则 R( A) R(PA) R( AQ) R(PAQ)
1 - 1 0 - 1 1 2 ~ 0 0 1 - 2 1 2.
0 0 0 0 0
由于RA RB 2, 故方程组有解,且有
x1 x2 x4 1 2
x1 x3
x2 x4 1 2x4 1 2
2
x2 x3
x2 0 x4 0x2 2x4
1
2
x4 0 x2 x4
x2 a2 a3 a4 x5 x3 a3 a4 x5
x4 a4 x5
x5为任意实数 .
定理3 矩阵方程AX B有解的充要条件是
R( A) R( AMB) 证:设 Ams X sn Bmn , 对X、B按列分块,得
X ( X1, X 2 ,L X n ), B (b1,b2 ,L bn ), 则AX B等价于A( X1, X2,L Xn ) (b1,b2,L bn )
(2)当p 2时,有
1 1 2 3 1 1 1 2 3 1
B
~
0 0
1 0
2 0
-1 2
1 4
~
0 0
1 0
2 0

线性方程组的解的 判定

线性方程组的解的 判定

线性方程组的解的判定
线性方程组的解的判定,是指对线性方程组的解进行判定,以确定其是否有解、是唯一解或者无解。

下面就来详细介绍线性方程组解的判定。

首先,我们来看一下线性方程组的定义:线性方程组是由一组线性方程组成的集合,并且每一个方程中变量的指数为1。

例如:2x + 3y = 5, 4x - 6y = 12.
对于线性方程组的解的判定,有三种常用的方法:
1. 通解法:通解法是求解线性方程组的一种常用方法,即令原方程组的所有方程式左端相加,右端相减,得到一个新的等式。

然后再将此等式化为标准形式,即将所有变量的系数变为正数,最后将方程组解为一个共同的标准型,从而得出线性方程组的解。

2. 秩的判定法:秩的判定法是根据矩阵的秩来判断线性方程组的解。

可以将线性方程组转换为矩阵形式,计算出矩阵的秩,然后根据矩阵的秩来判断线性方程组是否有解。

3. 间接判定法:间接判定法是一种在解线性方程组时,对方程组的解进行判定的一种方法。

这种方法既不求解方程组,也不求矩阵的秩,而是计算出方程组的系数矩阵的行列式,根据行列式的值来判定方程组是否有解,这
种方法的优点是求解简单易懂,但是缺点是计算量大,无法直接判断方程组是否有唯一解。

以上就是线性方程组解的判定的详细介绍,它是一种重要的数学解决问题的方法,可以有效地判定线性方程组的解是否有解,是唯一解或者无解,从而给出解决问题的有效方案。

4.2线性方程组有无解的判定

4.2线性方程组有无解的判定
1


1
Q r ( A) = r ( A ) = 3, ∴ 原方程组有惟一解:x1 = −
λ
, x2 =
2
λ
, x3 =
λ −1 . λ
当λ
1 1 − 2 − 3 1 0 − 1 − 1 = −3 时, A → 0 − 3 3 6 → 0 1 − 1 − 2(行简化阶梯形矩阵) 0 0 0 0) 0 0 0 0
是否有解线性方程组的线性组合不是且表出方式不惟一的线性组合为何值时且表出方式惟一的线性组合为何值时的线性组合不能表为为何值时的线性组合不能表为方程组有惟一解故惟一线性表出为可由行简化阶梯形矩阵阶梯形矩阵方程组有无穷多解其一般解为且表出方式不惟一
§4.2 线性方程组有无解的判定 线性方程组的一般形式:
同解方程组为
5 5 x1 − x3 + x4 = 0 3 3 x + 7 x − 1 x = 1, 2 3 3 3 4
故一般解为
5 5 x1 = x3 − x4 3 3 ( x3 , x 4为自由未知量 ). x = 1− 7 x + 1 x , 3 4 2 3 3
1 −1 1 3 1 −1 2 −1 M 3 1 −1 2 −1 MM 3 →0 0 −5 2 −6 解(1) A = 4 −4 3 −2 M 6 → 0 0 −5 2 MM −6 = 4 1 −1 −3 1 M 1 0 0 −5 0 MM −2 0 0 0 2 (阶梯形矩阵)
⇔ r ( A) = r ( A ) = n,
有无穷多解 ⇔ r ( A) = r ( A ) < n.
解线性方程组的步骤: (1)利用矩阵的初等行变换将方程组的增广矩阵化 为阶梯形矩阵,判断是否有解. (2)有解时,继续利用矩阵的初等行变换将阶梯形 矩阵化为行简化阶梯形矩阵. (3)根据行简化阶梯形矩阵,写出方程组的解.

线性方程组解的判定

线性方程组解的判定

线性方程组解的判定
线性方程组解的判定是一个重要的数学问题,它涉及到对一组未知量的求解。

解的判定问题的主要内容如下:
1. 系数矩阵存在不等式:在求解线性方程组时,首先要判断系数矩阵是否存在不等式,即是否存在元素值为负的情况:若存在,则解不存在;如果全部元素值都不为负,则判定解存在。

2. 是否存在无穷解:通常情况下,一个线性方程组只有唯一解,即只有一组解。

但也有可能存在无穷多解,即系数矩阵存在元素值全为0,此时解可以是任意一组数,因此可以判定存在无穷解。

3. 闭解的确定:当系数矩阵存在不等式或存在元素值全为0时,可以判定存在无穷解;当系数矩阵存在唯一解时,需要通过计算、符号识别和几何意义的结合,来确定具体的闭解。

4. 压缩可行性:压缩可行性判定法是指将求解所求出来的解,压缩在基本解所构成的空间上,以便表达出更复杂的结果。

5. 方程式系数:也可以通过方程式系数的分析,来判定方程组的解的存在与否,这是一种常用的判定方法。

从上述内容可以看到,线性方程组解的判定是一个复杂的数学问题,要想判断线性方程组的解的存在性,需要结合不等式判定、无穷解判定、压缩可行性判定以及方程式系数等步骤,一步步进行判断,才能正确地确定某个线性方程组的解的存在性。

线性方程组有解的判别定理

线性方程组有解的判别定理

§ 4 线性方程组设是由m 个方程组成的 n 元线性方程组,它的系数矩阵、未知数列向量和常数列向量分别是A = X = β=于是线性方程组( 4-1 )可改为 AX= β。

记:= =称为 (4-1) 的增广矩阵。

如果β=0 ,那么,式 (4-1) 表示一个齐次线性方程组;否则 (4-1) 表示一个非齐次线性方程组。

定理4.1 如果线性方程组 AX= β有两个不同的解,那么它一定有无穷多解。

线性方程组( 4-1 )的解只有三种可能:无解,唯一解,无穷多解。

下面介绍解线性方程组的一个规范方法 --- 高斯消去法,它是加减消元法和代入消元法的推广和规范化。

定义4.1 设是两个由m 个方程组成的 n元线性方程组,如果的解都是的解, 的解都是的解,即线性方程组有相同的解,那么称它们为同解方程组,或称这两个方程组同解。

定理4.2 如果线性方程组的增广矩阵A= 经过有限次行初等变换变成矩阵,作为增广矩阵对应于线性方程组那么,线性方程组是同解方程组。

用高斯消去法解线性方程组 4-1 ,实际上就是对增广矩阵进行矩阵的行初等变换,先把变为阶梯形矩阵,再继续施行行初等变换,使其变为简化阶梯形矩阵。

前者就是消元过程,后者就是回代过程。

定理4.3 设线性方程组 4-1 的增广矩阵 A 经过行初等变换变为阶梯形矩阵 4-4 。

1 当d ≠ 0 时,线性方程组 4-1 无解;2 当d =0 且r =n 时,线性方程组 4-1 只有唯一解;3 当d =0 且r <n 时,线性方程组 4-1 有无穷多解。

(4-4)对于齐次线性方程组(4-5)由于总是它的一个解(通常称为零解),所以齐次线性方程组的解总是存在的。

问题是它会不会有非零解,从而有无穷多解。

推论4.4 如果齐次线性方程组( 4-5 )的系数矩阵 A 的阶梯形中非零行的数目 r 小于未知数的数目 n ,那么它一定有非零解。

推论4.5 如果齐次线性方程组( 4-5 )的方程数目 m 小于未知数的数目n ,那么它一定有非零解。

第三章3线性方程组的解

第三章3线性方程组的解

2. 当方程的个数不等于未知量的个数时,从增广 矩阵 B=(A|b) 入手,通过初等行变换,考察其 行阶梯型矩阵.
三、推广到矩阵方程
定理7 矩阵方程AX=B有解充要条件是R(A)=R(A,B).
R 定理8 设AB=C,则R(C ) min{ ( A), R( B)}.
定理9 矩阵方程 Amn X nl O 只有零解的充分必 要条件是R(A)=n.
1 0 0 5 0 1 0 0 0 0 1 3
x1 5 x2 0 x 3 3
例3 求x3 2 x4 3 2 x1 x2 3 x4 1 2 x 2 x 10 x 4 1 3 4
§3 线 性 方 程 组 的 解
一、线性方程组有解的判定条件
二、线性方程组的解法
一、线性方程组有解的判定条件
a11 x1 a12 x2 a1n xn b1 a x a x a x b 21 1 22 2 2n n 2 1. 线性方程组 am 1 x1 am 2 x2 amn xn bm x1 b1 x2 b2 X , b , 系数矩阵为 A (aij ) , x b 线性方程组可记为:AX b n n
1 2 0 1 0 0 1 0 0 0 0 0
x1 2c1 c2 x c 2 1 x3 0 x4 c2
例6 设有线性方程组
(1 ) x1 x2 x3 0 x1 (1 ) x2 x3 3 x x (1 ) x 3 1 2
2
2) 2时,
1 1 2 4 B ~ 0 3 3 6 0 0 0 3

线性方程组解情况判定PPT课件

线性方程组解情况判定PPT课件

解空间的性质
解空间是一个向量空间, 具有加法和数乘封闭性。
02
线性方程组解的判定定理
唯一解的判定定理
总结词
当线性方程组的系数矩阵的行列式不为0时,方程组有唯一解。
详细描述
当系数矩阵的行列式不为0时,说明方程组中的方程是线性独立的,即方程组中 的每一个方程都能独立决定一个未知数的值,因此方程组有唯一解。
未知数
需要求解的变量。
线性方程组的解
01
02
03
解的定义
满足所有方程未知数的值 称为解。
解的存在性
对于给定的线性方程组, 可能存在多个解、无解或 无穷多个解。
解的唯一性
如果一个线性方程组有唯 一解,则该解是唯一的。
线性方程组的解空间
解空间的定义
所有解构成的空间称为解 空间。
解空间的维度
解空间的维度等于未知数 的数量。
物理问题中的线性方程组通常比较复杂,需要运用数学工具 和物理知识进行求解。通过求解这些线性方程组,可以深入 理解物理现象的本质和规律。
经济问题中的线性方程组
在经济学中,线性方程组也被广泛应用于各种问题的分析 和求解。例如,在市场分析、生产计划、财政预算等领域 ,线性方程组被用来描述经济关系和规律。
实际应用
在实际问题中,线性方程组广泛应 用于物理、工程、经济等领域,解 的判定对于解决实际问题具有指导 意义。
算法设计与优化
解的判定问题涉及到算法设计与优 化,对于提高计算效率和精度具有 重要意义。
未来研究方向
高维空间
计算复杂性
目前对于高维空间中线性方程组的解 判定研究尚不充分,未来可以加强这 方面的研究。
详细描述
矩阵的逆和行列式在判断线性方程组解的情 况中具有重要作用。通过计算系数矩阵的行 列式和逆,可以判断方程组的解的情况。当 系数行列式不为0时,方程组有唯一解;当 系数行列式为0时,需要进一步分析以确定 解的情况。此外,利用行列式的性质可以简

方程组解的判定

方程组解的判定

因为在上述变换过程中,仅仅只对方程组 的系数和常数进行运算,未知量并未参与运 算. 若记 1 2 3 B ( A b) 2 1 1 则对方程组的变换完全可以转换为对矩阵B(方 程组(1)的增广矩阵)的变换.
二、线性方程组解的判定
1 2 3 在例1中 B ( A b ) 2 1 1
x1 2 x2 3 2 x1 x2 1
解 2)-1)2 x1 2 x2 3 (1) 5 x 2 5 2) x1 2 x2 3 x2 1
1) 2)
(1)
( B1 )
x1 1 ( B2 ) x2 1
1 0 1 0 1 1
R(A)=2,R(A| b)=2,方程组有唯一解.
x1 - 2x2 3x3 - x4 1 例2 求解方程组 3x1 - x 2 5x3 - 3x4 2 2x x 2x - 2x 3 1 2 3 4
R(A)=2,R(A| b)=3,方程组有无解.
因为在上述变换过程中仅仅只对方程组的系数和常数进行运算未知量并未参与运则对方程组的变换完全可以转换为对矩阵b方程组1的增广矩阵的变换
线性方程组解的判定
一、消元法解方程组
二、线性方程组解的判定
1.唯一解
2.无穷多解
3.无解
一、消元法解线性方程组solution of
linear equation group by elimination 分析:用消元法解下列方程组的过程. 例1 求解线性方程组
x1 x 2 3x 3 x 4 1 例3 求解方程组 3x1 x 2 3x 3 4x 4 4 x 5x 9x 8x 0 1 2 3 4

3.2 线性方程组解情况的判定

3.2 线性方程组解情况的判定

3
第三章 线性方程组
§3.2 线性方程组解情况的判定
阶梯阵的形状与线性方程组的解. ~ ~ [A, b] Ax = b 解的数目 Ax = b 2x1+3x2 x3 = 1 2x2+x3 = 2 0=1 x1x2+2x3 = 8 2x2 +x3 = 1 x3 = 5 x1+2x2+x3 + x4 = 2 x3+4x4 = 3 0=0 无解
Nanjing College of Information and Technology
13
第三章 线性方程组
§3.2 线性方程组解情况的判定
定理2 设(1) 所对应的齐次线性方程组的系数
矩阵为A , 则: (1) 当 R( A) n 时, 齐次线性方程组只有零解;
(2) 当 R( A) n 时, 齐次线性方程组有非零解, 且通解中含有 n R( A) 个自由未知量.
特别地, 若齐次线性方程组中方程的个数少于 未知量个数时, 必有非零解.
进行初等行变换,将其化成阶梯形矩阵:
cii 0
(2)
Nanjing College of Information and Technology
6
第三章 线性方程组
§3.2 线性方程组解情况的判定
或:
c11 0 0 0 0 c1, s 1 0 0 0 0 c1 s c1,t 1 c2 s c2,t 1 0 0 0 0 0 0 c1t c1n c2 t c2 n crt 0 0 crn 0 0 d1 d2 dr d r 1 0
a12 a22

2.5线性方程组有解的判定定理

2.5线性方程组有解的判定定理

例1
求齐次线性方程组 x1 x 2 x 3 x 4 0, 2 x1 5 x 2 3 x 3 2 x 4 0, 7x 7x 3x x 0 1 2 3 4 的通解.
解 对系数矩阵 A作初等行变换,变为行最简矩 阵,有
1 1 1 1 A 2 5 3 2 7 7 3 1
利用方程组系数矩阵A和增广矩阵B的秩,
可以很容易的看出线性方程组AX=b是否有解
1 齐次方程组
定理2.10 设A是mn矩阵,则齐次线性方程组Ax=0 有非零解的充要条件是R(A)<n. 证明 必要性 用反证法 设方程组Am×nx=0有非零解。假设R(A)=n, 则在A中存在一个n阶非零子式D,使得D所对应 的方程组只有零解(克拉默法则),这与条件矛 盾,因此R(A)<n

对增广矩阵B施行初等行变换: 0 1 1 1 1 B 1 1 1 3 1 1 1 2 3 1 2 1 1 0 1 1 2 ~ 0 0 1 2 1 2 , 0 0 0 0 0
可见R( A) R( B ) 2, 故方程组有解 , 并有

1 3 B 0 8
7 1 2 1 3 2 2 1 2 6 23 3 4 3 1 12 1 1 1 1
1 1 1 7 1 1 0 2 1 2 6 23 ~ 0 0 0 0 0 0 0 0 0 0 0 0
R A r 2 , n 5 , n r 3 , 即方程组有无穷多解,

0 2 1 1 0 0 0 0
1 2 3 1 0 0 0 0
并有
x1 2 x3 x4 2 x5 x2 x3 3x4 x5

线性方程组有解的判定定理

线性方程组有解的判定定理

设 RA RB rr n,
则 B 的行阶梯形矩阵中含 r 个非零行,
把这 r 行的第一个非零元所对应的未知量作为 非自由未知量,
其余n - r个作为自由未知量,
并令 n - r个自由未知量全取0,
即可得方程组的一个解.
证毕
小结 RA RB n Ax b有唯一解
RA RB n Ax b有无穷多解.
-5 3 4
3
0 0 0 0
即得与原方程组同解的方程组
x1 x2
2 2
x3 x3
5
3 4
3
x4 x4
0, 0,
由此即得
x1 x2
2
x3
5 3
x4
,
-2
x3
-
4 3
x4
,
( x3 , x4 可任意取值).
令 x3 c1, x4 c2,把它写成通常的参数形式
x1
2c1
5 3
解 对增广矩阵B进行初等变换,
1 - 2 3 - 1 1 B 3 -1 5 - 3 2
2 1 2 - 2 3
1 - 2 3 - 1 1
0 5 - 4 0 -1
0 50 -04 0 12
显然,R( A) 2, R(B) 3, 故方程组无解.
例3 求解非齐次方程组的通解
x1 x1
c2 ,
x2
-2c1
-
4 3
c2 ,
x3 c1,
x4
c2
,
5
x1 x2 x3 x4
c1
2 -2 1 0
c2
3 -4
3 0
1
.
例2 求解非齐次线性方程组
x1 3 x1

线性方程组解的判别与解的结构

线性方程组解的判别与解的结构

线性⽅程组解的判别与解的结构⼀.线性⽅程组求解定理1.线性⽅程组有解判别定理线性⽅程组a11 x1 + a12 x2 + … + a1n x n = b1 ,a21 x1 + a22 x2 + … + a2n x n = b2 , ......................................................as1 x1 + as2 x2 + … + asn x n = bs有解的充分必要条件是 : 它的系数矩阵与增⼴矩阵有相同的秩 .2. 齐次线性⽅程组a11 x1 + a12 x2 + … + a1n x n = 0,a21 x1 + a22 x2 + … + a2n x n = 0, ......................................................as1 x1 + as2 x2 + … + asn x n = 0有⾮零解的充分必要条件是: 它的系数矩阵的秩r ⼩于未知量个数n .齐次线性⽅程组求解⼀般步骤: 1.把系数矩阵通过初等变换,变换成阶梯形矩阵. 2.判断阶梯形矩阵中⾮零⾏的个数秩(r),以及计算⾃由元个数m=n-r. 3.确定⾃由元位置,然后以次为它们赋值1,0... 4.求解出⽅程组的基础解系. 5.⽤基础解系表⽰出⽅程全解.⾮齐次线性⽅程组求解,与齐次线性⽅程组求解过程基本⼀致,只需要再求出⼀个特解。

⼆.如何⽤C语⾔计算线性⽅程组的解 那么如何⽤算法求出线性⽅程组的解呢? 就是根据上⾯⽅程组求解⼀般步骤来的, 1.矩阵的初等变换(在上次⾏列式计算的基础上,这个很好实现). 2.求出矩阵的秩/⾃由元个数,然后确定⾃由元的位置(我认为这是⼀个难点) 3.初始化⾃由元(1,0,..),计算变量,最终求出基础解系 4.⾮齐次线性⽅程 4.1.先求出齐次线性⽅程组的基础解系 4.2.再利⽤上⾯步骤求⼀个特解即可1.矩阵的初等变换//初等⾏变换void primaryRowChange(int s, int n, double **array){int i,j,k,ii,kk,flag;double temp;for(i=0,j=0;i<s-1;i++,j++)//s⾏,最外围只需要变换s-1{ii=i;//如果⾏的⾸元为0,向下查找⼀个不为0的,然后换⾏if(*(*(array+i)+j) == 0){{if(*(*(array+k)+j)!=0)//第k⾏与第i⾏交换{for(kk=j;kk<n;kk++){temp=*(*(array+k)+kk);*(*(array+k)+kk) = *(*(array+i)+kk);*(*(array+i)+kk) = temp;}flag =1;break;}}//判断是交换成功,如果没有成功,则i--if(!flag){i--;continue;}i--;j--;continue;}for(;ii<s-1;ii++){if(*(*(array+ii+1)+j)==0)continue;temp =-*(*(array+ii+1)+j) / *(*(array+i)+j);for(k=j;k<n;k++)*(*(array+ii+1)+k) += *(*(array+i)+k) * temp;}}}2.计算矩阵的秩//计算矩阵的秩int getRank(int s, int n, double **array){int flag;int i,j,r=s;//判断⾮零⾏个数for(i=0;i<s;i++){flag=0;for(j=0;j<n;j++){if(*(*(array+i)+j)!=0 && (*(*(array+i)+j)>0.01 || *(*(array+i)+j) <-0.01))//排除很⼩数, {flag=1;break;}}if(!flag)//当前⾏全为零,则r为i;{r=i;break;}}return r;}3.确定⾃由元位置 ⾃由元确定需要考虑两种情况: 1).系数梯形矩阵最后⼀⾏只有⼀个⾮零元素. 2) 系数梯形矩阵中某⾏的个数等于⾃由元的个数.//获取⾃由元信息int* getFreeElement(int r, int n, double **array, int **matrixPrimary, double **matrixCalc) {int i,j,k,o,p,q;int m=n-1-r;//n-1:int *freeElement =(int*)malloc(m*sizeof(int));j=-1;//判断是否有为0的变量q=0;//如果当前⾏⾮零个数与⾃由元个数相等,则标记为1,⾃由元选择起始位置左移⼀位if(*(*(matrixPrimary+i)+1)==1)//说明第i⾏只有⼀个变量,如果是齐次⽅程它的解⼀定为0 {j=*(*(matrixPrimary+i)+0);for(k=0;k<r;k++)*(*(matrixCalc+k)+j)=*(*(array+k)+n-1) / *(*(array+k)+j);}else if(n-1-matrixPrimary[i][0]==m){q=1;}else if(n-1-matrixPrimary[i][0]>m){o=matrixPrimary[i][0];//当前⾏的⾸元位置p=0;//次数for(k=n-2-q;k>=o;k--)//从后向前查找⾃由元位置{if(k==j)continue;freeElement[p++]=k;if(p==m)//说明已经找到 m个⾃由元return freeElement;}}}return freeElement;}求解⽰例图:1> p148-例42> 2.7(1)-13> 2.7(2)-1.14> 2.7(2)-1.25> 2.7(2)-1.36> 2.7(3)-1.17> 2.7(3)-1.28> 2.7(3)-1.39> 2.7(3)-1.410> p155-例6以下是C语⾔求解的全部源代码#include <stdio.h>#include <stdlib.h>double undefined=-999;//标志位void main(){int i,j,s,n;int res;double **array,*temp,**result;//tempdouble t1[6]={1,1,1,1,1,0};double t2[6]={3,2,1,0,-3,0};double t3[6]={0,1,2,3,6,0};double t4[6]={5,4,3,2,6,0};int homogeneous=1;//标识⽅程是否是齐次⽅程void primaryRowChange(int s, int n, double **array);void printfDouble1Dimension(int n, double *array);void printfDouble2Dimension(int s, int n, double **array);int homogeneousResolve(int s, int n, int homogeneous, double **array, double **result); int nonHomegeneousResolve(int s, int n, double **array, double **result,double *special); //void printfInt2Dimension(int s, int n, int ** array);//int* getPrimary(int n,double *temp);//输⼊说明printf("输⼊说明:⾏数代表S个线性⽅程,N代表未知数及常数项.\n");printf("例如⽅程如下:\n");printf("1x-2y+3z=4\n");printf("-2x-4y+5z=10\n");printf("如下输⼊2⾏,4列:\n");printf("1 -2 3 4\n");printf("-2 -4 5 10\n\n");//开始printf("输⼊⾏数:");scanf("%d",&s);printf("输⼊列数:");scanf("%d",&n);//s=4;//n=6;//动态分配内存空间array =(double**)malloc(s*sizeof(double*));result =(double**)malloc(s*sizeof(double*));special =(double*)malloc(n*sizeof(double));for(i=0;i<s;i++){temp=(double*)malloc(n*sizeof(double));printf("请输⼊第%d⾏数组:",i+1);for(j=0;j<n;j++)scanf("%lf",temp+j);/*switch(i){case 0:temp=t1;//{1,1,1,1,1,0};break;case 1:temp=t2;//{3,2,1,0,-3,0};break;case 2:temp=t3;//{0,1,2,3,6,0};break;case 3:temp=t4;//{5,4,3,2,6,0};break;}*/array[i]=temp;}//打印数组printf("初等⾏列变换之前:\n");printfDouble2Dimension(s,n,array);//判断⽅程是否是齐次⽅程for(i=0;i<s;i++){if(*(*(array+i)+n-1)!=0)//如果最后⼀列,有不为0的说明⽅程为⾮齐次⽅程{homogeneous=0;break;}}primaryRowChange(s,n,array);printf("初等⾏列变换之后:\n");printfDouble2Dimension(s,n,array);if(homogeneous)//齐次{switch (res){case -1:printf("⽅程⽆解.\n");break;case0:printf("⽅程只有零解.\n");break;default:printf("⽅程的基础解系如下:\n");printfDouble2Dimension(res,n-1,result);break;}}else//⾮齐次{res=nonHomegeneousResolve(s,n,array,result,special);if(res==-1)printf("⽅程⽆解.\n");else{printf("⽅程的基础解系如下:\n");printfDouble2Dimension(res,n-1,result);printf("⽅程的特解如下:\n");printfDouble1Dimension(n-1,special);}}system("pause");}//初等⾏变换void primaryRowChange(int s, int n, double **array){int i,j,k,ii,kk,flag;double temp;for(i=0,j=0;i<s-1;i++,j++)//s⾏,最外围只需要变换s-1{ii=i;//如果⾏的⾸元为0,向下查找⼀个不为0的,然后换⾏if(*(*(array+i)+j) == 0){flag=0;for(k=i+1;k<s;k++){if(*(*(array+k)+j)!=0)//第k⾏与第i⾏交换{for(kk=j;kk<n;kk++){temp=*(*(array+k)+kk);*(*(array+k)+kk) = *(*(array+i)+kk);*(*(array+i)+kk) = temp;}flag =1;break;}}//判断是交换成功,如果没有成功,则i--if(!flag){i--;continue;}i--;j--;continue;}for(;ii<s-1;ii++){if(*(*(array+ii+1)+j)==0)continue;temp =-*(*(array+ii+1)+j) / *(*(array+i)+j);for(k=j;k<n;k++)*(*(array+ii+1)+k) += *(*(array+i)+k) * temp;}}}//⾮齐次⽅程解的情况int nonHomegeneousResolve(int s, int n, double **array, double **result, double *special) {int i,j,k,l;int r1,r2;//系数矩阵/增⼴矩阵的秩int getRank(int s, int n, double **array);int homogeneousResolve(int s, int n, int homogeneous, double **array, double **result);r1=getRank(s,n-1,array);r2=getRank(s,n,array);if(r1!=r2)return -1;//⽆解//特解temp =(double**)malloc(r1*sizeof(double*));homogeneousResolve(r1,n,0,array,temp);for(i=0;i<n;i++)*(special+i)=*(*(temp)+i);return homogeneousResolve(r1,n,1,array,result);}//齐次⽅程解的情况int homogeneousResolve(int s, int n, int homogeneous, double **array, double **result){int i,j,k,l,o,p,flag;int r;//秩rankint m;//⾃由元个数int f;//最后⼀个⾮零⾏⾸元的位置double sum1=0,sum2=0;double *temp = (double*)malloc(n*sizeof(double));//临时⾏指针int **matrixPrimary;//存储矩阵⾸元位置及⾮零元个数double **matrixCalc;//计算基础解系int *freeElement;//⾃由元位置double **matrixTemp;//声明函数void printfDouble2Dimension(int s, int n, double **array);void printfInt2Dimension(int s, int n, int **array);int** getPrimary(int s, int n, double **array);int getRank(int s, int n, double **array);double** initMatrixCalc(int s, int n);int* getFreeElement(int r, int n,double **array, int **matrixPrimary, double **matrixCalc);void printfInt1Dimension(int n, int *array);void getPrimarySolution(int r, int n, int homogeneous, double **array, int **matrixPrimary, double **matrixCalc ,int *freeElement, double **result); //秩rankr = getRank(s,n,array);//判断解的情况m=n-1-r;if(m<0)return -1;//⽆解else if(m==0)return0;//只有零解else{//初始化计算矩阵matrixCalc = initMatrixCalc(r,n);//获取矩阵⾸元信息matrixPrimary = getPrimary(r,n,array);/*printf("打印计算矩阵:\n");printfDouble2Dimension(r,n,matrixCalc);printf("打印矩阵⾸元信息:\n");printfInt2Dimension(r,2,matrixPrimary);*/freeElement = getFreeElement(r, n, array, matrixPrimary,matrixCalc);//打印⾃由元位置//printf("打印⾃由元位置:\n");//printfInt1Dimension(m, freeElement);//计算基础解系getPrimarySolution(r, n, homogeneous, array, matrixPrimary, matrixCalc, freeElement ,result);//printfDouble2Dimension(m,n,result);return m;}}//init Matrix calcdouble** initMatrixCalc(int s, int n){int i,j;double **array=(double**)malloc(s*sizeof(double*));for(i=0;i<s;i++){array[i] =(double*)malloc(n*sizeof(double));*(*(array+i)+n-1)=1;{*(*(array+i)+j)=undefined;}}return array;}//计算矩阵的秩int getRank(int s, int n, double **array){int flag;int i,j,r=s;//判断⾮零⾏个数for(i=0;i<s;i++){flag=0;for(j=0;j<n;j++){if(*(*(array+i)+j)!=0 && (*(*(array+i)+j)>0.01 || *(*(array+i)+j) <-0.01))//排除很⼩数, {flag=1;break;}}if(!flag)//当前⾏全为零,则r为i;{r=i;break;}}return r;}//查找某⾏⾮零个数及⾸元位置int** getPrimary(int s, int n, double **array){int i,j;int num=0,index=0;int **result=(int**)malloc(s*sizeof(int*));int *temp;for(i=0;i<s;i++){temp =(int*)malloc(2*sizeof(int));num=0;index=0;for(j=0;j<n;j++){if(*(*(array+i)+j)!=0){if(num==0)index=j;num+=1;}}temp[0]=index;temp[1]=num;result[i]=temp;}return result;}//获取⾃由元信息int* getFreeElement(int r, int n, double **array, int **matrixPrimary, double **matrixCalc){int i,j,k,o,p,q;int m=n-1-r;//n-1:int *freeElement =(int*)malloc(m*sizeof(int));j=-1;//判断是否有为0的变量q=0;//如果当前⾏⾮零个数与⾃由元个数相等,则标记为1,⾃由元选择起始位置左移⼀位for(i=r-1;i>=0;i--)//查找⾃由元,及位置为0的{if(*(*(matrixPrimary+i)+1)==1)//说明第i⾏只有⼀个变量,如果是齐次⽅程它的解⼀定为0 {j=*(*(matrixPrimary+i)+0);for(k=0;k<r;k++)*(*(matrixCalc+k)+j)=*(*(array+k)+n-1) / *(*(array+k)+j);}else if(n-1-matrixPrimary[i][0]==m){q=1;}else if(n-1-matrixPrimary[i][0]>m)o=matrixPrimary[i][0];//当前⾏的⾸元位置p=0;//次数for(k=n-2-q;k>=o;k--)//从后向前查找⾃由元位置{if(k==j)continue;freeElement[p++]=k;if(p==m)//说明已经找到 m个⾃由元return freeElement;}}}return freeElement;}//计算基础解系void getPrimarySolution(int r, int n, int homogeneous, double **array, int **matrixPrimary, double **matrixCalc ,int *freeElement, double **result) {int i,j,k,l,p;int m=n-1-r;//⾃由元double sum1,sum2;double *temp,**matrixTemp;//计算基础解系for(i=0;i<m;i++){matrixTemp=(double**)malloc(r*sizeof(double*));//复制数组for(j=0;j<r;j++){temp =(double*)malloc(n*sizeof(double));for(k=0;k<n;k++)*(temp+k)=*(*(matrixCalc+j)+k);matrixTemp[j]=temp;}//设置⾃由元为0或1for(j=0;j<r;j++){*(*(matrixTemp+j)+freeElement[i])=1;//⾃由元为1for(k=0;k<m;k++){if(k!=i)*(*(matrixTemp+j)+freeElement[k])=0;//⾃由元为0}}//printfDouble2Dimension(r,n,matrixTemp);//计算for(j=r-1;j>=0;j--){p=*(*(matrixPrimary+j));//当前⾏起始位置for(k=p;k<n;k++){if(*(*(matrixTemp+j)+k)==undefined)//如果等于标志位,它可能是未知变量{sum1=sum2=0;for(l=p;l<n;l++){if(l==n-1){sum1=*(*(array+j)+l) * *(*(matrixTemp+j)+l);}else if(l!=k){sum2+=*(*(array+j)+l) * *(*(matrixTemp+j)+l);}}for(l=0;l<r;l++)*(*(matrixTemp+l)+k)=((homogeneous?0:sum1)-sum2)/ *(*(array+j)+k);//如果齐次sum1=0;//break;}}}result[i]=matrixTemp[0];//printfDouble2Dimension(r,n,matrixTemp);}}void printfDouble2Dimension(int s, int n, double **array) {//printf("%d,%d",s,n);int i,j;for(i=0;i<s;i++){for(j=0;j<n;j++){printf("%6.2lf",*(*(array+i)+j));}printf("\n");}}void printfDouble1Dimension(int n, double *array){int i;for(i=0;i<n;i++){printf("%6.2lf",*(array+i));}printf("\n");}//打印⼆维数组void printfInt2Dimension(int s, int n, int **array){int i,j;for(i=0;i<s;i++){for(j=0;j<n;j++){printf("%4d",*(*(array+i)+j));}printf("\n");}}//打印⼀维数组void printfInt1Dimension(int n, int *array){int i;for(i=0;i<n;i++){printf("%4d",*(array+i));}printf("\n");}View Code。

线性代数7.方程组解的判定、向量的线性运算

线性代数7.方程组解的判定、向量的线性运算
一、n 维向量的概念
定义 n 个有次序的数 a1, a2, , an 所组成的数组称为n维向量, 这n个数称为该向量的n个分量,第i个数ai称为第i个分量 .
分量全为实数的向量称为实向量, 分量全为复数的向量称为复向量.
例如
(1,2,3,, n)
n维实向量
(1,3i,3 i)
3维复向量
n 维向量的表示方法
c2 ,
x3 c1,
x4 c2 ,
或:
x1 x2 x3 x4
5 2c1 3 c2
2c1
4 3
c2
c1
c2
5
c1
2 2 1
c2
3 4
3
.
0
0
1
例 求解非齐次线性方程组
x1 3 x1
2
x2 x23x3 5ຫໍສະໝຸດ 3x4 3 x4R A
R A,b
3
方程组有唯一解
1 1 2 4

-2 时,
A,b
r
0
3
3
6
0 0 0 3
R A 2
R
A,b
3
R A
R A,b
方程组无解
1 1 1

1 时, A,b
r
0
0
0
由等价方程组:
0 0 0
x1 x2
1
0
0
x3
R A 1
R
A,b
1
1.
R A
x1 x2 x3 x4 0 x1 x2 x3 3x4 2
.
x1
x2
2x3
3x4
1
解 写出增广矩阵并进行初等行变换至行阶梯形得:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四节 线性方程组解的判定
从本节开始,讨论含有n 个未知量、m 个方程的线性方程组的解。

11112211211222
22
11
22n n n n
m m mn n m
a x a x a x
b a x a x a x b a x a x a x b +++=⎧⎪+
++=
⎪⎨⎪⎪+++=⎩
(13—2)
主要问题是要判断出方程组(13-2)何时有解?何时无解?有解时解有多少?如何求出方程组的解。

线性方程组有没有解,以及有怎样的解,完全决定于方程组的系数和常数项。

因此,将线性方程组写成矩阵形式或向量形式,以矩阵或向量作为讨论线性方程组的工具,将带来极大的方便。

方程组(13-2)中各未知量的系数组成的矩阵11121212221
2
n n m m mn a a a a a a A a a a ⎡
⎤⎢


⎥=⎢⎥
⎢⎥


称为方程组(13-2)的系数矩阵。

由各系数与常数项组成的矩阵,称为增广矩阵,记作A ,即
11121121
222212
n n
m m mn
m a a a b a a a b A a a a b ⎡⎤
⎢⎥⎢⎥=⎢⎥⎢
⎥⎣⎦
方程组(13-2)中的未知量组成一个n 行、1列的矩阵(或列向量),记作X;常数项组成一个m 行、1
列的矩阵(或列向量),记作b ,即12n x x X x ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦ ,12
m b b b b ⎡⎤
⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦
由矩阵运算,方程组(13-2)实际上是如下关系111212122212
n n m m mn a a a a a a a a a ⎡
⎤⎢



⎢⎥
⎢⎥


12n x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦ =12m b b b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦
即 AX=b
如果令112111m a a a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦ ,122222m a a a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦ ,…,12n n n mn a a a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦
则方程组(13-2)的向量形式为11
22n n
a x a x a x
b +++=
定理1 (有解判定定理)方程级(13-2)有解的充分必要条件是:秩(A )=秩(A ) 推论1 线性方程组(13-2)有惟一的充分必要条件是r(A)=r(A )=n. 推论2 线性方程组(13-2)有无穷多解的充分必要条件是r(A)=r(A )<n. 例1 判断下列方程组是否有解?若有解,是有惟一解还是有无穷多解?
(1) 1
231
2312331334591x x x x x x x x x +
-=⎧⎪--=⎨⎪+-=⎩ (2)12
31
2312331334590x x x x x x x x x +
-=⎧⎪--=⎨⎪+-=⎩ (3)12
31
231
2
3
31334580
x x x x x x x x x +
-=⎧⎪--=⎨⎪+-=⎩ 解 (1)113111311131313404610461159104600001A ---⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=--→-→-⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
所以秩(A )=3,秩(A)=2;秩(A)≠秩(A ),故方程组无解。

(2)113111313134046115900000A --⎡⎤⎡⎤
⎢⎥⎢⎥=--→→-⎢⎥⎢⎥-⎢⎥⎢⎥⎣⎦⎣⎦ 秩(A )=秩(A )=2<n(=3),故方程组有无穷多解。

(3)113111313134046115800010A --⎡⎤⎡⎤⎢⎥⎢⎥=--→→-⎢⎥⎢⎥-⎢⎥⎢⎥⎣⎦⎣⎦
秩(A )=秩(A)=3=n ,故方程组有惟一解。

方程组(13-2)12,,,m b b b 全为零时,称为齐次线性方程组。


1111221211222
211
22000
n n n n
m m mn n
a x a x a x a x a x a x a x a x a x +++=⎧⎪+
++
=⎪⎨⎪⎪+++=⎩
(13-3) 其矩阵形式为AX=0
对齐次线性方程组(13-3)而言,显然,其增广矩阵A 的秩与系数矩阵A 的秩相等,即秩(A )=秩(A ),由定理1可知它总是有解的。

比如120n x x x ==== 就是方程组(13-3)的一个解,常称之为零解。

但所关心的是方程组(13-3)在何条件下有非零解。

将推论1及推论2应用到齐次线性方程组(13-3)上,得到以下结论。

推论3 齐次线性方程组(13-3)只有零解的充分必要条件是r(A)=n. 推论4 齐次线性方程组(13-3)有非零解的充分必要条件是r(A)<n.
例2 试问线性方程组123123123
200x x x x x x x x x λ++=⎧⎪
++=⎨⎪++=⎩ 当λ取何值时有非零解。

解 方程组为齐次线性方程组,对其系数矩阵进行初等变换,化成阶梯形矩阵
12111
112101011001A λλ⎡⎤⎡⎤⎢⎥⎢⎥=→⎢⎥⎢⎥-⎢⎥⎢⎥⎣⎦⎣⎦
当λ-1=0,即λ=1时, r(A)=2<n(=3),由推论4,该方程组有非零解.
学生板演巩固练习:1.2.3.4.
总结归纳:通过本节的学习,能对线性方程组解的的情况作出准确判定。

课外作业:习题1.2.3。

相关文档
最新文档