python SymPy:如何创建符号lambda函数?

dhxwm5r4  于 2024-01-05  发布在  Python
关注(0)|答案(2)|浏览(124)

例如,我有这样的表达式:

  1. x = Symbol('x')
  2. f = sin(x) * x

字符串
我希望下面的代码能够工作:

  1. >>> a = Symbol('a')
  2. >>> f(a)
  3. TypeError: 'Mul' object is not callable


我可以把这个表达式转换成一个可以处理数字的lambda函数:

  1. >>> f = lambdify(x, f)
  2. >>> f(10)
  3. -5.440211108893697


但它不适用于符号:

  1. >>> f = lambdify(x, f)
  2. >>> f(a)
  3. TypeError: loop of ufunc does not support argument 0 of type Symbol which has no callable sin method


我知道 *.subs方法,但我对这个符号感兴趣:

  1. >>> a = Symbol('a')
  2. >>> f(a)


怎么做?

mklgxw1f

mklgxw1f1#

您可能正在寻找.subs()

  1. >>> x, a = symbols("x a")
  2. >>> f = sin(x) * x
  3. >>> f
  4. x*sin(x)
  5. >>> f.subs(x, a)
  6. a*sin(a)
  7. >>> f.subs(x, parse_expr("ln(z)"))
  8. log(z)*sin(log(z))

字符串

xqnpmsa8

xqnpmsa82#

我刚刚学习了一个选项,使用SymPy Lambda函数

  1. import sympy as sp
  2. x, a = sp.symbols("x a")
  3. f = sp.Lambda(x, sp.sin(x) * x)
  4. print(f(1))
  5. print(f(a))

个字符

相关问题