from sympy import init_printing
init_printing()
import sympy as sym
import numpy as np
def fib(n):
A = np.array([[0,1],[1,1]])
tmp = np.array([0,1])
for i in xrange(1,n):
tmp = tmp.dot(A)
return tmp[1]
print(map(fib, range(15)))
[1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
F, Fx1, Fx2, F0, F1 = sym.symbols("F(x) F(x-1) F(x-2) F(0) F(1)")
print(sym.Eq(F0, 0))
print(sym.Eq(F1, 1))
print(sym.Eq(F, sym.Add(Fx1, Fx2)))
x = sym.Symbol('x')
sym.solve([sym.Eq(F0, 0), sym.Eq(F1, 1), sym.Eq(F, sym.Add(Fx1, Fx2))], [x])
print(sym.solve([x], [x]))
print(sym.solve([x-1], [x]))
print(F.series(x, 0, 5))
F(0) == 0 F(1) == 1 F(x) == F(x-1) + F(x-2) {x: 0} {x: 1} F(x)
from sympy.abc import n
fib = sym.Function('fib')
f = fib(n) - fib(n-1) - fib(n-2)
sym.rsolve(f, fib(n), {fib(0):0, fib(1):1})
from sympy.abc import n
fib = sym.Function('fib')
f = fib(n) - fib(n-1) - fib(n-2)
term = sym.rsolve(f, fib(n), {fib(0):0, fib(1):1})
print(term)
for i in xrange(1,10):
print(term.evalf(subs={n:i}))
sqrt(5)*(1/2 + sqrt(5)/2)**n/5 - sqrt(5)*(-sqrt(5)/2 + 1/2)**n/5 1.00000000000000 1.00000000000000 2.00000000000000 3.00000000000000 5.00000000000000 8.00000000000000 13.0000000000000 21.0000000000000 34.0000000000000