首页 > 其他 > 详细

gaussi

时间:2018-10-07 17:32:32      阅读:180      评论:0      收藏:0      [点我收藏+]
  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

原文:https://www.cnblogs.com/DixinFan/p/9750582.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!