Итак, я создаю кусочную функцию, например:
x= sp.symbols('x')
f = sp.Piecewise(
(1, x==0),
(sp.sin(x)*(x+1)/x, True))
но если я заменю x
на 0
, я получу nan
:
f.subs(x,0)
nan
Итак, первый вопрос: почему ==
плохо работает с sympy.Piecewise
?
Ну, я изменил это на следующее:
f = sp.Piecewise(
(sp.sin(x)*(x+1)/x, sp.And(x < 0, x > 0)),
(1, True))
И это работает вроде.
Следующее, что я хотел бы сделать, - это вычислить производную функции, используя ее определение в x = 0
: мне нужно вычислить предел:
Итак, мне нужно вычислить это в x = 0
, я кодирую это:
Δx = sp.symbols('Δx')
expr = f.subs(x, Δx)/Δx
sp.limit(expr, Δx, 0)
Но он выдает oo
, что означает бесконечность. И это не совсем так, потому что, если я вызову функцию diff
, я получу 0
, что в некотором роде верно (при x = 0
производная f
равна 0
):
sp.diff(f, x).subs(x,0)
0
Может кто-нибудь сказать мне, что не так с моим кодом и как я могу это исправить. Спасибо.