如何访问 Sympy 中的所有矩阵元素并将它们与另一个矩阵进行比较(即大于或小于)?
How to access all matrix elements in Sympy and compare them to another matrix (i.e. greater than or less than)?
我正在寻找一种方法,使用 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'
有人可以帮我指引正确的方向吗?
似乎唯一的方法是在 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 帮助找到这个解决方案! :)
我正在寻找一种方法,使用 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'
有人可以帮我指引正确的方向吗?
似乎唯一的方法是在 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 帮助找到这个解决方案! :)