目录
线性方程组
1. 解的个数
-
齐次线性方程组:
- 只有零解:当系数矩阵的秩等于未知量的个数 𝑛n 时,即 rank(𝐴)=𝑛rank(A)=n。
- 有非零解:当系数矩阵的秩小于未知量的个数 𝑛n 时,即 rank(𝐴)<𝑛rank(A)<n。
-
非齐次线性方程组:
- 无解:当增广矩阵的秩不等于系数矩阵的秩,即 rank([𝐴∣𝑏])≠rank(𝐴)rank([A∣b])=rank(A)。
- 有解:
- 唯一解:当增广矩阵的秩等于系数矩阵的秩且等于未知量的个数 𝑛n,即 rank([𝐴∣𝑏])=rank(𝐴)=𝑛rank([A∣b])=rank(A)=n。
- 无穷多解:当增广矩阵的秩等于系数矩阵的秩但小于未知量的个数 𝑛n,即 rank([𝐴∣𝑏])=rank(𝐴)<𝑛rank([A∣b])=rank(A)<n。
2. 齐次线性方程组的解
- 基础解系:齐次线性方程组的基础解系是指一组线性无关的解向量,使得所有解都能表示为这些向量的线性组合。
- 求解步骤:
- 化简系数矩阵:将系数矩阵 𝐴A 化简为行阶梯形或行最简形。
- 列出方程:根据化简后的矩阵列出相应的方程。
- 确定自由未知量:找出方程组中的自由未知量(即那些不是其他未知量表达式的未知量)。
- 令自由未知量为线性无关组:设自由未知量为任意实数,并保证它们之间线性无关。
- 得到基础解系:利用自由未知量表达出其他未知量的解,从而得到基础解系。
- 写出一般解:将基础解系的解向量按自由未知量的不同取值线性组合,得到方程组的一般解。
3. 非齐次线性方程组的解
- 解的结构:非齐次线性方程组的解集可以表示为一个特解加上齐次方程组的所有解。
- 求解步骤:
- 求特解:通过数值方法或符号计算求出一个特解 𝑥𝑝xp。
- 求齐次方程组的基础解系:求出对应的齐次方程组 𝐴𝑥=0Ax=0 的基础解系。
- 写出一般解:一般解可以表示为 𝑥=𝑥𝑝+𝑐1𝑣1+𝑐2𝑣2+…+𝑐𝑘𝑣𝑘x=xp+c1v1+c2v2+…+ckvk,其中 𝑣𝑖vi 是齐次方程组的基础解系中的解向量。
4. 使用 Python 和 NumPy 求解线性方程组
齐次线性方程组:
- 通常用于求解特征值问题,例如求解特征向量。
- 使用
numpy.linalg.eig()
函数求解特征值和特征向量。非齐次线性方程组:
- 用于确定未知量的值。
- 使用
numpy.linalg.solve()
函数求解未知量。
下面分别给出齐次和非齐次线性方程组的例子,我们将使用 Python 和 NumPy 来求解这些例子。
示例代码
齐次线性方程组
import numpy as np
# 定义系数矩阵 A
A = np.array([[3, 1], [1, 3]])
# 使用 numpy.linalg.eig() 求解特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)
print("Eigenvalues:", eigenvalues)
print("Eigenvectors:", eigenvectors)
非齐次线性方程组
import numpy as np
# 定义系数矩阵 A 和右侧向量 b
A = np.array([[2, -1, 0], [-1, 2, -1], [0, -1, 2]])
b = np.array([1, 0, -1])
6
# 使用 numpy.linalg.solve() 求解未知量
x = np.linalg.solve(A, b)
print("Solution x:", x)
调用过程
import numpy as np
# 齐次线性方程组示例
# 定义系数矩阵 A
A_homogeneous = np.array([[3, 1], [1, 3]])
# 使用 numpy.linalg.eig() 求解特征值和特征向量
eigenvalues_homogeneous, eigenvectors_homogeneous = np.linalg.eig(A_homogeneous)
# 非齐次线性方程组示例
# 定义系数矩阵 A 和右侧向量 b
A_inhomogeneous = np.array([[2, -1, 0], [-1, 2, -1], [0, -1, 2]])
b_inhomogeneous = np.array([1, 0, -1])
# 使用 numpy.linalg.solve() 求解未知量
x_inhomogeneous = np.linalg.solve(A_inhomogeneous, b_inhomogeneous)
eigenvalues_homogeneous, eigenvectors_homogeneous, x_inhomogeneous
调用结果
(array([4., 2.]),
array([[ 0.70710678, -0.70710678],
[ 0.70710678, 0.70710678]]),
array([ 0.5, 0. , -0.5]))
示例结果
齐次线性方程组
- 特征值:
Eigenvalues: [4. 2.]
- 特征向量:
Eigenvectors: [[ 0.70710678 -0.70710678] [ 0.70710678 0.70710678]]
非齐次线性方程组
- 解:
Solution x: [ 0.5 0. -0.5]
从上面的结果可以看出:
- 对于齐次线性方程组,我们得到了两个特征值 4 和 2,以及对应的特征向量。特征向量代表了齐次方程组的解向量。
- 对于非齐次线性方程组,我们得到了未知量 𝑥x 的解为 [0.5,0,−0.5][0.5,0,−0.5]。