3

我只是想知道是否有一种方法可以在 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 的组合函数,该怎么办?

4

2 回答 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
于 2013-03-12T18:39:56.547 回答
1

如果您需要对符号函数的良好支持,您应该考虑使用sage

它是 python 的预处理器,具有许多数学支持,包括符号函数。Sage 代码可以与普通的 python 代码混合使用。

包裹很大,但我有很好的经验。它是免费和开源的。

于 2013-03-12T18:31:17.417 回答