有没有一种在sympy中解决对数函数并且无需使用ConditionSet得出答案的方法?

4

我有一个只含有一个变量的方程并想要得到'y'的值。但是我只需要返回条件集合(ConditionalSet)。那么有没有什么方法可以得到答案或者我的代码出现了错误?

import sympy as sp

y = sp.symbols('y', real = True)
f = 5.0*y - 5.0*y/(y**2 + 36.0) - 0.397887357729738*sp.log((-2.0*y**2 - 1.0*y - 72.0)**2/(y**2 + 36.0)**2 + 36.0/(y**2 + 36.0)**2) + 0.397887357729738*sp.log((y - 2.0)**2 + 36.0)
eq = sp.Eq(f,-18.435561204278)
p = sp.solveset(eq, domain=sp.S.Reals)
print p
1个回答

1

当你处理单变量表达式时,如果无法得到解(因为它过于非线性),建议使用nsolve只给出数值解:

>>> from sympy import nsolve
>>> yy = nsolve(eq, 0); yy
-4.00000000000000

当你尝试将此替换为eq时,你会得到False。但是,将eq重写为一个表达式,以查看你实际上离0有多近:

>>> from sympy import Add
>>> g = eq.rewrite(Add)
>>> g.subs(y, yy)
1.66533453693773e-16

注意:不必使用Eq编写方程式。您可以直接使用f +18.435561204278,即将Eq(x, y)求解为x - y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接