最近我一直在使用 Fortran 解决一些数学问题。我想到一个线性矩阵方程:
其中和是已知的矩阵,而是需要求解的矩阵。我知道这看起来像一个典型的李雅普诺夫方程。然而,为了对空间友好地求解这个方程,可以使用一种迭代的方式来获得当 Kronecker 乘积时
是非奇异的。
不幸的是,这不是我的情况。我的问题中的克罗内克产品是单一的。因此,我不能使用空间友好的迭代方式来解决问题,而是使用非常占用空间的方法来显式生成和存储 Kronecker 产品!!!然后我使用矩阵算法的 Moore-Penrose 伪逆来生成这个巨大矩阵的伪逆,并使用库矩阵向量乘法程序来求解方程。
对于小矩阵,这没问题。但是当矩阵的大小增加时(例如当 n 上升到几百)我的计算机的内存已经完全用完了。任何人都可以帮助解决这个问题,以便我可以使用空间友好的算法来解决这样的问题?非常感谢。