python sympy lambdify 在函数内部不工作
python sympy lambdify not working inside function
我正在尝试编写一个将文字函数作为参数的函数:
def derive(x, y):
x = symbols(x)
y = symbols(y)
return lambdify(x, y)
derive(5, 'x**2')
这个returns语法错误:
File "<lambdifygenerated-32>", line 1
def _lambdifygenerated(25.0):
^
SyntaxError: invalid syntax
如果我写(函数范围外):
f = lambdify(x, x**2)
f(5)
有效。
感谢您对此提供的任何帮助。
在 sympy 中,您可以通过 diff()
获得函数的导数。 .subs(x, 5)
为 x
填写值 5
。一个例子:
from sympy.abc import x
f = x**2
print(f.diff(x).subs(x,5))
这是计算给定函数在给定值下的导数的函数的样子。 evalf()
可用于消除符号部分(例如为 2*pi
或 Sqrt(5)
提供数字近似值,sympy 标准希望以其确切的符号形式保留)。
def derive_and_evaluate(x, f, xval):
return f.diff(x).subs(x, xval).evalf()
derive_and_evaluate(x, x**2, 5)
如果你需要对很多 x 值求同一个导数,你可以这样做:
from sympy import lambdify
g = lambdify(x, f.diff(x)) # now `g` is a numpy function with one parameter
或者,如果您想要一个进行推导并转换为 numpy 形式的函数:
def derive_and_lambdify(x, f):
return lambdify(x, f.diff(x))
g = derive_and_lambdify(x, x**2)
print(g(5))
从此以后,你可以像使用其他numpy函数一样使用g
。这是一个更详细的例子:
from sympy import lambdify, sin
from sympy.abc import x
f = sin(1 / (1 + x ** 2))
g = lambdify(x, f.diff(x))
import numpy as np
from matplotlib import pyplot as plt
xs = np.linspace(-5, 5, 100)
ys = g(xs)
plt.plot(xs, ys)
plt.show()
我正在尝试编写一个将文字函数作为参数的函数:
def derive(x, y):
x = symbols(x)
y = symbols(y)
return lambdify(x, y)
derive(5, 'x**2')
这个returns语法错误:
File "<lambdifygenerated-32>", line 1
def _lambdifygenerated(25.0):
^
SyntaxError: invalid syntax
如果我写(函数范围外):
f = lambdify(x, x**2) f(5)
有效。 感谢您对此提供的任何帮助。
在 sympy 中,您可以通过 diff()
获得函数的导数。 .subs(x, 5)
为 x
填写值 5
。一个例子:
from sympy.abc import x
f = x**2
print(f.diff(x).subs(x,5))
这是计算给定函数在给定值下的导数的函数的样子。 evalf()
可用于消除符号部分(例如为 2*pi
或 Sqrt(5)
提供数字近似值,sympy 标准希望以其确切的符号形式保留)。
def derive_and_evaluate(x, f, xval):
return f.diff(x).subs(x, xval).evalf()
derive_and_evaluate(x, x**2, 5)
如果你需要对很多 x 值求同一个导数,你可以这样做:
from sympy import lambdify
g = lambdify(x, f.diff(x)) # now `g` is a numpy function with one parameter
或者,如果您想要一个进行推导并转换为 numpy 形式的函数:
def derive_and_lambdify(x, f):
return lambdify(x, f.diff(x))
g = derive_and_lambdify(x, x**2)
print(g(5))
从此以后,你可以像使用其他numpy函数一样使用g
。这是一个更详细的例子:
from sympy import lambdify, sin
from sympy.abc import x
f = sin(1 / (1 + x ** 2))
g = lambdify(x, f.diff(x))
import numpy as np
from matplotlib import pyplot as plt
xs = np.linspace(-5, 5, 100)
ys = g(xs)
plt.plot(xs, ys)
plt.show()