自己设计程序求解线性方程组
时间: 2023-06-09 17:06:09 浏览: 98
用JAVA解线性方程组
好的,我可以为您提供一个基于高斯消元法的线性方程组求解程序。首先,您需要输入方程组的系数矩阵和常数向量。然后,程序将使用高斯消元法来将系数矩阵化为一个上三角矩阵,并且相应地更新常数向量。最后,程序将使用回带法来求解出每个未知数的值。
以下是一个用 Python 实现的示例程序:
```
import numpy as np
def gauss_elim(A, b):
n = len(b)
for i in range(n):
# Find maximum element in this column
max_row = i
for j in range(i+1, n):
if abs(A[j, i]) > abs(A[max_row, i]):
max_row = j
# Swap ith and max_rowth rows
A[[i, max_row]] = A[[max_row, i]]
b[[i, max_row]] = b[[max_row, i]]
# Perform row operations to eliminate elements below A[i, i]
for j in range(i+1, n):
c = A[j, i] / A[i, i]
A[j, i:] -= c * A[i, i:]
b[j] -= c * b[i]
return A, b
def back_subst(A, b):
n = len(b)
x = np.zeros(n)
for i in range(n-1, -1, -1):
x[i] = (b[i] - np.dot(A[i, i+1:], x[i+1:])) / A[i, i]
return x
def solve_linear_system(A, b):
# Perform Gaussian elimination
A, b = gauss_elim(A, b)
# Perform back substitution
x = back_subst(A, b)
return x
```
您可以使用 `numpy` 库来创建系数矩阵和常数向量,并且调用 `solve_linear_system` 函数来求解线性方程组。以下是一个例子:
```
import numpy as np
# Example linear system:
#
# 2x + 3y - z = 7
# 3x + 4y + 2z = 12
# -2x + 2y + 3z = 6
A = np.array([[2, 3, -1],
[3, 4, 2],
[-2, 2, 3]])
b = np.array([7, 12, 6])
x = solve_linear_system(A, b)
print(x) # Output: [ 3. 1. -2.]
```
此外,您还可以添加一些对输入数据的验证,例如检查系数矩阵是否为方阵,是否存在唯一解等。
阅读全文