# -*- coding: utf-8 -*-
"""
Created on Sun Dec 11 19:47:05 2022

@author: EYER
"""

import numpy as np
import matplotlib.pyplot as plt

a = 0
b = np.pi/2
n = 100 ## nombre de subdivisions

def f(x):
    return (np.cos(x))

# lx = np.linspace(a,b,n+1)   ## lx est la liste des xi 
#                             ## il y a bien (n+1) valeurs
#                             ## mais n subdivisions !

dx = (b-a)/n
lx = [i*dx for i in range(0,n+1)] ## lx est la liste des xi 
                                   ## il y a bien (n+1) valeurs
                                   ## mais n subdivisions !
                            
lf = [f(xi) for xi in lx]

plt.plot(lx,lf)

## Dérivée arrière
Dar = []
ni = n
dx = (b-a)/ni
for i in range(1,ni+1):
    Dar.append((f(a+i*dx)-f(a+(i-1)*dx))/dx)
plt.plot(lx[0:-1],Dar)

## Dérivée avant
Dar = []
ni = n
dx = (b-a)/ni
for i in range(0,ni):
    Dar.append((f(a+(i+1)*dx)-f(a+i*dx))/dx)
plt.plot(lx[0:-1],Dar)

## Dérivée mlieu
Dar = []
ni = n
dx = (b-a)/ni
for i in range(1,ni):
    Dar.append((f(a+(i+1)*dx)-f(a+(i-1)*dx))/(2*dx))
plt.plot(lx[1:-1],Dar)