gaussi
Posted dixinfan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gaussi相关的知识,希望对你有一定的参考价值。
1 #include <iostream> 2 #include <cstdio> 3 #include <math.h> 4 using namespace std; 5 const int MAXN = 10000; 6 double a[MAXN][MAXN]; 7 double b[MAXN]; 8 double x[MAXN]; 9 int main() 10 { 11 int n; 12 double l; 13 while(cin >> n){///方程组阶数 14 for(int i = 0;i<n;i++)cin >> b[i];///输入方程组右端 15 for(int i = 0;i<n;i++){ 16 for(int j = 0;j<n;j++){ 17 cin >> a[i][j];///系数矩阵 18 } 19 } 20 ///消元过程 21 for(int k = 0;k<n-1;k++){///消元行 22 for(int i = k+1;i<n;i++){///被消元行 23 l = a[i][k]/a[k][k]; 24 for(int j = k;j<n;j++){ 25 a[i][j]-=l*a[k][j]; 26 } 27 b[i]-=b[k]*l; 28 } 29 } 30 31 ///回带过程 32 for(int i = n-1;i>=0;i--){ 33 x[i] = b[i]; 34 for(int j = n-1;j>i;j--){ 35 x[i] -= a[i][j]*x[j]; 36 } 37 x[i] /= a[i][i]; 38 } 39 40 /// 41 for(int i = 0;i<n;i++){ 42 if(!i)cout << x[i]; 43 else cout << " " << x[i]; 44 } 45 cout << endl; 46 break; 47 } 48 //------- 49 50 double maxs; 51 while(cin >> n){ 52 for(int i = 0;i<n;i++)cin >> b[i]; 53 for(int i = 0;i<n;i++){ 54 for(int j = 0;j<n;j++){ 55 cin >> a[i][j]; 56 } 57 } 58 ///消元过程 59 for(int k = 0;k<n-1;k++){///消元行 60 int cur = k; 61 maxs = fabs(a[k][k]); 62 for(int i = k;i<n;i++)if(maxs<fabs(a[i][k])){maxs = fabs(a[i][k]);cur = i;}///选主元 63 if(cur != k){ 64 double temp; 65 for(int j = k;j<n;j++){ 66 temp = a[k][j]; 67 a[k][j] = a[cur][j]; 68 a[cur][j] = temp; 69 } 70 temp = b[k];b[k] = b[cur];b[cur] = temp; 71 } 72 73 for(int i = k+1;i<n;i++){///被消元行 74 l = a[i][k]/a[k][k]; 75 for(int j = k;j<n;j++){ 76 a[i][j]-=l*a[k][j]; 77 } 78 b[i]-=b[k]*l; 79 } 80 } 81 82 ///回带过程 83 for(int i = n-1;i>=0;i--){ 84 x[i] = b[i]; 85 for(int j = n-1;j>i;j--){ 86 x[i] -= a[i][j]*x[j]; 87 } 88 x[i] /= a[i][i]; 89 } 90 91 /// 92 for(int i = 0;i<n;i++){ 93 if(!i)cout << x[i]; 94 else cout << " " << x[i]; 95 } 96 cout << endl; 97 break; 98 } 99 return 0; 100 }
以上是关于gaussi的主要内容,如果未能解决你的问题,请参考以下文章