我无法理解以下数值评估。我有一个带有两个变量的函数,r
并且gamma
. 我现在希望将该函数的根绘制为从 0 到 500 的 gamma 函数。我知道如何使用lambdify 来评估一维变量数组上的函数。但是,我不明白如何让 sympy 找到给定变量 gamma 的函数根,然后跨过从 0 到 500 的许多 gamma 值。
import numpy as np
import sympy as sm
import sympy.mpmath as mpmath
from sympy.interactive import printing
printing.init_printing(use_latex=True)
r, gamma = sm.symbols("r gamma")
function = -0.5+(sm.exp(-2*r**2)+sm.exp(-1-r**2*(4+sm.exp(-2*r**2*gamma)))*r**2*gamma)/(sm.exp(2*r**2)+r**2*gamma) #the function with two variables
root_gammazero = sm.nsolve(function.subs(gamma,0),0.1) # this gives r = 0.416277
x_vector = np.linspace(0,500,1000) #step through parameter gamma on x-axis
functionlambdify = sm.lambdify(gamma, sm.nsolve(function.subs(gamma,gamma),r, 0.1), "numpy") #find root for a given gamma and then return that root in the y_vector
y_vector = functionlambdify(x_vector)
如何将变化的变量传递给gamma
lambdify函数。在代码示例中,我通过使用function.subs(gamma,gamma),r, 0.1)
in进行了尝试,functionlambdify = sm.lambdify(gamma, sm.nsolve(function.subs(gamma,gamma),r, 0.1), "numpy")
但它不起作用。
任何帮助是极大的赞赏。
非常感谢!