,y,
z...
x,y,z...
x,y,z.
..,可以得到乙個上三角矩陣。這時已經可以直接讀出最後乙個方程的解了,再回代到上面的方程就行了。
具體實現:
對於x ixi
xi,找到xixi
xi係數最大的乙個方程,以減少精度誤差。
然後,把該方程的xixi
xi係數轉化為1,帶入後面所有方程消元。
考慮倒著往回進行代入消元,每得到乙個xixi
xi的答案,就把上面方程中的所有xixi
xi消掉。然後矩陣就成了乙個單位矩陣,輸出答案即為各個未知數的解。
模板題是luogu3389 【模板】高斯消元法.
#include
#include
#include
#include
using
namespace std;
const
int maxn =
110;
const
double eps =
1e-6
;int n;
double ele[maxn]
[maxn]
;double ans[maxn]
;int
main()
scanf
("%lf"
,&ele[i]
[n +1]
);}for
(int i =
1; i <= n; i++)if
(maxn != i)
swap
(ele[i]
, ele[maxn]);
double div = ele[i]
[i];
for(
int j =
1; j <= n +
1; j++
) ele[i]
[j]/
= div;
for(
int j = i +
1; j <= n; j++)}
} ans[n]
= ele[n]
[n +1]
;for
(int i = n -
1; i >=
1; i--
) ans[i]
= ele[i]
[n +1]
;}for(
int i =
1; i <= n; i++
)return0;
}
高斯消元模板
include include include include include include include include typedef long long ll const int n 1008 高斯消元模板 const double eps 1e 12 double aug n n 增廣矩...
高斯消元模板
用迭代的辦法打會簡潔一些。有些精度上的細節需要注意。多次消元要清空use和cho陣列。實數高斯消元 int use maxn cho maxn void solve equation int n,int m break fd i,n,1 if cho i 自由元的個數就是cho為0的個數 無解的話去...
高斯消元模板
高斯消元 const int n 20 const double eps 1e 7 double a n n x n double c n n m表示行數,n表示列數 下標從0開始儲存,常數列不算進列數 返回值 1表示無解,0表示唯一解,大於0表示無窮解,並返回自由變元的個數 int gauss i...