使用部分枢轴消除高斯 - Python 代码

时间:2021-02-07 18:55:58

标签: python numpy

我正在尝试创建 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')
      

0 个答案:

没有答案