深蓝学院视觉SLAM第二次习题

第二次习题来啦,线性代数和矩阵分析忘的也太快了

1.熟悉 Eigen 矩阵运算

本次习题,你需要使⽤ Eigen 库,编写程序,求解⼀个线性⽅程组。为此,你需要先了解⼀些有关线性⽅程组数值解法的原理。设线性⽅程 Ax = b,在 A 为⽅阵的前提下,请回答以下问题:

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

A满秩,行列式不为0,r(A|b)=r(A)

  1. ⾼斯消元法的原理是什么?

通过用初等行变换将增广矩阵化为行阶梯阵,然后通过回带求解线性方程组的解。

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

任意一个满秩矩阵可唯一分解成一个正规正交矩阵Q与上三角形矩阵R A= QR

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

Cholesky 分解是把一个实对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解。
一个实对称矩阵A正定,即存在可逆矩阵C,使得 A=C.transpose()*C在这里插入图片描述

  1. 编程实现 A 为 100 × 100 随机矩阵时,⽤ QR 和 Cholesky 分解求 x 的程序。你可以参考本次课⽤到的 useEigen 例程。

Cholesky 对对称正定矩阵才有效,所以需要转化一下,100x100的矩阵看不出效果,所以试了一下3x3 的矩阵

#include<iostream>
#include<ctime>
using namespace std;

#include<Eigen/Core>
#include<Eigen/Dense>
using namespace Eigen;

#define MATRIX_SIZE 100

int main(int argc,char** argv)
{
   
  
   Matrix<double,Dynamic,Dynamic> matrix_pNN;
   matrix_pNN=MatrixXd::Random(MATRIX_SIZE,MATRIX_SIZE);
   //matrix_pNN=MatrixXd::Random(3,3);
   Matrix<double,Dynamic,1>v_Nd=MatrixXd::Random(MATRIX_SIZE,1);
   //Matrix<double,Dynamic,1> v_Nd=MatrixXd::Random(3,1);
   Matrix<double,Dynamic,Dynamic> matrix_NN;
   matrix_NN=matrix_pNN.transpose()*matrix_pNN;
   cout<<"100x100 矩阵
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值