数值分析课题二 矩阵求逆
来源:互联网 发布:ff视频软件 编辑:程序博客网 时间:2024/06/05 03:37
模拟求逆过程写就可以了
e是单位矩阵,只通过行变换,把原矩阵变成单位矩阵。
消元的时候不能选主元。
#include <iostream>#include <cstdio>#include <math.h>using namespace std;const int MAXN = 1000;int n;double a[MAXN][MAXN];double e[MAXN][MAXN];void init(){ for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ e[i][j] = i == j?1:0; } }}void low_mat(){ for(int k = 0;k<n;k++){///往下扫 for(int i = k+1;i<n;i++){ double l = -a[i][k]/a[k][k]; for(int j = k;j<n;j++){ a[i][j] += l*a[k][j]; e[i][j] += l*e[k][j]; } } }}void up_mat(){ for(int k = n-1;k>=0;k--){///再往上扫 for(int i = k-1;i>=0;i--){///千万别选主元,会跪 double l = -a[i][k]/a[k][k]; for(int j = k;j>=0;j--){ a[i][j] += l*a[k][j]; e[i][j] += l*e[k][j]; } } }}void I(){ for(int i =0;i<n;i++){ for(int j =0;j<n;j++){ e[i][j] /= a[i][i]; } }}int main(){ freopen("in.txt","r",stdin); while(cin >> n){ init(); for(int i =0;i<n;i++){ for(int j = 0;j<n;j++){ scanf("%lf",&a[i][j]); } } low_mat(); up_mat(); I(); for(int i =0;i<n;i++){ for(int j =0;j<n;j++){ printf("%10.5lf",e[i][j]); } cout <<endl; } } return 0;}
0 0
- 数值分析课题二 矩阵求逆
- 数值分析:矩阵求逆-奇异性、条件数
- 数值计算——矩阵求逆误差测试
- 数值分析实验二 数值积分
- 求计算机专业毕业课题~~
- OpenCV中的数值计算功能(一)矩阵求逆(伪逆)
- 数值计算——矩阵求逆误差测试(n=2000)
- 实验课题(二)
- 数值计算---求希尔伯特矩阵的条件数
- 【数值计算】householder矩阵的QR算法,求特征值
- 数值计算与方法 && 实验6||7 && LU分解求行列式的值和矩阵的逆
- 矩阵求逆代码
- 矩阵求逆inv()
- 矩阵求逆
- C#矩阵求逆
- 求矩阵的逆
- 矩阵的求逆
- 求矩阵的逆
- (二) Vim使用心得二
- poj 2559 Largest Rectangle in a Histogram 栈
- windows内核情景分析之进入与退出系统空间过程
- 2015年6月5日 生活工作瞎扯蛋
- 计算机网络学习(7)网络层
- 数值分析课题二 矩阵求逆
- Android学习日记(8)
- 微商才是世界上最花心的“男人”
- 从MySql中查出来的时间数据后面多了.0的问题
- android中的2种fragment部署方法
- OpenCSP开源程序解析之OPENCSP_Alg.cpp
- JAVA回炉笔记——不定期更新
- BST(Binary Search Tree) demo, quote from Stanford cs106b course reader
- 图片拉伸2