如何求解线性矩阵方程:AX-XA = B有效?

时间:2014-04-10 12:05:20

标签: algorithm matrix fortran

最近我一直在使用Fortran解决一些数学问题。在我看来,线性矩阵方程:

AX-XA=B

其中A和B是已知的n * n矩阵,X是需要求解的。我知道这看起来像典型的Lyapunov方程。但是,为了解决这个方程空间友好问题,可以使用迭代方法得到Kronecker乘积时X的数值结果:

A*I-I*A(T)

是非单数的(T表示转置)。

不幸的是,这不是我的情况。我的问题中的Kronecker产品是单数的。因此,我不能使用空间友好的迭代方法来解决问题,但使用一种非常耗费空间的方法,可以显式生成和存储Kronecker产品!然后我使用矩阵算法的Moore-Penrose伪逆生成这个巨大矩阵的伪逆,并使用库矩阵 - 向量乘法例程来求解该方程。

对于小矩阵,这没关系。但是当矩阵的大小增加时(例如,当n增加到几百)时,我的计算机的内存已经完全耗尽。任何人都可以帮助这个,以便我可以使用空间友好的算法来解决这个问题?非常感谢你。

取值

1 个答案:

答案 0 :(得分:0)

这不是一个严格的答案,但是它会帮助你取得一些进展。如果我正确理解你的问题,你想解决一个西尔维斯特方程,就像在这里http://en.wikipedia.org/wiki/Sylvester_equation

您是否尝试过LAPACK,可能:http://www.netlib.org/lapack/lawn41/node112.html - >搜索TGSY2

或者类似的东西:http://manpages.ubuntu.com/manpages/precise/man3/stgsyl.3lapack.html

甚至可能:http://www8.cs.umu.se/~isak/recsy/

祝你好运:)