论高斯消元实现
来源:互联网 发布:mysql数据库迁移方案 编辑:程序博客网 时间:2024/05/16 06:52
高斯消元的实现是用到了增广矩阵变成上三角矩阵,然后从下往上迭代求值。
具体是这样的,
比如说有一个二元一次方程组
那么,把未知数的系数提出来弄成一个2*2的矩阵,然后再把方程组中等号右边的常数项加进来,成为一个2*3的矩阵
这就是一个增广矩阵了,
接下来变成一个上三角矩阵,
从矩阵的第一行开始,一直到最后一行,
比方说现在面临的是第i行,
那么在i到最后一行,找到第i列数的绝对值最大的那行跟第i行换一个位置,这样交换是有好处的,就是当面对0的情况,哈哈,想一想
然后就用第i行开始把从i+1到最后一行的所有行进行消元操作,消元的目的是把i行之后的所有行的第i列变成0
最后,变成的就是一个上三角矩阵了
从下往上迭代求值即可
如果不懂如何迭代求值,打个草稿看看就好了
我的代码:
#include<iostream>#include<map>#include<string>#include<cstring>#include<cstdio>#include<cstdlib>#include<cmath>#include<queue>#include<vector>#include<algorithm>using namespace std;double gauss(double a[10][10],int n){int i,j,k,t;for(i=0;i<n;i++){t=i;for(j=i+1;j<n;j++)if(fabs(a[j][i])>fabs(a[t][i]))t=j;if(t!=i)for(j=0;j<=n;j++)swap(a[i][j],a[t][j]);if(a[i][i]!=0)for(j=i+1;j<n;j++)for(k=n;k>=i;k--)a[j][k]-=a[j][i]/a[i][i]*a[i][k];}for(i=n-1;i>-1;i--){for(j=i+1;j<n;j++)a[i][n]-=a[j][n]*a[i][j];a[i][n]/=a[i][i];}}int main(){double a[10][10];int i,j,n;while(cin>>n){for(i=0;i<n;i++)for(j=0;j<=n;j++)cin>>a[i][j];gauss(a,n);for(i=0;i<n;i++)cout<<a[i][n]<<" ";cout<<endl;}}
0 0
- 论高斯消元实现
- 实现
- 实现
- 红黑树实现 实现代码
- java实现排列组合实现
- 实现Runnable 实现线程
- 实现ViewPager多种实现
- 双向LSTM实现实现
- 实现缓存 java实现
- 三子棋的实现的实现的实现
- 四则运算实现
- 继承实现
- 重载实现
- 实现缩略图
- split实现
- 实现缩略图
- wmi实现
- 实现缩略图
- php练手代码之微型论坛设计(2)
- Eclipse java EE IDE 安装ERMaster
- Google Protocol Buffer 的使用和原理
- ssh-keygen的使用方法
- [Windows PowerShell06]-PowerShell Run UnitTestCase
- 论高斯消元实现
- 杭电2199 Can you solve this equation?(二分)
- “网购后悔权”为何与“机动车撞人负全责”一样扯淡?
- 高大上的数据挖掘方法论
- 设计模式六大原则(1):单一职责原则
- 虚函数实现细节
- 栈(课本)
- 如何分析JAVA字节码--Oolong反编译
- Ubuntu 12.10 配置远程桌面访问(不用配置VNC或RDP服务器)