Python 辛:求分数

Python 辛:求分数,python,sympy,Python,Sympy,我有一个方程,我需要解一个分数。 我有更复杂的公式要解,但这里有一个最小的例子:以下面的简单函数Y=X*a为例。 我想求解Y/X,所以我希望Y/X=a。 这是代码,它生成一组空的答案 from sympy import * X,Y,a = symbols('X Y a') testEq = Eq(Y,X*a) solve(testEq,Y/X) 我想我误解了什么,谢谢你的帮助 如果子表达式在求解的方程中显示为“原样”,则solve函数可以求解子表达式。例如,在下面的代码中,solve为test

我有一个方程,我需要解一个分数。 我有更复杂的公式要解,但这里有一个最小的例子:以下面的简单函数
Y=X*a
为例。 我想求解
Y/X
,所以我希望
Y/X=a
。 这是代码,它生成一组空的答案

from sympy import *
X,Y,a = symbols('X Y a')
testEq = Eq(Y,X*a)
solve(testEq,Y/X)

我想我误解了什么,谢谢你的帮助

如果子表达式在求解的方程中显示为“原样”,则
solve
函数可以求解子表达式。例如,在下面的代码中,
solve
testEq
返回一个空解,但它为
testEq2
返回正确的解,该解与按照
Y/X
重新排列的等式相同

from sympy import *
X,Y,a = symbols('X Y a')
testEq = Eq(Y,X*a)
solve(testEq,Y/X)
testEq2 = Eq( Y/X, a )
sol = solve(testEq2,Y/X)
这一点也不奇怪或不合理。如果查看
solve
函数的源代码,它使用的代码如下

>>> testEq.has( Y/X ) # returns False
>>> testEq2.has( Y/X ) # returns True
检查我们正在求解的符号(或Symphy对象)是否存在于方程中。如果SymPy必须检查表达式的符号可以组合成子表达式的所有可能方式,那么代码将变得极其复杂,因为可以通过其他方式轻松实现(例如,在本例中,求解
Y
并除以
X

符号计算软件包帮助我们处理复杂的数学方程。但它们不能替代人类的智慧。通常情况下,我们需要引导这些包,帮助他们以我们想要的形式给出答案,同时克服它们的局限性。

在这种情况下,一旦将辅助表达式添加到感兴趣的表达式中,一个
focus
例程就会处理这样的请求:

>>> eq = Eq(y, x*a)
>>> aux = Eq(b, y/x)
>>> focus((aux, eq), b)
{b: a}

这样的例行程序并不能消除人为干预的需要,它只是通过允许用户陈述感兴趣的关系并将其添加到当前方程中来提供帮助,然后从中推断/解决含义。

求解
Y
并将答案除以
X
,这是绝对可能的,可能有点乱。但仍然奇怪的是,它没有按照建议的方式工作,no?Sympy是为变量而不是表达式设计的。您的期望超出了软件包的能力。