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...