高斯消元法

2022-08-19 14:15:07 字數 1822 閱讀 4132

一、基本描述

1.高斯消元

主要用來求解線性方程組,也可以求解矩陣的秩,矩陣的逆。在acm中是乙個有力的數學**。

時間複雜度是o(n3),主要與方程組的個數,未知數的個數有關。

2.什麼是線性方程組?

有多個未知數,並且每個未知數的次數均為一次,這樣多個未知數組成的方程組為線性方程組。

二、演算法實現

高斯消元法就是手解方程組。

基本原理就是:消元(因為線性方程組次數為1次,不需要考慮降次),然後回代,在得到kx=b這類的式子後,就可以顯而易見得到x的解了。

舉例說明高斯消元法。

假設有如下的方程組:

寫成矩陣形式就是: ax=b ,其中:

且,現對矩陣 a 作初等變換,同時矩陣 b 也作同樣的初等變換,則當 a 化為單位矩陣的時候,有:

顯而易見,我們得到了方程組的解:

。(ps.這裡的矩陣帶t代表是列向量,即x1=1,x2=2,x3=4)

所以, 我們要以一定的策略, 對 a 和 b 施以一系列的初等變換, 當 a 化為單位矩陣的時候,b 就為方程組的解。

三、高斯消元法實現

網上很多模板還強調解出矩陣的上三角形,但是對於一般的題目來說,並沒有必要。學會怎麼解就好了。

直接例題上板子。

1.bzoj1013 [jsoi2008]球形空間產生器sphere

【題目大意】

給出n維空間中給出n+1個點的座標,求出球心座標。

【思路】

令球心座標為x1,x2...xn,假設當前第i個點座標為a1,a2...,an,第i+1個點座標為b1,b2...,bn,則由半徑相等可得:

(a1-x1)^2+(a2-x2)^2+...+(an-xn)^2=(b1-x1)^2+(b2-x2)^2+...+(bn-xn)^2

化簡可得:

2(a1-b1)x1+2(a2-b2)x2+...+2(an-bn)xn=(a1^2+a2^2+...+an^2-b1^2-b2^2-...-b3^2)

如此可得到n個一元n次方程組,用最簡單的高斯消元搞一搞就好了。

1 #include2 #include3 #include4 #include5

#define maxn 25

6using

namespace

std;

7const

double eps=1e-6; 8

double

f[maxn],a[maxn][maxn];

9int

n;10

void

gauss()

16if (j>n) continue;17

if (j!=now)

20double t=a[now][i];

21for (int k=1;k<=n+1;k++) a[now][k]/=t;

22for (int k=1;k<=n;k++)28}

29}30 now++;31}

32return;33

}34intmain()44}

45gauss();

46for (int i=1;i"

%.3lf

",a[i][n+1

]);47 printf("

%.3lf\n

",a[n][n+1

]);48

return0;

49 }

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

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

高斯消元法

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

高斯消元法

學過至少一元二次方程解法的同學們肯定知道,最常用的求根方法是加減消元法。所謂加減消元法,就是通過方程的等式性質,將某一未知數的係數同一化,再通過兩個等式的加減消去乙個元,從而將多元方程不斷降元,從而解出乙個未知數,不斷代回,從而求出所有根。此加減消元法就是高斯消元法。所以程式思路也盡可知。以下直接附...