n维线性方程组的求解程序
时间: 2023-12-11 21:05:37 浏览: 87
求解n维线性方程组的常用方法有高斯消元法和LU分解法。
高斯消元法可以通过矩阵的初等变换将方程组转化为一个上三角矩阵,然后通过回带法求解出各个未知数的值。
LU分解法则是将系数矩阵分解为一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU,然后通过分别求解Ly=b和Ux=y两个方程组,得到各个未知数的值。
以下是使用Python实现的高斯消元法和LU分解法的示例代码:
```python
import numpy as np
# 高斯消元法求解线性方程组
def gauss(A, b):
n = len(A)
# 增广矩阵
Ab = np.concatenate([A, b.reshape(n, 1)], axis=1)
# 消元过程
for i in range(n):
# 选取主元
max_index = i
for j in range(i+1, n):
if abs(Ab[j, i]) > abs(Ab[max_index, i]):
max_index = j
Ab[[i, max_index]] = Ab[[max_index, i]]
# 消元
for j in range(i+1, n):
factor = Ab[j, i] / Ab[i, i]
Ab[j] -= factor * Ab[i]
# 回带过程
x = np.zeros(n)
for i in range(n-1, -1, -1):
x[i] = (Ab[i, n] - np.dot(Ab[i, i+1:n], x[i+1:])) / Ab[i, i]
return x
# LU分解法求解线性方程组
def lu(A, b):
n = len(A)
# 分解系数矩阵为下三角矩阵L和上三角矩阵U
L = np.eye(n)
U = A.copy()
for i in range(n):
for j in range(i+1, n):
factor = U[j, i] / U[i, i]
L[j, i] = factor
U[j] -= factor * U[i]
# 求解Ly=b和Ux=y两个方程组
y = np.linalg.solve(L, b)
x = np.linalg.solve(U, y)
return x
```
其中,A为系数矩阵,b为常数向量。使用时,只需传入A和b即可得到方程组的解。
阅读全文