我已经使用numpy在python中编写了一个带有部分旋转的高斯消去法代码
import numpy as np
A = np.array([[3, -13, 9, 3], [-6, 4, 1, -18], [6, -2, 2, 4], [12, -8, 6, 10]])
b = np.array([-19, -34, 16, 26])
def GaussEliminationPP(A, b):
n = len(A)
l = np.arange(n)
s = np.zeros(n)
for k in range(n) :
amax = 0
for i in range(k, n) :
a = np.abs(A[l[i],k])
if a > amax :
amax = a
j = i
l[j], l[k] = l[k], l[j]
for i in range(k+1, n) :
xmult = A[l[i],k]/A[l[k],k]
A[l[i],k] = xmult
for j in range(k+1, n):
A[l[i],j] -= xmult*A[l[k],j]
b[l[i]] -= xmult*A[l[k],j]
print(A, b)
GaussEliminationPP(A, b)
然而,我发现它与解决方案具有不同的价值。我不知道我错在哪里。有人能帮忙吗?提前多谢:)
目前没有回答
相关问题 更多 >
编程相关推荐