0

我正在寻找一种方法,通过使用 Sympy 在while 循环中将矩阵中的所有元素与另一个相同大小的矩阵进行比较。

我知道 Sympy 矩阵的奇异元素可以通过以下方式进行比较(例如比较第一个元素):

import sympy as sp
from sympy.interactive import printing
from sympy import Eq, solve_linear_system, Matrix 

s = Matrix([2, 2])
e = Matrix([1, 1])


while s[0] > e[0]: #This works
    print('Working')
else:
    print('Not working')

但我希望将所有矩阵元素相互比较。我尝试执行此代码,但出现错误:

import sympy as sp
from sympy.interactive import printing
from sympy import Eq, solve_linear_system, Matrix 

s = Matrix([2, 2])
e = Matrix([1, 1])


while s > e: #This does not work and gives an error
    print('Working')
else:
    print('Not working')

收到的错误是:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-203350991a18> in <module>
      7 
      8 
----> 9 while s > e: #Works
     10     print('Working')
     11 else:

TypeError: '>' not supported between instances of 'MutableDenseMatrix' and 'MutableDenseMatrix'

有人可以帮助指导我正确的方向吗?

4

1 回答 1

0

似乎在 Sympy 中将一个矩阵中的所有元素与另一个矩阵中的所有元素进行比较的唯一方法必须使用 while 循环。请参阅下面的代码以了解其工作原理,我使用了两个矩阵,每个矩阵具有三个元素,因此无论元素数量如何,您都可以看到它确实以这种方式工作。

import sympy as sp
from sympy.interactive import printing
from sympy import Matrix 

s = Matrix([2, 2, 2])
e = Matrix([1, 1, 1])

while (s[0, 0] >  e[0, 0]) and (s[1,0] >  e[1, 0]) and (s[2,0] >  e[2, 0]): #This works
    print('Working')
    break
else:
    print('Not working')

希望这可以帮助。非常感谢@OscarBenjamin 帮助找到此解决方案!:)

于 2021-07-23T06:42:53.250 回答