Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 求解C*M=N(C,M和N是矩阵),其中M是已知的,N的结构在辛中给出_Python_Linear Algebra_Sympy_Matrix Multiplication_Linear Equation - Fatal编程技术网

Python 求解C*M=N(C,M和N是矩阵),其中M是已知的,N的结构在辛中给出

Python 求解C*M=N(C,M和N是矩阵),其中M是已知的,N的结构在辛中给出,python,linear-algebra,sympy,matrix-multiplication,linear-equation,Python,Linear Algebra,Sympy,Matrix Multiplication,Linear Equation,我遇到了这个矩阵乘法问题,其中M是一些具有已知值的非奇异3x3矩阵(即M=sympy。矩阵([[1,0,0],[0,2,0],[0,0,3]])C是一个要确定的3x3矩阵,N的形式如下: 1.N的第一行和第三行与C相同(例如N.row(0)[i]=C.row(0)[i]表示0>func() ({(x+y-z,-x/2+2*y-3*z/2,-y+z)},{(-3,-17/2,6)},{(a+b-c,-a/2+2*b-3*c/2,-b+c)}) 我不想说我理解你的代码,但解决方案实际上很容易猜测:第

我遇到了这个矩阵乘法问题,其中M是一些具有已知值的非奇异3x3矩阵(即M=sympy。矩阵([[1,0,0],[0,2,0],[0,0,3]])C是一个要确定的3x3矩阵,N的形式如下: 1.N的第一行和第三行与C相同(例如N.row(0)[i]=C.row(0)[i]表示0>func() ({(x+y-z,-x/2+2*y-3*z/2,-y+z)},{(-3,-17/2,6)},{(a+b-c,-a/2+2*b-3*c/2,-b+c)})
我不想说我理解你的代码,但解决方案实际上很容易猜测:第一行和第三行
C
N
必须是
M
的左特征向量,特征值
1
,在一般情况下不存在或必须为零。中间行的要求由
C
解决因为
M
是非奇异的,所以这是唯一的解决方案

让我们使用好的旧numpy以数字形式检查:

import numpy as np
M = np.random.random((3, 3))
M
# array([[ 0.39632944,  0.82429087,  0.88705214],
#        [ 0.39092656,  0.63228762,  0.54931835],
#        [ 0.76935833,  0.40833527,  0.46202912]])
C = np.outer((0,1,0),(1,1,1))
C
# array([[0, 0, 0]
#        [1, 1, 1],                                              
#        [0, 0, 0]])
N = np.outer((0,1,0),M.sum(0))
N
# array([[ 0.        ,  0.        ,  0.        ],
#        [ 1.55661432,  1.86491377,  1.89839961],
#        [ 0.        ,  0.        ,  0.        ]])
np.allclose(C @ M , N)
# True

谢谢你的洞察力