사용자로부터 입력을 받아서 구문 분석 한 다음 결과 표현식을 대체하려고합니다. 나는 sympy.parsing.sympy_parser.parse_expr
을 사용하여 사용자의 임의 입력을 구문 분석 할 수 있음을 알고 있습니다. 그러나 함수 정의를 대체하는 데 문제가 있습니다. 이 방법으로 보충을 할 수 있습니까? 그렇다면 어떻게해야합니까?대용 함수 호출을 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를 사용하여 수행됩니다.