[英]Armadillo C++ LU decomposition
我正在使用Armadillo C ++库来求解中/大尺寸(1000-5000个方程)的线性系统。
由于我必须解决不同的线性系统
AX = b的
在其中A始终相同而B发生变化的情况下,我只希望LU分解A一次,然后将LU分解重用不同的b。 不幸的是,我不知道如何在犰狳中执行这种操作。
我所做的只是A矩阵的LU分解:
arma::mat A;
// ... fill the A matrix ...
arma::mat P,L,U;
arma::lu(L, U, P, A);
但是现在我想使用矩阵P,L和U来求解具有不同b向量的几个线性系统。
请问你能帮帮我吗?
由于A = Pt()*L*U
(其中的均等值仅由于舍入误差而近似),因此在Pt()*L*U*x = b
求解x
要求置换B
行并执行正向和反向替换:
x = solve(trimatu(U), solve(trimatl(L), P*b) );
由于犰狳中缺少真正的三角求解器,并且缺乏执行行置换的快速方法,因此,相对于直接调用相关的计算LAPACK子例程而言,此过程将不是很有效。
一般建议是避免在更高版本的库(如犰狳)中进行显式LU分解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.