码迷,mamicode.com
首页 > 其他好文 > 详细

gaussi

时间:2018-10-07 18:03:57      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:ons   display   std   for   while   play   str   math   fabs   

  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

标签:ons   display   std   for   while   play   str   math   fabs   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!