使用C++ Eigen库求解线性方程组Ax=b

1 篇文章 0 订阅
1 篇文章 0 订阅

Eigen(http://eigen.tuxfamily.org)是常用的 C++ 矩阵运算库,具有很高的运算效率。大部分 需要在 C++ 中使用矩阵运算的库,都会选用 Eigen 作为基本代数库,例如 Google Tensorflow,Google Ceres,GTSAM 等。本次编程实现***A***为100X100随机矩阵时,用QR和Cholesky分解求x。同时总结了一些有关线性方程组数值解法的原理。

正文:

1. 在什么条件下,x有解且唯一?

在这里插入图片描述

2. 高斯消元法的原理是什么?

高斯消元主要用来求解线性方程组,也可以求解矩阵的秩,矩阵的逆。其实高斯消元的过程就是手算解方程组的过程:加减消元,消去未知数,如果有多个未知数,就一直消去,直到得到类似kx=b(k和b为常数,x为未知数)的式子,就可以求解出未知数x,然后我们回代,依次求解出各个未知数的值,就解完了方程组。
换句话说,分两步:

  1. 加减消元
  2. 回代求未知数值

以下有高斯消元C++模版:
https://blog.csdn.net/pengwill97/article/details/77200372

3. QR分解的原理是什么?

QR 分解是三种将矩阵分解的方式之一。这种方式,把矩阵分解成一个正交矩阵Q与一个上三角矩阵R的积。
在这里插入图片描述

对于Ax=b,
直接求A的逆有时过于复杂,因此使用QR分解算法:
在这里插入图片描述
详细定理见:
https://blog.csdn.net/xyz599/article/details/53759527

4. Cholesky分解的原理是什么?

Pass,整理中。

5. Eigen编程实例

编程实现***A***为100X100随机矩阵时,用QR和Cholesky分解求x。
在这里插入图片描述
输出结果:
Cholesky分解效率很高。
在这里插入图片描述

  • 13
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值