高斯消元演算法實現(Java)

2021-07-09 08:03:38 字數 1936 閱讀 9482

1:選擇主元;即選擇對角元素,保證其為所在列的最大,避免大數除以小數出現溢位,其實是避免其值為0;

2:當前主元不為最大值,交換兩行;

3:判斷主元是否為0,若是則不是唯一解;

4:逐行消元;

5:對角線元素歸一化;

6:回代消除對角線之上的元素。

這個是主方法,主要是使用一維陣列實現,對應的方法引數要給出方程增廣矩陣的每一行的個數。

內部方法將在後面給出,這個方法可以直接使用。

/**

* *@param array 係數矩陣 增廣矩陣

*@param colnum 列向量個數(從第0列開始)

*@return boolean 是否得出結果

*/public

boolean

resolve(float array, int colnum)

if(array[i*colnum+i]==0)

//消元得到上三角

for (int j = 0; j < colnum; j++)

}//主元素歸一化

for (int i = 0; i < rows; i++)

//回代消元,從最後一行開始

for (int i = rows-1; i > 0; i--)

return

true ;

}

用於內部實現的各個方法

/**

* 回代消元

*@param array

*@param i 第i行之上的開始消除

*@param colnum 矩陣每一行的個數

*/private

static

void

backemiss(float array, int i, int colnum)

}

/**

* 元素歸一化處理

*@param array

*@param i 第 i 行 歸一化處理

*@param colnum 矩陣列數 ,每行元素個數

*/private

static

void

elementback(float array, int i, int colnum)

}

/**

* 逐行消元

*@param array

*@param i 標示第 i 行的主元

*@param colnum

*/private

static

void

emisselement(float array, int i, int colnum)

}}

/**

* 交換兩行

*@param array

*@param dist 目標行

*@param src 原來的行

*@param colnum 行向量的長度

*/private

static

void

swapcol(float array, int dist, int src,int colnum)

}

/**

* *@param array

*@param colnum

*@param i 第i行的主元

*@return 主元所在的列

*/private

static

intselectpivotalelement(float array,int colnum,int i)

高斯消元 浮點高斯消元

浮點數高斯消元 問題描述 給出乙個線性方程組,有n個方程組,m個未知數。解這個線性方程組。輸入格式 第1行 2個整數n和m,n,m 400,且n不一定等於m 接下來n行,每行m 1個整數,表示乙個方程的m個未知數的係數和常數 輸出格式 如果無解,輸出 no solution 如果有唯一解,輸出m行,...

演算法初探 高斯消元

2020.07.30 16 36 千萬不要將行的意義和列的意義搞混!以下稱為矩陣的初等行變換 也就是說,高斯消元就是通過初等行變換去求解變化為增廣矩陣的線性方程組 例如下面這個方程組 begin2x 0 x 1 5x 2 x 3 23 x 0 2x 1 8x 2 4x 3 11 3x 0 x 1 x...

矩陣消元 高斯消元

安利一波高斯消元的部落格,內容很詳細。看完這個相信你已經理解了大概,高斯消元求線性方程組,在學習線性代數 大學課程 的時候我們都接觸過。原理是先把執行緒組轉換成矩陣,然後把它等價變換成上三角矩陣,這樣從下到上依次可以求出解集。高斯消元模板 模板題 include define n 205 using...