高斯消元法是解線性方程組的一種常見的方法,下面是高斯消元法的實現過程,下面的演算法僅能解決各主元素不為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...