カラムマスターのGauss-Jordan消元法-python実装
6671 ワード
アルゴリズムリファレンスhttps://wenku.baidu.com/view/d7d169d0be23482fb4da4c96.html?from=search
ダイレクトコード
ダイレクトコード
import math
import numpy as np
from numpy import *
import matplotlib.pyplot as plt
def Fun(n): #
a=np.random.randint(low=1, high=100, size=(n, n+1)) #
return a
def GJ(a): # - , ,
row=a.shape[0]
print(a)
for j in range(0,row):
if j<row:
b=FindLarge(a[j:,j]) # ;
else:
b=0
b1=b+j #
c= np.copy(a[b1,:]) # : a[[b1,j], :] = a[[j,b1], :]
a[b1,:]=a[j,:]
a[j,:]=c
for i in range(0, row):
if i==j:
continue
a[i,:]=a[i,:]-a[j,:]*a[i,j]/a[j,j]
return a
def FindLarge(a0): #
b0=np.argmax(a0)
return b0
a=Fun(10)
a1=GJ(a)
print(a1)