高斯消元解線性方程組

2021-06-08 05:15:32 字數 1360 閱讀 3661

高斯消去法是消去法的一種特殊形式,它包括消元和回帶兩個過程。

高斯消去法求解線性方程組分為以下兩大步:

1、將係數矩陣a經過一系列的初等行變換程式設計右上三角矩陣,其常數向量b也同時做相應的變換,即:

在變換過程中,採用原地工作,即經變換後的元素仍存放在原來的儲存單元中。

為了實現上述目標,對於k從1到n-1作以下2步

(1):歸一化

這一步的作用是將主對角線上的元素變為1,為此,第k行上的所用元素a[k][j](j=k+1,...n)與常數向量b[k]都要除以a[k][k].但由於變換後的元素仍存放在原來的儲存單元中,因此,為了不影響第k行其他元素的變換(都要除以a[k][k])一開始沒有將

a[k][k]變為1,並且最後也沒有真正將a[k][k]變為1,因為a[k][k]是否真正變為1已經無關緊要了,只要在以後得變換中將a[k][k]認為是1就可以了.

(2):消元

將第k列中主對角線以下的元素消成0,為此,第i(i=k+1,...n)行的其他元素a[i][j](j=k+1,...n)與常數向量b中的元素b[i]都要減去第k行對應元素的a[i][k]倍.同樣由於變換後的元素仍然在原先的位置上,因此,為了不影響第i行上其他元素的變換,一開始並沒有將a[i][k]變為0,並且最後也沒有真正將a[i][k]變為0,因為a[i][k]是否真正變為1已經無關緊要了,以後得變換中已經用不到這個元素了.

回帶求解:

首先從最後乙個方程中解出x[n],x[n]=b[n]/a[n][n];

然後依次回帶,逐個解出x[n-1],...x2,x1

演算法實現:

//列選主元高斯消去法求解線性方程組

//a:線性方程組的增廣矩陣

//n:n階線性方程組

//result:方程組的解

bool linearequations(double *a,int n,double *result)

} if(maxvalue!=0)

{ if(npos!=k)

{//交換第npos行與第k行的元素

for(int l=0;l=0;k--)

{ double tmp=0;

for(int j=k+1;j

高斯-約當消去法是一種無回帶過程的求解線性代數方程組的直接解法。這種方法的基本思想是通過一系列的初等行變換,直接將係數矩陣變換成單位矩陣,同樣的變換就將常數向量變換成解向量了。這種消元法的基本過程與高斯消去法相同,只是在消元的過程中,不僅將主對角線以下的元素消成0,同時將主對角線以上的元素也消成0,因此,在這種情況下,就不需要回帶過程了。

高斯消元解線性方程組

高斯消元可以通過初等行列變化把 增廣矩陣 轉換成 階梯型矩陣,進而求解 n 個線性方程組的解,其時間複雜為o n 3 初等行列變換 對乙個方程組進行以下三個操作不會影響方程的解 例如線性方程組為 a11x1 a12x2 a13x3 a1nxn b1 a21x1 a22x2 a23x3 a2nxn b...

線性方程組(高斯消元)

acm模版 列主元gauss消去求解a x b 返回是否有唯一解,若有解在b中 define fabs x x 0 x x define eps 1e 10 const int maxn 100 int gausscpivot int n,double a maxn double b if fabs...

15 高斯消元解線性方程組

高斯消元可以在o n 3 的時間複雜度內,求解乙個包含n個方程和n個未知數的多元線性方程組 解有三種情況 預備知識 線性代數矩陣的初等行變換,轉化成最短階梯形矩陣 高斯消元就是把乙個係數矩陣變換成上三角的形式 高斯消元涉及到的線代知識不多,秩之類的不涉及 只用最基礎的線代知識 無解的情況 不完美階梯...