Легко понять, что
from sympy import *
x = symbols('x', real=True)
y = sin(x)
dy = y.diff(x)
ddy = y.diff(x, 2)
print(y.subs(x, pi/2), dy.subs(x, pi/2), ddy.subs(x, pi/2), )
будет выводить 1 0 -1
сейчас, если выражение y не предопределено, но требуется для ввода пользователем, например
y = input('please input expression about x: ')
y = sympify(y)
dy = y.diff(x)
ddy = y.diff(x, 2)
но если пользователь снова введет sin(x)
,
print(y.subs(x, pi/2), dy.subs(x, pi/2), ddy.subs(x, pi/2), )
скажет
sin(x) 0 0
и
print(y.subs('x', pi/2), dy.subs('x', pi/2), ddy.subs('x', pi/2), )
говорит
1 0 0
поэтому sympify не знает x
как символ, подобный тому, что делает sympy.sin(x)
.Так как мы можем это исправить?спасибо