最近我一直在努力使用Fortran解决一些数学问题 . 在我看来,线性矩阵方程:
AX-XA=B
其中A和B是已知的n * n矩阵,X是需要求解的 . 我知道这看起来像一个典型的Lyapunov方程 . 但是,为了解决这个方程空间友好,可以使用迭代方法得到Kronecker乘积时X的数值结果:
A*I-I*A(T)
是非单数的(T表示转置) .
不幸的是,这不是我的情况 . 我的问题中的Kronecker产品是单数的 . 因此,我不能使用空间友好的迭代方法来解决问题,但使用一种非常耗费空间的方法,可以显式生成和存储Kronecker产品!然后我使用矩阵算法的Moore-Penrose伪逆生成这个巨大矩阵的伪逆,并使用库矩阵 - 向量乘法例程来求解该方程 .
对于小矩阵,这没关系 . 但是当矩阵的大小增加时(例如当n达到几百)时,我的计算机的内存已经完全耗尽 . 任何人都可以帮助这个,以便我可以使用空间友好的算法来解决这个问题?非常感谢你 .
小号
1 回答
这不是一个严格的答案,但是它会帮助你取得一些进展 . 如果我正确理解你的问题你想要解决一个西尔维斯特方程,就像这里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/
祝你好运:)