MATLAB中矩阵乘积相等的高效求解

Efficient solution of matrix product equality in MATLAB

我在 MATLAB 中有以下矩阵方程:

括号里的下标我写的是矩阵大小。 我知道 N、Kt 和 P,需要求解向量 Lambda 的这个方程。

直截了当但 slow/naive 的方法是:

A = N*inv(Kt)*N';
Lambda = A\P;

求解这个方程的最有效方法是什么?通常强烈建议不要在 Matlab 中使用 inv(Kt),那么我可以使用哪些替代方法来解决这个问题?我做过的一个尝试(虽然不知道好不好,我没打过)是:

inv_Kt = Kt\speye(size(Kt));
A = N*inv_Kt*N';
Lambda = A\P;

使用\求逆是普遍推荐的方法。在不利用矩阵的任何特殊结构的情况下,我只是这样做

Lambda=(N*(Kt\N.'))\P