数值分析2.1 Gauss(高斯)消去法
来源:互联网 发布:苹果电脑软件怎么卸载 编辑:程序博客网 时间:2024/05/22 05:23
顺序高斯消去法:
代码:
#include <iostream>#include <cstdio>using namespace std;const int MAXN = 10000;double a[MAXN][MAXN];double b[MAXN];double x[MAXN];int main(){ int n; double l; while(cin >> n){///方程组阶数 for(int i = 0;i<n;i++)cin >> b[i];///输入方程组右端 for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ cin >> a[i][j];///系数矩阵 } } ///消元过程 for(int k = 0;k<n-1;k++){///消元行 for(int i = k+1;i<n;i++){///被消元行 l = a[i][k]/a[k][k]; for(int j = k;j<n;j++){ a[i][j]-=l*a[k][j]; } b[i]-=b[k]*l; } } ///回带过程 for(int i = n-1;i>=0;i--){ x[i] = b[i]; for(int j = n-1;j>i;j--){ x[i] -= a[i][j]*x[j]; } x[i] /= a[i][i]; } /// for(int i = 0;i<n;i++){ if(!i)cout << x[i]; else cout << " " << x[i]; } cout << endl; } return 0;}
没啥区别,就是在消去过程,添加一个选主元过程,记住交换的时候,方程组右端也要交换
代码:
#include <iostream>#include <cstdio>#include <math.h>using namespace std;const int MAXN = 10000;double a[MAXN][MAXN];double b[MAXN];double x[MAXN];int main(){ int n; double l; double maxs; while(cin >> n){ for(int i = 0;i<n;i++)cin >> b[i]; for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ cin >> a[i][j]; } } ///消元过程 for(int k = 0;k<n-1;k++){///消元行 int cur = k; maxs = fabs(a[k][k]); for(int i = k;i<n;i++)if(maxs<fabs(a[i][k])){maxs = fabs(a[i][k]);cur = i;}///选主元 if(cur != k){ double temp; for(int j = k;j<n;j++){ temp = a[k][j]; a[k][j] = a[cur][j]; a[cur][j] = temp; } temp = b[k];b[k] = b[cur];b[cur] = temp; } for(int i = k+1;i<n;i++){///被消元行 l = a[i][k]/a[k][k]; for(int j = k;j<n;j++){ a[i][j]-=l*a[k][j]; } b[i]-=b[k]*l; } } ///回带过程 for(int i = n-1;i>=0;i--){ x[i] = b[i]; for(int j = n-1;j>i;j--){ x[i] -= a[i][j]*x[j]; } x[i] /= a[i][i]; } /// for(int i = 0;i<n;i++){ if(!i)cout << x[i]; else cout << " " << x[i]; } cout << endl; } return 0;}
0 0
- 数值分析2.1 Gauss(高斯)消去法
- 数值分析之直接法解线性方程组:高斯消去法、高斯乔丹消去法
- 高斯消去法
- 高斯消去法
- 高斯消去法
- 高斯消去法
- 高斯消去法
- 高斯消去法
- 高斯消去法
- Gauss消去法求解线性方程组
- Gauss消去法求线性方程组
- 【C++】高斯消去法
- Gauss列主元素消去法
- Gauss消去法解线性方程组(Matlab)
- Gauss 列主元消去法的Python程序
- 求解线性方程组--高斯消去法
- 高斯消去法求解方程组
- 高斯消去法解线性方程组
- 杭电ACM——1231
- 亲和数 2040
- (9.1.2)线性代数之矩阵运算
- HDU 5099 Gunner
- 每日一题16:在一个数组中实现两个栈
- 数值分析2.1 Gauss(高斯)消去法
- cocos2d-x 优化(纹理渲染优化、资源缓存、内存优化)
- 【BestCoder】HDU 5199 Gunner
- 关于uitextfield
- Palindrome Number
- Scala函数式编程原理
- Linux vim 指定编码打开文件
- 黑马程序员——JAVA基本常识
- linux下常用系统调用