diff --git a/ISC_421_Controle_4_Saroukhanian_Iliya.py b/ISC_421_Controle_4_Saroukhanian_Iliya.py
index ded5ac46edecc324d271fb75ae25126fcfd0097a..0f56bf868b39cb2e9abe41bb55c6474b43738448 100644
--- a/ISC_421_Controle_4_Saroukhanian_Iliya.py
+++ b/ISC_421_Controle_4_Saroukhanian_Iliya.py
@@ -1,7 +1,7 @@
 import numpy as np
 import math
 from matplotlib import pyplot as plt
-from scipy.interpolate import lagrange
+from scipy.interpolate import lagrange, barycentric_interpolate
 from numpy.polynomial.polynomial import Polynomial
 
 
@@ -204,7 +204,7 @@ def ex2_taylor_poly():
     plt.show()
 
 
-def ex3_interpolation_poly():
+def ex3_lagrange_interpolation_poly():
     nb_points = np.linspace(3, 19, 6, dtype=np.uint64)
     fig, axes = plt.subplots(2, 3, figsize=(20, 12))
 
@@ -244,7 +244,75 @@ def ex3_interpolation_poly():
     plt.show()
 
 
-ex3_interpolation_poly()
+def ex3_newton_interpolation_poly():
+    # merce l'ami
+    def divided_differences(x, y):
+        n = len(y)
+        coef = np.zeros([n, n])
+        coef[:, 0] = y
+
+        for j in range(1, n):
+            for i in range(n - j):
+                coef[i, j] = (coef[i + 1, j - 1] - coef[i, j - 1]) / \
+                    (x[i + j] - x[i])
+
+        return coef[0, :]
+
+    def newton_polynomial(x, x_points, coef):
+        n = len(coef)
+        p = coef[n - 1]
+        for k in range(1, n):
+            p = coef[n - k - 1] + (x - x_points[n - k - 1]) * p
+
+        return p
+
+    nb_points = np.linspace(3, 19, 6, dtype=np.uint64)
+    fig, axes = plt.subplots(2, 3, figsize=(20, 12))
+
+    t = np.linspace(SD.a, SD.b, Nmbre_pts)
+
+    for i, ax in enumerate(axes.flat):
+        chebyshev_points = np.cos(
+            (2 * np.arange(nb_points[i]) + 1) / (2 * nb_points[i]) * np.pi)
+
+        chebyshev_points_mapped = 0.5 * \
+            (SD.b - SD.a) * (chebyshev_points + 1) + SD.a
+
+        interpolate_pts = np.linspace(SD.a, SD.b, nb_points[i])
+
+        y_points_uni = SD.f(interpolate_pts)
+
+        coef_uni = divided_differences(interpolate_pts, y_points_uni)
+        y_plot_uni = newton_polynomial(t, interpolate_pts, coef_uni)
+
+        y_points_cheb = SD.f(chebyshev_points_mapped)
+
+        coef_cheb = divided_differences(chebyshev_points_mapped, y_points_cheb)
+        y_plot_cheb = newton_polynomial(t, chebyshev_points_mapped, coef_cheb)
+
+        ax.plot(t, SD.f(t), color='black', label='f')
+        ax.plot(t, y_plot_uni, color='red',
+                label='$N_{f}$, intervalle équidistants')
+        ax.plot(t, y_plot_cheb, color='blue',
+                label='$N_{f}$, points de Chebyshev')
+        ax.plot(interpolate_pts, SD.f(interpolate_pts), 'o', color='red',
+                label='Points équidistants')
+        ax.plot(chebyshev_points_mapped[::-1],
+                SD.f(chebyshev_points_mapped[::-1]), 'o', color='blue',
+                label='Points de Chebyshev')
+        ax.set_title(f'n = {nb_points[i]}')
+        ax.set_ylim([-1.2, 1.2])
+
+        ax.legend()
+
+    fig.suptitle(f'Polynôme d\'interpolation de Newton de $f$ avec 2 subdivisions différentes d\'intervalle: Équidistantes (rouge) / Points de Chebyshev (bleu)')
+
+    fig.tight_layout()
+    plt.show()
+
+
+ex3_newton_interpolation_poly()
+
 
 # Graphique des polynômes de Taylor
 # fig, axes = plt.subplots(1, 3)
diff --git a/figs/newton_interpolate.png b/figs/newton_interpolate.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe0ea9352bf3777484a00f0154c0ac4e74b09c8b
Binary files /dev/null and b/figs/newton_interpolate.png differ
diff --git a/report.qmd b/report.qmd
index 332512e3bf3eb81551bae7af73856cbf9f1d9d08..978d9aba2ca63da7e16ade051748bb561289cebb 100644
--- a/report.qmd
+++ b/report.qmd
@@ -37,11 +37,26 @@ $$
 
 # Polynômes d'interpolation
 
+Dans cette partie, nous allons présenter les graphiques de divers polynômes
+d'interpolation. Il était aussi demandé d'effectuer ces interpolations en
+subdivisant l'intervalle $I = [a, b]$ (où $a = 1$ et $b = 4$ dans mon cas) de
+deux manières différentes. Les points rouges réprensentent donc le découpage
+uniforme / équidistant. Quant au bleus, ceux-ci sont les points de Chebyshev
+(comme vous avez pu le deviner, ceux-ci ne sont pas équidistants).
+
 ## Lagrange
 
-![Polynôme de Lagrange avec subdivision uniforme de l'intervalle $I = [a, b]$](./figs/lagrange_interpolate.png)
+Le graphique ci-dessous met en avant l'interpolation par le polynôme de
+Lagrange.
+
+![Polynôme d'interpolation de Lagrange avec 2 subdivisions d'intervalle différentes](./figs/lagrange_interpolate.png)
+
+## Newton
+
+Le graphique ci-dessous met en avant l'interpolation par le polynôme de
+Newton.
 
-## Hermite
+![Polynôme d'interpolation de Newton avec 2 subdivisions d'intervalle différentes](./figs/newton_interpolate.png)
 
 # Exercice 3