Как я могу определить рекурсивную функцию в Sympy, например, функцию Фибоначчи, чтобы ее движок мог выполнять ее упрощения? Т.е. f(0)=0, f(1)=1, f(x)=f(x-1) + f(x-2)
Похоже, что может потребоваться Piecewise
от Sympy, но я не понимаю, как выразить рекурсию.
Я получил это далеко:
from sympy import *
x=symbols('x')
f=Function('f')
f=Piecewise((0, Eq(x,0)), (1, Eq(x,1)), (f(x-1)+f(x-2), True))
f
f.subs(x,10)
Оценка строки f
выглядит хорошо:
f ">
Но последняя строка оценивается как f(8)+f(9)
, что, конечно, не то, что я хочу, потому что ее нельзя упростить в дальнейшем.
Я знаю, что функция Фибоначчи уже определена, но она мне нужна для чего-то подобного, а не для самой Фибоначчи.