在Python代码中输入符号函数
我在想,是否有办法在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代码混合在一起使用。
这个软件包比较大,但我使用过,感觉很好。它是免费的,而且是开源的。