测试环境:

  1. C++
  2. Egien库

代码

#include <iostream>
#include <ctime>#include <Eigen/Core>
#include <Eigen/Dense>
#include <Eigen/LU>
#include <Eigen/Cholesky>using namespace std;
using namespace Eigen;
/***********************
* solve equation: matrix_NN * x = v_Nd
************************/
const int MATRIX_SIZE = 100;
// https://blog.csdn.net/weixin_41074793/article/details/84241776
int main()
{Matrix< double, MATRIX_SIZE, MATRIX_SIZE > matrix_NN;matrix_NN = MatrixXd::Random( MATRIX_SIZE, MATRIX_SIZE );Matrix<double, MATRIX_SIZE, 1> v_Nd;v_Nd = MatrixXd::Random( MATRIX_SIZE,1);clock_t time_stt = clock();//直接求逆Matrix< double, MATRIX_SIZE, 1> x = matrix_NN.inverse()*v_Nd;cout << "time use in normal inverse is       " << 1000.0 * (clock() - time_stt) /(double)CLOCKS_PER_SEC << "ms" << endl;//Qr分解time_stt = clock();x = matrix_NN.colPivHouseholderQr().solve(v_Nd);cout << "time use in Qr composition is       " << 1000 * (clock() - time_stt) / (double)CLOCKS_PER_SEC << "ms" << endl;//cholesky分解time_stt = clock();// 使得NN成为正定矩阵,才能分解matrix_NN = matrix_NN.transpose() * matrix_NN;x = matrix_NN.partialPivLu().solve(v_Nd);cout << "time use in cholesky composition is " << 1000 * (clock() - time_stt) / (double)CLOCKS_PER_SEC << "ms" << endl;//LU分解time_stt = clock();x = matrix_NN.partialPivLu().solve(v_Nd);cout << "time use in LU composition is       " << 1000 * (clock() - time_stt) / (double)CLOCKS_PER_SEC << "ms" << endl;return 0;
}

#### 结果

time use in normal inverse is 1547.72ms
time use in Qr composition is 37.475ms
time use in cholesky composition is 13.074ms
time use in LU composition is 5.242ms

求解矩阵方程耗时比较(直接求逆,Qr分解,LU分解)相关推荐

  1. 【SIMULINK】simulink实现信号矩阵整合、求逆、转置、分解、向量矩阵相乘(非matlab)

    [SIMULINK]simulink实现信号矩阵整合.求逆.转置.分解.乘(非matlab) simulink实现信号矩阵,并实现分解 simulink实现信号矩阵求逆 simulink实现信号矩阵转 ...

  2. 矩阵的各种分解: LU分解, QR分解, 特征分解, 对称对角化, 奇异值分解 SVD

    本文主要关注的是有关 "怎样的矩阵能够进行 XX 分解" 的问题,具体分解的实现方式在这里不做归纳. 欢迎访问我的个人主页 zhekaili.github.io,已查看更多的线性代 ...

  3. 3D数学之矩阵的各种求逆

    经过三天的准备终于把矩阵的各种求逆方法以及代码完成了.心里有点小激动,come on,来吧,点燃你的心中的那团火,跟着游戏音乐的律动一起跟我走入神秘的3D世界. 下面介绍三种方法: 1.用伴随矩阵求逆 ...

  4. 机器学习(十一)——机器学习中的矩阵方法(1)LU分解、QR分解

    http://antkillerfarm.github.io/ 因子分析的EM估计(续) 去掉和各参数无关的部分后,可得: ∑i=1mE[logp(x(i)|z(i);μ,Λ,Ψ)]=∑i=1mE[1 ...

  5. LU分解求线性方程组的解

    LU分解是矩阵分解的一种,可以将一个矩阵分解为一个上三角矩阵和一个下三角矩阵的乘积. LU分解可以用来求逆矩阵,解线性方程组等.本文将介绍LU分解求线性方程组的解. 1.定义 如果A是一个方阵,A的L ...

  6. matlab迭代求解,[基于matlab平台的三种迭代法求解矩阵方程]matlab迭代法求方程的根...

     数值分析第二次作业 学院:电子工程学院 基于matlab平台的三种迭代法求解矩阵方程组 求解系数矩阵由16阶Hilbert方程组构成的线性方程组的解,其中右端项为[2877/851,3491/14 ...

  7. 怎么用计算机求逆矩阵,计算机是怎么求解线性方程的(矩阵乘和求逆)

    上回我们说到,高斯老哥用消元法解线性方程,大致步骤呢就是给系数矩阵消元,运气好点呢直接整出上三角系数矩阵,得到方程组的唯一解,运气不行呢,消着消着发现整不出上三角,这时就得再讨论方程是有多解还是无解. ...

  8. CF438E The Child and Binary Tree(有意思的生成函数 + 多项式求逆 + 多项式开方)

    整理的算法模板合集: ACM模板 点我看多项式全家桶(●^◡_◡◡​^●) CF438E The Child and Binary Tree 简单的黑题 首先我们发现模数为99824435399824 ...

  9. 归并排序模板(附求逆序对)

    逆序对满足两个条件, i < j 和 ai > aj 归并可以求逆序对, 因为是按顺序加入, 所以右区间加入的时候, 左区间的数满足 i < j, 然后左边还没有加入的数肯定比当前的 ...

最新文章

  1. 解决toad中number类型小数位数过长按科学计数法显示的问题
  2. Ubuntu14.04下安装eclipse
  3. html5 go语言运行环境,GO环境搭建-Go语言中文社区
  4. python完全新手教程-Python完全新手教程
  5. 用户管理界面开源代码_商城系统开源代码对于企业有利还是有弊?
  6. Boost:BOOST_ASSERT用法的测试程序
  7. Raphael JS 矢量客户端开源框架
  8. 【转】.net框架读书笔记---CLR内存管理\垃圾收集(六)
  9. java windows 下载_Windows环境下JDK的下载与安装
  10. 近 5 亿人的隐私,毁于一位程序员之手?
  11. 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的...
  12. Nacos初探(3)-- 服务发现原理解析
  13. 【项目经理之修炼(9)】《初级篇》谦虚也是可以修炼的
  14. 源码安装mysql初始化报错_源码安装MySQL5.6.39后,修改配置文件启动报错
  15. 安徽大学836数字电路与逻辑设计考研历年真题库资料
  16. 根据输入数字显示对应的英文星期名称缩写
  17. HTML/CSS 长度单位 px和pt的区别
  18. Service的两种启动方式
  19. 百度App性能优化工具篇 - Thor原理及实践
  20. VM虚拟机安装篇·VMware Workstation Pro(虚拟机)安装Win10操作系统(图文介绍超详细)

热门文章

  1. TSA-Net论文详解
  2. tkinter-Entry详解
  3. C语言中的文件是流式文件吗,c语言文件流
  4. 飞扬的小鸟JavaScript实现
  5. DXT纹理压缩格式解析
  6. 关于ubuntu16.04 安装过程中卡住问题解决方法
  7. epub图书_使用EPUB构建数字图书
  8. 腾讯视频真实下载地址获取教程(一段代码即可搞定)
  9. 简介企业如何通过企业erp系统实现智能化管理?
  10. 白帽子-高端信息安全培训(攻防技术、渗透测试、安全产品、安全标准、风险评估、等级保护、项目实战)...