高斯消元法的python實現

2021-08-14 14:34:12 字數 2455 閱讀 3406

高斯消元法是解線性方程組的一種常見的方法,下面是高斯消元法的實現過程,下面的演算法僅能解決各主元素不為0的情況。

下面是演算法的實現思路:

1.演算法總共分為兩大步驟,第乙個步驟是將增廣矩陣消元形成上三角矩陣,第二個步驟是從下向上進行回帶完成解方程的步驟。

2.在第乙個步驟裡總共有三重迴圈

1>第一重迴圈是要控制一共要有多少次消元。如下圖要將左邊的矩陣變成右邊的矩陣要進行2次消元。

2>第二重迴圈是要將當前消元的主元素變成一,同時該主元素所在的行同時縮小相應的倍數。例如:將a11這一行的元素同時除以a11,這行元素變為1,a12/a11,a13/a11,b1/a11

3>第三重迴圈將主元素所在的列,完成消元歸零的操作。將a11所在的列都變成0,a21-a21*1 ,a22-a21*a12/a11,a23-a21*a13/a11,b32-a21*b1/a11

3.回帶

""" 利用高斯消元法,求解方程組的解。

方程組如下:

6x1+15x2+55x3=152.6

15x1+55x2+225x3=585.6

55x1+225x2+979x3=2488.8

"""def calculate_parameter(data):

# i用來控制列元素,line是一行元素,j用來控制迴圈次數,datas用來儲存區域性變數。儲存修改後的值

i = 0;

j = 0;

line_size = len(data)

# 將行列式變換為上三角行列式

while j < line_size - 1:

line = data[j]

temp = line[j]

templete =

for x in line:

x = x / temp

data[j] = templete

# flag標誌應該進行消元的行數

flag = j + 1

while flag < line_size:

templete1 =

temp1 = data[flag][j]

i = 0

for x1 in data[flag]:

if x1 != 0:

x1 = x1 - (temp1 * templete[i])

else:

i += 1

data[flag] = templete1

flag += 1

j += 1

# 求相應的引數值

parameters =

i = line_size - 1

# j標識減去元素個數

# flag_rol標識除那一列

flag_j = 0

rol_size = len(data[0])

flag_rol = rol_size - 2

# 獲得解的個數

while i >= 0:

operate_line = data[i]

if i == line_size - 1:

parameter = operate_line[rol_size - 1] / operate_line[flag_rol]

else:

flag_j = (rol_size - flag_rol - 2)

temp2 = operate_line[rol_size - 1]

# result_flag為訪問已求出解的標誌

result_flag = 0

while flag_j > 0:

temp2 -= operate_line[flag_rol + flag_j] * parameters[result_flag]

result_flag += 1

flag_j -= 1

parameter = temp2 / operate_line[flag_rol]

flag_rol -= 1

i -= 1

return parameters

paremeters=[[6,15, 55,152.6], [15, 55, 225, 585.6], [55,225,979,2488.8]]

results=calculate_parameter(paremeters)

print(" x1="+str(results[2])+"\n x2="+str(results[1])+"\n x3="+str(results[0]))

高斯消元法的Python實現

coding utf8 import numpy as np 設定矩陣 def getinput matrix a np.mat 2,3,11,5 1,1,5,2 2,1,3,2 1,1,3,4 dtype float matrix b np.mat 2,1,3,3 答案 2 0 1 1 retur...

高斯消元法(二) 高斯消元法原理

高斯消去法是一種常用的求解線性方程組的方法,通過逐次消元後,在回代求解,實際計算中常用的一種方法。順序消去法 將ax b按照從上至下 從左至右的順序化為上三角方程組,中間過程不對矩陣進行交換,主要步驟如下。step1 將第2行至第n行,每行分別與第一行做運算,消掉每行第乙個引數。公式如 形成如下圖所...

高斯消元法

寒假前,小導師給我們布置了三道程式設計題,其中有一道是利用高斯消元法解線性方程組的。在網上搜了些資料,自己照葫蘆畫瓢編出乙個簡單的高斯消元法 利用矩陣的初等行變換 高斯消元法解線性方程組 include include include define dim 10 double a dim 1 dim...