我正在尝试创建 Python 代码,该代码将使用 Partial Pivot 进行高斯消除。以下代码适用于高斯消除,但我无法让部分枢轴工作。任何帮助将不胜感激。我已经查看并看到还有其他人提出了这个问题,但特别是我想使用下面的代码作为 GE-PP 的一部分。
import numpy as np
n = 4
A = np.array([[1, 2, 1, -1],
[3, 2, 4, 4],
[4, 4, 3, 4],
[2,0,1,5]])
b = np.array([5,16,22,15])
print('A Original: ')
print(A)
print('b Original: ')
print(b)
print(' ')
for k in range(0, n-1):
for i in range(k+1, n):
ratio = A[i,k]/A[k,k]
for j in range(k, n):
A[i,j]-= ratio*A[k,j]
b[i] -= ratio*b[k]
print('A: ')
print(A)
print('b: ')
print(b)
print(' ')
print(' ')
x = np.zeros(n)
x[n-1] = b[n-1]/A[n-1, n-1]
for i in range (n-2, -1, -1):
sum_j = 0
for j in range(i+1, n):
sum_j += A[i,j]*x[j]
x[i] = (b[i] - sum_j)/A[i,i]
print('\nThe answer for X: ')
for i in range(n):
# print('X%d = %0.2f' %(i,x[i]), end = '\t')
print('X%d = %0.2f' %(i,x[i]), end = '\t')