c++使用vector求矩阵的A的逆

  • 直接上代码
#include <vector>
#include <iostream>
using namespace std;vector<vector<double>> make_zero_martix(int m, int n) {//创建0矩阵vector<vector<double>> array;vector<double> temparay;for (int i = 0; i < m; ++i)// m*n 维数组{for (int j = 0; j < n; ++j)temparay.push_back(i * j);array.push_back(temparay);temparay.erase(temparay.begin(), temparay.end());}return array;
}//按第一行展开计算|A|
double getA(vector<vector<double>> arcs, int n)
{if (n == 1){return arcs[0][0];}double ans = 0;vector<vector<double>> temp = make_zero_martix(arcs.size(), arcs.size());int i, j, k;for (i = 0; i < n; i++){for (j = 0; j < n - 1; j++){for (k = 0; k < n - 1; k++){temp[j][k] = arcs[j + 1][(k >= i) ? k + 1 : k];}}double t = getA(temp, n - 1);if (i % 2 == 0){ans += arcs[0][i] * t;}else{ans -= arcs[0][i] * t;}}return ans;
}//计算每一行每一列的每个元素所对应的余子式,组成A*
void  getAStart(vector<vector<double>> arcs, int n, vector<vector<double>>& ans)
{if (n == 1){ans[0][0] = 1;return;}int i, j, k, t;vector<vector<double>> temp = make_zero_martix(n, n);for (i = 0; i < n; i++){for (j = 0; j < n; j++){for (k = 0; k < n - 1; k++){for (t = 0; t < n - 1; t++){//cout << arcs[k >= i ? k + 1 : k][t >= j ? t + 1 : t] << endl;temp[k][t] = arcs[k >= i ? k + 1 : k][t >= j ? t + 1 : t];}}ans[j][i] = getA(temp, n - 1);  //此处顺便进行了转置if ((i + j) % 2 == 1){ans[j][i] = -ans[j][i];}}}
}//得到给定矩阵src的逆矩阵保存到des中。
bool GetMatrixInverse(vector<vector<double>> src, int n, vector<vector<double>>& des)
{double flag = getA(src, n);vector<vector<double>> t = make_zero_martix(n, n);if (0 == flag){cout << "原矩阵行列式为0,无法求逆。请重新运行" << endl;return false;//如果算出矩阵的行列式为0,则不往下进行}else{getAStart(src, n, t);for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){des[i][j] = t[i][j] / flag;}}}return true;
}vector<vector<double>> inverse(vector<vector<double>> matrix_before) {//矩阵求逆bool flag;vector<vector<double>> matrix_after = make_zero_martix(matrix_before.size(), matrix_before.size());flag = GetMatrixInverse(matrix_before, matrix_before.size(), matrix_after);return matrix_after;
}int main() {vector<vector<double>> nums1 = {{1, 2, 3},{4, 15, 6},{7, 8, 8}};vector<vector<double>> w = inverse(nums1);for (int i = 0; i < w.size(); i++){for (int j = 0; j < w[0].size(); j++){cout << w[i][j] << " ";}cout << endl;}
}
  • 其他的矩阵操作可见https://blog.csdn.net/cute_boy_/article/details/119515874?spm=1001.2014.3001.5501

c++使用vector求矩阵的A的逆相关推荐

  1. c++使用vector求两个矩阵相乘

    c++使用vector求两个矩阵相乘 直接上代码 #include <vector> #include <iostream> using namespace std;vecto ...

  2. MATLAB中求矩阵非零元的坐标

    MATLAB中求矩阵非零元的坐标: 方法1: index=find(a); [i,j]=ind2sub(size(a),index); disp([i,j]) 方法2: [i,j]=find(a> ...

  3. CF1368G Shifting Dominoes(扫描线求矩阵的并集)

    CF1368G Shifting Dominoes problem solution code problem 题目链接 solution 求的是最后棋盘本质不同的个数,而本质不同等价于两个空格位置不 ...

  4. java正方形矩阵_已知一个NxN的矩阵A,求矩阵中所有边长为m的正方形的子矩阵

    已知一个NxN的矩阵A,求矩阵中所有边长为m的正方形的子矩阵内元素的中位数.(m 例子: // m = 3 n = 5 // 01234 ݂         //  0 11357 ݂         ...

  5. QR分解求矩阵特征值、特征向量 C语言

    最近在看一个高光谱图像压缩算法,其中涉及到正交变换,计算正交变换时,需要对普通矩阵求其特征向量.想要在网上找一个现成的程序,可能是我百度的能力不强吧,居然真的没找见.好了废话不多说,下面进入正题. 计 ...

  6. numpy求矩阵的特征值与特征向量(np.linalg.eig函数详解)

    numpy求矩阵的特征值与特征向量(np.linalg.eig) 语法 np.linalg.eig(a) 功能 Compute the eigenvalues and right eigenvecto ...

  7. matlab求矩阵均值向量,如何求一个矩阵的均值向量

    四.线性方程组 考试内容 线性方程组的克莱姆(Cramer)法则 线性方程组有解和无解的判定齐次线性方程组的基础解系和通解非齐次线性方程组的解与相应的齐次线性方程组(导出组)的解之间的关系非齐次线性方 ...

  8. matlab中怎么求矩阵的特征值和特征向量

    https://jingyan.baidu.com/article/d169e186047d86436611d88a.html matlab如何求矩阵特征值_xiaolu的专栏-CSDN博客_matl ...

  9. C语言函数题- 求矩阵不靠边元素之和

    6-16 求矩阵不靠边元素之和 (10分) 求矩阵的所有不靠边元素之和,矩阵行的值m从键盘读入(2<=m<=10),调用自定义函数Input实现矩阵元素从键盘输入,调用Sum函数实现求和. ...

最新文章

  1. Java项目:农业计算工具(java+swing)
  2. CentOS之——CentOS7安装iptables防火墙
  3. Apache TinkerPop毕业成为顶级项目
  4. IBM Java多线程 - 3.无处不在的线程
  5. 技改之路:从单块应用到微服务,我的血泪总结--转
  6. Android之AndroidManifest.xml文件解析和权限集合
  7. [改善Java代码]若有必要,使用变长数组
  8. tensorrt轻松部署高性能dnn推理_基于TensorRT车辆实时推理优化
  9. 2019年3月23日
  10. 【数据分析】基于matlab GUI kmeans聚类分组系统【含Matlab源码 510期】
  11. springboot 架构图
  12. 13-24.产品经理入门到精通(二)
  13. 易辅客栈第一套从零学辅助系列教程
  14. windows10强制删除文件_360都删除不了顽固文件?别慌,不足1M的工具帮你强制清理...
  15. py thon画一个实心五角星
  16. 程序员的副业:我的第一本书出版啦!
  17. 俄勒冈州立大学计算机科学专业,2019上海软科世界一流学科排名计算机科学与工程专业排名俄勒冈州立大学排名第301-400...
  18. linux老自动重启原因,【重启】查询linux自动重新启动原因
  19. java定时从数据库抓取数据库,java查询数据库java如何实现定时从数据库查询新增的数据?...
  20. python图片保存jpg、show变成bmp_Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中...

热门文章

  1. JAVA | MongoDB 去重、聚合函数、Criteria Query使用
  2. Google Dremel架构
  3. 解决jmeter压测试时java.net.SocketException: Socket closed异常
  4. 学习EBS建议有的知识
  5. 2021年美赛MCM赛题C题翻译
  6. java飞行棋项目_Java实现飞行棋 - 源码下载|行业应用软件|教育/学校应用|源代码 - 源码中国...
  7. pb中操作excel表格函数
  8. 如何利用ps去除图片水印和绘制图案
  9. 开题报告:基于java新冠疫苗在线预约系统 毕业设计论文开题报告模板
  10. Python 变量作用域与函数(4)