求解矩阵方程耗时比较(直接求逆,Qr分解,LU分解)
测试环境:
- C++
- 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分解)相关推荐
- 【SIMULINK】simulink实现信号矩阵整合、求逆、转置、分解、向量矩阵相乘(非matlab)
[SIMULINK]simulink实现信号矩阵整合.求逆.转置.分解.乘(非matlab) simulink实现信号矩阵,并实现分解 simulink实现信号矩阵求逆 simulink实现信号矩阵转 ...
- 矩阵的各种分解: LU分解, QR分解, 特征分解, 对称对角化, 奇异值分解 SVD
本文主要关注的是有关 "怎样的矩阵能够进行 XX 分解" 的问题,具体分解的实现方式在这里不做归纳. 欢迎访问我的个人主页 zhekaili.github.io,已查看更多的线性代 ...
- 3D数学之矩阵的各种求逆
经过三天的准备终于把矩阵的各种求逆方法以及代码完成了.心里有点小激动,come on,来吧,点燃你的心中的那团火,跟着游戏音乐的律动一起跟我走入神秘的3D世界. 下面介绍三种方法: 1.用伴随矩阵求逆 ...
- 机器学习(十一)——机器学习中的矩阵方法(1)LU分解、QR分解
http://antkillerfarm.github.io/ 因子分析的EM估计(续) 去掉和各参数无关的部分后,可得: ∑i=1mE[logp(x(i)|z(i);μ,Λ,Ψ)]=∑i=1mE[1 ...
- LU分解求线性方程组的解
LU分解是矩阵分解的一种,可以将一个矩阵分解为一个上三角矩阵和一个下三角矩阵的乘积. LU分解可以用来求逆矩阵,解线性方程组等.本文将介绍LU分解求线性方程组的解. 1.定义 如果A是一个方阵,A的L ...
- matlab迭代求解,[基于matlab平台的三种迭代法求解矩阵方程]matlab迭代法求方程的根...
数值分析第二次作业 学院:电子工程学院 基于matlab平台的三种迭代法求解矩阵方程组 求解系数矩阵由16阶Hilbert方程组构成的线性方程组的解,其中右端项为[2877/851,3491/14 ...
- 怎么用计算机求逆矩阵,计算机是怎么求解线性方程的(矩阵乘和求逆)
上回我们说到,高斯老哥用消元法解线性方程,大致步骤呢就是给系数矩阵消元,运气好点呢直接整出上三角系数矩阵,得到方程组的唯一解,运气不行呢,消着消着发现整不出上三角,这时就得再讨论方程是有多解还是无解. ...
- CF438E The Child and Binary Tree(有意思的生成函数 + 多项式求逆 + 多项式开方)
整理的算法模板合集: ACM模板 点我看多项式全家桶(●^◡_◡◡^●) CF438E The Child and Binary Tree 简单的黑题 首先我们发现模数为99824435399824 ...
- 归并排序模板(附求逆序对)
逆序对满足两个条件, i < j 和 ai > aj 归并可以求逆序对, 因为是按顺序加入, 所以右区间加入的时候, 左区间的数满足 i < j, 然后左边还没有加入的数肯定比当前的 ...
最新文章
- 解决toad中number类型小数位数过长按科学计数法显示的问题
- Ubuntu14.04下安装eclipse
- html5 go语言运行环境,GO环境搭建-Go语言中文社区
- python完全新手教程-Python完全新手教程
- 用户管理界面开源代码_商城系统开源代码对于企业有利还是有弊?
- Boost:BOOST_ASSERT用法的测试程序
- Raphael JS 矢量客户端开源框架
- 【转】.net框架读书笔记---CLR内存管理\垃圾收集(六)
- java windows 下载_Windows环境下JDK的下载与安装
- 近 5 亿人的隐私,毁于一位程序员之手?
- 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的...
- Nacos初探(3)-- 服务发现原理解析
- 【项目经理之修炼(9)】《初级篇》谦虚也是可以修炼的
- 源码安装mysql初始化报错_源码安装MySQL5.6.39后,修改配置文件启动报错
- 安徽大学836数字电路与逻辑设计考研历年真题库资料
- 根据输入数字显示对应的英文星期名称缩写
- HTML/CSS 长度单位 px和pt的区别
- Service的两种启动方式
- 百度App性能优化工具篇 - Thor原理及实践
- VM虚拟机安装篇·VMware Workstation Pro(虚拟机)安装Win10操作系统(图文介绍超详细)