我想画出以下解决方案:
J1(x)/(x * J0(x))+ K1(y)/(y * K0(y))= 0
使用Python
如果plot_implicit
中的sympy
通过这种方式与Bessel函数一起使用:
plot_implicit(Eq(besselj(1,x)/(x*besselj(0,x))+besselk(1,y)/(y*besselk(0,y))))
这就是我想要的东西。但这对我不起作用-可能plot_implicit
无法接受besselj
的{{1}}和besselk
(至少不是这样简单)。
我该如何正确做?
编辑如果以上情况令人困惑。调用mpmath
和besselj
无效,因为我使用的是besselk
版本,可以使用它们的mpmath
版本。
在上述版本中,我也缺少tel指出的sympy
。
答案 0 :(得分:1)
实际上,您可以使用Sympy和plot_implicit
来获取所需的内容。您只需要使用Sympy本身提供的Bessel函数的版本。但是,plot_implicit
似乎在使用这种特殊的eq时遇到困难:
import sympy as sym
x,y = sym.symbols('x y')
sym.plot_implicit(sym.Eq(sym.besselj(1,x)/(x*sym.besselj(0,x))+sym.besselk(1,y)/(y*sym.besselk(0,y)), 0), adaptive=False, points=100)
输出:
我也收到警告:
/Users/tel/git/sympy/sympy/plotting/experimental_lambdify.py:165: UserWarning: The evaluation of the expression is problematic. We are trying a failback method that may still work. Please report this as a bug.
warnings.warn('The evaluation of the expression is'
您可以通过增加对points
的调用中implicit_plot
arg的值来提高结果的准确性。请注意,如果将其增加很多,可能要花费很长时间(例如直到太阳烧掉)。