Armadillo之求矩阵的逆(inverse)

求一个矩阵的逆(inverse or multiplicative inverse)使用矩阵的.i()方法或用inv()函数

m.i() //返回m的逆

1 若m不是方正的(square),则函数抛出std::logic_error异常。

2 如果m是奇异的(singular),则输出的矩阵将被重置,且抛出std::runtime_error异常

inv(m)   //返回m的逆
inv(A,m) //A被设为m的逆

1 若m不是方正的(square),则函数抛出std::logic_error异常。

2 如果m是奇异的(singular),则输出的矩阵将被重置,且抛出std::runtime_error异常,同时inv(A,m)返回值将是false

代码:

 mat m = "2,4;3,1;";
 mat m1 = m.i();
 m1.print();
 cout << "-----" << endl;
 mat m2 = inv(m);
 m2.print();
 cout << "-----" << endl;
 mat A;
 inv(A, m);
 A.print();

输出:

081308_b9sg_1446434.png

如果矩阵m已经知道是对称的(symmetric),方阵的(square),正数的(positive),有限的(definite)则求m的逆使用inv_sympd函数将大大加快运算速度:

A=inv_sympd(m)
inv_sympd(A,m)

以上两种方法运行后A都是m的逆。

1 使用这个函数要启用LAPACK

2 若m不是方正的(square),则函数抛出std::logic_error异常。

3 现在inv_sympd不检查矩阵m是否是对称,方阵,正数,有限的。

4 如果m是奇异的(singular),则输出的矩阵将被重置,且抛出std::runtime_error异常,同时inv_sympd(A,m)返回值将是false


转载于:https://my.oschina.net/u/1446434/blog/296976

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值