【模板】高斯消元(仅代码纯享版)
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN = 110;
const double EPS = 1e-7;
int n, r, len;
double a[MAXN][MAXN];
int main(){
scanf("%d", &n);
for(register int i = 0; i < n; i++)
for(register int j = 0; j <= n; j++)
scanf("%lf", &a[i][j]);
for(register int i = 0; i < n; i++){
r = len;
for(register int j= i + 1; j < n; j++)
if(fabs(a[j][i]) > fabs(a[r][i]))
r = j;
if(r != len)
for(register int j = 0; j <= n; j++)
swap(a[r][j], a[i][j]);
if(fabs(a[len][i]) < EPS)
continue;
for(register int j = len + 1; j < n; j++){
double f = a[j][i] / a[len][i];
for(register int k = i; k <= n; k++)
a[j][k] -= a[len][k] * f;
}
len++;
}
for(register int i = n - 1; i >= 0; i--){
for(register int j = i + 1; j < n; j++)
a[i][n] -= a[i][j] * a[j][n];
a[i][n] /= a[i][i];
}
for(register int i = 0; i < n; i++)
printf("x%d=%.2lf\n", i + 1, a[i][n]);
return 0;
}
P3389 【模板】高斯消元法
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN = 110;
const double EPS = 1e-7;
int n, r, len;
double a[MAXN][MAXN];
int main(){
scanf("%d", &n);
for(register int i = 0; i < n; i++)
for(register int j = 0; j <= n; j++)
scanf("%lf", &a[i][j]);
for(register int i = 0; i < n; i++){
r = len;
for(register int j = i + 1; j < n; j++)
if(fabs(a[j][i]) > fabs(a[r][i]))
r = j;
if(r != len)
for(register int j = 0; j <= n; j++)
swap(a[r][j], a[i][j]);
if(fabs(a[len][i]) < EPS){
puts("No Solution");
return 0;
}
for(register int j = len + 1; j < n; j++){
double f = a[j][i] / a[len][i];
for(register int k = i; k <= n; k++)
a[j][k] -= a[len][k] * f;
}
len++;
}
for(register int i = n - 1; i >= 0; i--){
for(register int j = i + 1; j < n; j++)
a[i][n] -= a[i][j] * a[j][n];
a[i][n] /= a[i][i];
}
for(register int i = 0; i < n; i++)
printf("%.2lf\n", a[i][n]);
return 0;
}
P2455 [SDOI2006]线性方程组
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN = 110;
const double EPS = 1e-7;
int n, r, len;
double a[MAXN][MAXN];
int main(){
scanf("%d", &n);
for(register int i = 0; i < n; i++)
for(register int j = 0; j <= n; j++)
scanf("%lf", &a[i][j]);
for(register int i = 0; i < n; i++){
r = len;
for(register int j = i + 1; j < n; j++)
if(fabs(a[j][i]) > fabs(a[r][i]))
r = j;
if(r != len)
for(register int j = 0; j <= n; j++)
swap(a[r][j], a[i][j]);
if(fabs(a[len][i]) < EPS)
continue;
for(register int j = len + 1; j < n; j++){
double f = a[j][i] / a[len][i];
for(register int k = i; k <= n; k++)
a[j][k] -= a[len][k] * f;
}
len++;
}
if(len < n){
for(register int i = len; i < n; i++)
if(fabs(a[i][n]) > EPS && fabs(a[i][i]) < EPS){
puts("-1");
return 0;
}
puts("0");
return 0;
}
for(register int i = n - 1; i >= 0; i--){
for(register int j = i + 1; j < n; j++)
a[i][n] -= a[i][j] * a[j][n];
a[i][n] /= a[i][i];
}
for(register int i = 0; i < n; i++){
if(a[i][n] == -0) a[i][n] = 0;
printf("x%d=%.2lf\n", i+1, a[i][n]);
}
return 0;
}
P4035 [JSOI2008]球形空间产生器
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN = 15;
const double EPS = 1e-7;
int n;
double a[MAXN][MAXN], num[MAXN][MAXN];
void Gauss(){
int r, len = 0;
for(register int i = 0; i < n; i++){
r = len;
for(register int j = i + 1; j < n; j++)
if(fabs(a[j][i]) > fabs(a[r][i]))
r = j;
if(r != len)
for(register int j = 0; j <= n; j++)
swap(a[r][j], a[i][j]);
if(fabs(a[len][i]) < EPS)
continue;
for(register int j = len + 1; j < n; j++){
double f = a[j][i] / a[len][i];
for(register int k = i; k <= n; k++)
a[j][k] -= a[len][k] * f;
}
len++;
}
for(register int i = n - 1; i >= 0; i--){
for(register int j = i + 1; j < n; j++)
a[i][n] -= a[i][j] * a[j][n];
a[i][n] /= a[i][i];
}
}
int main(){
scanf("%d", &n);
for(register int i = 0; i <= n; i++)
for(register int j = 0; j < n; j++)
scanf("%lf", &num[i][j]);
for(register int i = 0; i < n; i++)
for(register int j = 0; j < n; j++){
a[i][j] = 2.0 * (num[i][j] - num[i+1][j]);
a[i][n] += num[i][j] * num[i][j] - num[i+1][j] * num[i+1][j];
}
Gauss();
for(register int i = 0; i < n; i++)
printf("%.3lf ", a[i][n]);
return 0;
}
以下为博客签名,与博文无关。
只要你们不停下来,那前面就一定有我。所以啊,不要停下来~
本文来自博客园,作者:TSTYFST,转载请注明原文链接:https://www.cnblogs.com/TSTYFST/p/16548876.html