置换矩阵分解

从Eigen 3.3开始,LU,Cholesky和QR分解可以在适当的位置运行,即直接在给定的输入矩阵内运行。 在处理大型矩阵时,或者当可用内存非常有限时(嵌入式系统),此功能特别有用。为此,必须使用Ref <>矩阵类型实例化相应的分解类,并且必须使用输入矩阵作为参数来构造分解对象。 作为一个例子,让我们考虑使用部分旋转的就地LU分解。

这里,lu对象计算并存储由矩阵A保持的存储器中的L和U因子。因此,A的系数在因子分解期间被破坏,并且由L和U因子代替,因为可以验证:

由于存储器在A和lu之间共享,因此修改矩阵A将使lu无效。 通过修改A的内容并尝试再次解决初始问题,可以轻松验证这一点:

请注意,调用compute不会更改lu对象引用的内存。 因此,如果使用不同于A的另一个矩阵A1调用计算方法,则不会修改A1的内容。 这仍然是将用于存储矩阵A1的L和U因子的A的内容。 这可以很容易地验证如下:

矩阵A1不变,因此可以求解A1 * x = b,并直接检查残差而不需要A1的任何副本:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值