浮点型高斯消元模板--只存在唯一解
2017-07-29 22:10
381 查看
void gauss(Matrix A, int n) {
int i, j, k, r;
for(i = 0; i < n; i++) {
r = i;
for(int j = i + 1; j < n; j++) {
if(fabs(A[j][i]) > fabs(A[r][i])) r = j;
}
if(r != i) for(j = 0; j <= n; j++) swap(A[r][j], A[i][j]);
for(int k = i+1; k <= n; k++) A[i][k] /= A[i][i];
A[i][i] = 1;
for(k = i+1; k < n; k++)
if(k!=i){
double f = A[k][i] / A[i][i];
for(j = i; j <= n; j++) A[k][j] -= f * A[i][j];
}
}
for(int i = n-1; i >=0; i--){
for(int j = i-1; j >= 0; j--){
double f = A[j][i]/A[i][i];
A[j][i] -= f*A[i][i];
A[j]
-= f*A[i]
;
}
}
}
int i, j, k, r;
for(i = 0; i < n; i++) {
r = i;
for(int j = i + 1; j < n; j++) {
if(fabs(A[j][i]) > fabs(A[r][i])) r = j;
}
if(r != i) for(j = 0; j <= n; j++) swap(A[r][j], A[i][j]);
for(int k = i+1; k <= n; k++) A[i][k] /= A[i][i];
A[i][i] = 1;
for(k = i+1; k < n; k++)
if(k!=i){
double f = A[k][i] / A[i][i];
for(j = i; j <= n; j++) A[k][j] -= f * A[i][j];
}
}
for(int i = n-1; i >=0; i--){
for(int j = i-1; j >= 0; j--){
double f = A[j][i]/A[i][i];
A[j][i] -= f*A[i][i];
A[j]
-= f*A[i]
;
}
}
}
相关文章推荐
- 有唯一解的高斯消元模板
- 高斯消元的浮点数模板
- 高斯消元(唯一解)
- [高斯消元必有解的浮点模板] hdu 3359 Kind of a Blur
- 高斯消元的一些模板 整理自他人,感谢!
- hdu 3976 高斯消元 模板
- 高斯消元——浮点数模板
- hdu 3359 /poj 3999 Kind of a Blur(高斯消元模板题)
- UVALive 6184 - One-Dimensional Cellular Automaton 高斯消元模板题 (2012 Tokyo)
- 【洛谷 P3389】高斯消元法(高斯消元模板)
- [模板]-高斯消元
- 【模板】高斯消元
- Regionals 2015 :: Asia - Taipei B Linear Ecosystem 高斯消元(真模板)
- POJ2947 Widget Factory(高斯消元模板题)
- ACM 高斯消元(模板)
- 高斯消元中用到的相关概念和模板
- 高斯消元&线性基模板
- [置顶] 【模板】高斯消元
- 高斯消元模板
- 高斯消元模板