Python Sympy:如何显示导致被零除的条件?
如果你简化像Python Sympy:如何显示导致被零除的条件?,python,sympy,Python,Sympy,如果你简化像x/x这样的东西,它会产生1,但是如果有一种方法可以让它在x不是0时说1,那就好了 一个更严肃的例子:我想对一列中包含符号的矩阵进行行缩减,并查看符号的哪些值使其中一个条目为零。以下是我的代码和输出: g, h, k = symbols('g h k') A = Matrix([[1,-4,7,g],[0,3,-5,h],[-2,5,-9,k]]) A.rref() 这导致了|矩阵|(((1 0 1/3 0)(0 1-5/3 0)(0 0 1)))|(0 1 3)但右下角条目中的1
x/x
这样的东西,它会产生1
,但是如果有一种方法可以让它在x不是0时说1,那就好了
一个更严肃的例子:我想对一列中包含符号的矩阵进行行缩减,并查看符号的哪些值使其中一个条目为零。以下是我的代码和输出:
g, h, k = symbols('g h k')
A = Matrix([[1,-4,7,g],[0,3,-5,h],[-2,5,-9,k]])
A.rref()
这导致了|矩阵|(((1 0 1/3 0)(0 1-5/3 0)(0 0 1)))|(0 1 3)
但右下角条目中的1
实际上是简化(2g+h+k)/(2g+h+k)
的结果,我只知道这一点,因为我是手工做的。我想让它告诉我,只有当(2g+h+k)不是零时,这才有效我在这里写了一个函数,可以做这种事情:
不幸的是,我还没有来得及将其纳入Symphy,围绕它应该返回什么以及它可以在Symphy中使用的位置,还有一些问题需要解决
在任何情况下,您都可以:
In [5]: eqs = list(A * Matrix([x, y, z, -1]))
In [6]: eqs
Out[6]: [-g + x - 4⋅y + 7⋅z, -h + 3⋅y - 5⋅z, -k - 2⋅x + 5⋅y - 9⋅z]
In [7]: linsolve_cond(eqs, [x, y, z])
Out[7]:
⎧⎧⎛ 4⋅h τ₀ h 5⋅τ₀ ⎞ ⎫
⎪⎨⎜g + ─── - ──, ─ + ────, τ₀⎟ | τ₀ ∊ ℂ⎬ for 6⋅g + 3⋅h + 3⋅k = 0
⎨⎩⎝ 3 3 3 3 ⎠ ⎭
⎪
⎩ ∅ otherwise
欢迎对其工作情况的任何反馈(最好是在github上,而不是在这里)