Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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 Sympy:如何显示导致被零除的条件?_Python_Sympy - Fatal编程技术网

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上,而不是在这里)