import numpy as np
import matplotlib.pyplot as plt

def fonction(x):
    return 3*x**4-4*x**3-12*x**2-0*x-3

def gradient_fonction(x):
    return 12*x**3-12*x**2-24*x

xvals=np.arange(-3, 4, 0.1)
yvals=fonction(xvals)
plt.plot(xvals, yvals)

x=np.random.random_integers(-3, 3)+np.random.rand(1)[0]
i=0
print("itération: {}  x={}".format(i, x))
lr=0.015
while True:
    plt.scatter(x, fonction(x), color='#FF0000')
    plt.draw()
    plt.pause(0.5)
    x=x-lr*gradient_fonction(x)
    i+=1
    print("itération {:3d}  -> x={}".format(i, x))
