Sympy:解决分数

问题描述 投票:1回答:1

我有一个等式,我需要解决它的一小部分。我有更复杂的公式要解决,但这是一个最小的例子:采取以下简单的函数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)

我想我误会了什么,任何帮助表示赞赏!

python sympy
1个回答
3
投票

solve函数可以求解子表达式,只要它们在求解的等式中“按原样”出现即可。例如,在下面的代码中,solvetestEq返回一个空的解决方案,但它返回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

检查我们正在解决的符号(或者症状对象)是否存在于等式中。如果SymPy必须检查表达式的符号可以组合成子表达式的所有可能方式,那么代码将变得非常复杂,可以通过其他方式轻松实现(例如求解Y并除以X,在这个例子中)。

用于符号计算的包可以帮助我们处理复杂的数学方程。但它们不能代替人类智慧。通常情况下,我们需要指导这些软件包,以帮助他们在解决限制时以我们想要的形式提供答案。

© www.soinside.com 2019 - 2024. All rights reserved.