求解隐式矩阵方程Python

时间:2014-07-14 02:32:49

标签: python matrix

我有一个问题(可能很傻),我无法回答。

考虑三个矩阵A,B和M.它们都是NxN矩阵和 我也知道A和B是对称的(它们是协方差矩阵)。

我需要使用python从下面的等式 B = M A M ^ {T} 中找到矩阵 M 。 换句话说,如何使用python 求解隐式矩阵方程

这是我对fsolve的尝试:

import scipy
import scipy.optimize
f = lambda M: (np.mat(B)-(np.mat(M)*np.mat(A)*np.mat(M.T)))
M0 = scipy.optimize.fsolve(f, np.identity(57))

我给出了初始猜测的单位矩阵。

问题:

/Users/Simone/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy/matrixlib/defmatrix.pyc in __mul__(self, other)
    339         if isinstance(other, (N.ndarray, list, tuple)) :
    340             # This promotes 1-D vectors to row vectors
--> 341             return N.dot(self, asmatrix(other))
    342         if isscalar(other) or not hasattr(other, '__rmul__') :
    343             return N.dot(self, other)

ValueError: matrices are not aligned

我也尝试过不同的方式:

f = lambda X: ((B) - np.dot(X,np.dot(A,X.T)))  
X0 = scipy.optimize.fsolve(f, np.identity(57))

同样,“矩阵未对齐”。这有点不可能,因为我都是nxn平方矩阵,我所做的任何操作都没有改变尺寸。 我当然检查了

B.shape, 
A.shape, 
np.identity.(57).shape 
((B) - np.dot(X,np.dot(A,X.T))).shape

他们都是一样的!

非常感谢, 西蒙

0 个答案:

没有答案