python实现高斯消元法
时间: 2023-12-04 11:01:13 浏览: 26
以下是Python实现高斯消元法的代码:
```python
import numpy as np
def gaussian_elimination(A, b):
n = len(A)
# 构造增广矩阵
AB = np.hstack((A, b.reshape(n, 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):
AB[j] = AB[j] - AB[i] * AB[j, i] / AB[i, 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:n])) / AB[i, i]
return x
```
其中,A是系数矩阵,b是常数向量,函数返回解向量x。
相关问题
用Python实现高斯消元法
以下是用Python实现高斯消元法的代码:
```python
import numpy as np
def gauss_elimination(A, b):
n = len(b)
for i in range(n):
# Find pivot row and swap
max_row = i
for j in range(i+1, n):
if abs(A[j][i]) > abs(A[max_row][i]):
max_row = j
A[i], A[max_row] = A[max_row], A[i]
b[i], b[max_row] = b[max_row], b[i]
# Eliminate
for j in range(i+1, n):
factor = A[j][i] / A[i][i]
b[j] -= factor * b[i]
for k in range(i, n):
A[j][k] -= factor * A[i][k]
# Back substitution
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
```
python实现高斯消元法,不要使用 numpy
下面是 Python 实现高斯消元法的代码:
```python
def gauss_elimination(A, b):
n = len(A)
for i in range(n):
# Find pivot row and swap
max_row = i
for j in range(i + 1, n):
if abs(A[j][i]) > abs(A[max_row][i]):
max_row = j
A[i], A[max_row] = A[max_row], A[i]
b[i], b[max_row] = b[max_row], b[i]
# Eliminate
for j in range(i + 1, n):
c = A[j][i] / A[i][i]
for k in range(i + 1, n):
A[j][k] -= c * A[i][k]
b[j] -= c * b[i]
# Back substitution
x = [0] * n
for i in range(n - 1, -1, -1):
x[i] = b[i]
for j in range(i + 1, n):
x[i] -= A[i][j] * x[j]
x[i] /= A[i][i]
return x
```
其中,`A` 是系数矩阵,`b` 是常数向量。该函数返回解向量 `x`。