在Python代码中输入符号函数

3 投票
2 回答
9436 浏览
提问于 2025-04-17 18:50

我在想,是否有办法在Python代码中输入一个符号函数呢?

比如在我的代码里,我有:

from sympy import *
import numpy as np
import math
myfunction = input("enter your function \n")
l = Symbol('l')

print myfunction(l**2).diff(l)

如果我输入cos、sin或者exp,输出就会是:-2*l*sin(l**2)

那如果我想让输入的函数更通用一些,比如说一个多项式,或者一个复杂的函数,甚至是结合了cos、sin和exp的函数呢?

2 个回答

11

在语法上,sin + cos 这样的写法并不好用。要让它正常工作,最简单的方法就是给 sympy 一个要计算的 表达式。我们可以让 sympify 来帮忙,把一个字符串转换成 sympy 对象,这样就能轻松处理了:

>>> s = raw_input("enter a formula: ")
enter a formula: sin(x) + x**3
>>> s
'sin(x) + x**3'
>>> f = sympy.sympify(s)
>>> f
x**3 + sin(x)

之后,我们就可以进行替换和计算了:

>>> f.subs({'x': 2})
sin(2) + 8
>>> f.subs({'x': 2}).evalf()
8.90929742682568

另外,你可以查看我在 这里 的回答,里面还有一些其他的小技巧,可以通过一些努力来实现:

>>> f = definition_to_function("f(x) = sin(x) + x**3")
>>> f(3)
27.14112000805987
1

如果你需要对符号函数有很好的支持,可以考虑使用Sage

Sage是一个Python的预处理器,提供了很多数学支持,包括符号函数。你可以把Sage代码和普通的Python代码混合在一起使用。

这个软件包比较大,但我使用过,感觉很好。它是免费的,而且是开源的。

撰写回答