import matplotlib.pyplot as plt
import numpy as np

# Exemple 2
def f(n,x): return (1-x)*n*n*x**n
X=np.linspace(0,1,222)

plt.title('les unes sur les autres')
for n in range(33):
    plt.plot(X,[f(n,x) for x in X])
    plt.pause(1)

for n in range(33):
    plt.title('les unes après les autres')
    plt.plot(X,[f(n,x) for x in X],label="n = {}".format(n))
    plt.ylim(0,12)
    plt.legend(loc="upper left")
    plt.pause(0.5)
    plt.clf()
##

# Exemple 3
def f(n,x): return sum([(-x)**k/k for k in range(1,n)])
X=np.linspace(0,1,99)

plt.title('Représentation des sommes partielles')
for n in range(1,9):
    plt.plot(X,[f(2*n,x) for x in X], color='r')
    plt.plot(X,[f(2*n+1,x) for x in X], color='b')
    plt.plot(X,[-np.log(1+x) for x in X], color='g', linewidth=2)
plt.show()

plt.title('Représentation des restes')
for n in range(2,15):
    plt.plot(X,[f(2*n,x)+np.log(1+x) for x in X], color='r')
    plt.plot(X,[f(2*n+1,x)+np.log(1+x) for x in X], color='b')
    plt.plot(X,[0 for x in X], color='g', linewidth=2)
plt.show()
##

# Exemple 4
plt.title('Représentation des sommes partielles')
def f(n,x): return sum([1/(k+k*k*(x-k)**2) for k in range(1,n+1)])
X=np.linspace(0,16,222)
for n in range(1,16):
    plt.plot(X,[f(n,x) for x in X])
plt.grid()
plt.xticks(list(range(17)))
plt.show()

plt.title('Représentation des restes')
def f(n,x): return sum([1/(k+k*k*(x-k)**2) for k in range(n+1,99)])
X=np.linspace(0,16,222)
for n in range(1,16):
    plt.plot(X,[f(n,x) for x in X])
plt.grid()
plt.xticks(list(range(17)))
plt.show()
##

