私は、ユーザーからの入力を受け取り、解析し、結果の式に対していくつかの置換を実行したいと考えています。私はsympy.parsing.sympy_parser.parse_expr
を使用して、ユーザーからの任意の入力を解析できることを知っています。しかし、関数定義を代入するのに問題があります。このようにして補助金を出すことは可能ですか?もしそうなら、どうすればいいですか?代用関数呼び出しwith sympy
全体的な目標は、ユーザーがx
の機能を提供できるようにすることです。この機能は、データの格納に使用されます。 parse_expr
は私にその道の95%を与えますが、以下に示すような便利な拡張を提供したいと思います。
import sympy
from sympy.parsing.sympy_parser import parse_expr
x,height,mean,sigma = sympy.symbols('x height mean sigma')
gaus = height*sympy.exp(-((x-mean)/sigma)**2/2)
expr = parse_expr('gaus(100, 5, 0.2) + 5')
print expr.subs('gaus',gaus) # prints 'gaus(100, 5, 0.2) + 5'
print expr.subs(sympy.Symbol('gaus'),gaus) # prints 'gaus(100, 5, 0.2) + 5'
print expr.subs(sympy.Symbol('gaus')(height,mean,sigma),gaus) # prints 'gaus(100, 5, 0.2) + 5'
# Desired output: '100 * exp(-((x-5)/0.2)**2/2) + 5'
これは、python 2.7.9、sympy 0.7.5を使用して行われます。