From 6eb77df9b7a53a98332235575a2461c1b3aa5349 Mon Sep 17 00:00:00 2001
From: "iliya.saroukha" <iliya.saroukhanian@etu.hesge.ch>
Date: Tue, 25 Jun 2024 17:08:31 +0200
Subject: [PATCH] fix: renamed functions

---
 ISC_421_Controle_4_Saroukhanian_Iliya.py | 70 ++++++++++++++++++------
 1 file changed, 53 insertions(+), 17 deletions(-)

diff --git a/ISC_421_Controle_4_Saroukhanian_Iliya.py b/ISC_421_Controle_4_Saroukhanian_Iliya.py
index 8f9aa3c..a001bbe 100644
--- a/ISC_421_Controle_4_Saroukhanian_Iliya.py
+++ b/ISC_421_Controle_4_Saroukhanian_Iliya.py
@@ -156,28 +156,28 @@ print(f"valeur de la fonction en a et b:  {SD.f(SD.a), SD.f(SD.b)}")
 ###########################################################################
 
 
-def taylor_err_max(plot_range, eval_pt):
+def errmax_taylor(plot_range, eval_pt):
     return (SD.Maximal_derivatives_values[len(SD.Maximal_derivatives_values) - 1] /
             math.factorial(len(SD.Maximal_derivatives_values) + 1)) * \
         (plot_range - eval_pt)**(len(SD.Maximal_derivatives_values) + 1)
 
 
-def ex2_taylor_poly():
+def plot_taylor_poly():
     t = np.linspace(SD.a, SD.b, Nmbre_pts)
     y0 = compute_taylor_series(
         t, SD.Taylor_points[0], SD.Taylor_derivatives_values[SD.Taylor_points[0]])
 
-    err_y0 = taylor_err_max(t, SD.Taylor_points[0])
+    err_y0 = errmax_taylor(t, SD.Taylor_points[0])
 
     y1 = compute_taylor_series(
         t, SD.Taylor_points[1], SD.Taylor_derivatives_values[SD.Taylor_points[1]])
 
-    err_y1 = taylor_err_max(t, SD.Taylor_points[1])
+    err_y1 = errmax_taylor(t, SD.Taylor_points[1])
 
     y2 = compute_taylor_series(
         t, SD.Taylor_points[2], SD.Taylor_derivatives_values[SD.Taylor_points[2]])
 
-    err_y2 = taylor_err_max(t, SD.Taylor_points[2])
+    err_y2 = errmax_taylor(t, SD.Taylor_points[2])
 
     fig, axs = plt.subplots(2, 2, figsize=(18, 12))
 
@@ -225,7 +225,7 @@ def ex2_taylor_poly():
     plt.show()
 
 
-def polerr(nb_points, interpolation_pts, plot_range):
+def errmax_poly_interpolation(nb_points, interpolation_pts, plot_range):
     errs_range = []
 
     for pt in plot_range:
@@ -247,7 +247,7 @@ def chebyshev_pts(start, stop, nb_points):
             np.cos(((2 * np.arange(nb_points) + 1) * np.pi) / (2 * (nb_points))))
 
 
-def ex3_lagrange_interpolation_poly():
+def plot_lagrange_poly():
     nb_points = np.linspace(1, 12, 6, dtype=np.uint8)
     fig, axes = plt.subplots(2, 3, figsize=(20, 12))
 
@@ -262,33 +262,67 @@ def ex3_lagrange_interpolation_poly():
         l_poly_chebyshev_pts = lagrange(
             cheb_pts, SD.f(cheb_pts))
 
-        uniform_err = polerr(nb_points[i], interpolate_pts, t)
-        chebyshev_err = polerr(nb_points[i], cheb_pts, t)
-
         ax.plot(t, SD.f(t), color='black', label='f')
         ax.plot(t, l_poly_uniform(t), color='red',
                 label='$L_{f}$, intervalle équidistants')
         # ax.plot(t, np.abs(SD.f(t) - l_poly_uniform(t)), '--', color='red',
         #         label='$L_{f}$, intervalle équidistants, erreur')
-        ax.plot(t, uniform_err, '--', color='red',
-                label='ErrMax de $L_{f}$, intervalle équidistants')
         ax.plot(t, l_poly_chebyshev_pts(t), color='blue',
                 label='$L_{f}$, points de Chebyshev')
         # ax.plot(t, np.abs(SD.f(t) - l_poly_chebyshev_pts(t)), '--', color='blue',
         #         label='$L_{f}$, points de Chebyshev, erreur')
+        ax.plot(interpolate_pts, SD.f(interpolate_pts), 'o', color='red',
+                label='Points équidistants')
+        ax.plot(cheb_pts, SD.f(cheb_pts), '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ômes d\'interpolation de Lagrange de $f$ avec 2 subdivisions différentes d\'intervalle: Équidistantes (rouge) / Points de Chebyshev (bleu)')
+
+    fig.tight_layout()
+    plt.show()
+
+
+def plot_errmax_interpolation():
+    nb_points = np.linspace(1, 12, 6, dtype=np.uint8)
+    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):
+        cheb_pts = chebyshev_pts(SD.a, SD.b, nb_points[i])
+
+        interpolate_pts = np.linspace(SD.a, SD.b, nb_points[i])
+
+        l_poly_uniform = lagrange(interpolate_pts, SD.f(interpolate_pts))
+        l_poly_chebyshev_pts = lagrange(
+            cheb_pts, SD.f(cheb_pts))
+
+        uniform_err = errmax_poly_interpolation(
+            nb_points[i], interpolate_pts, t)
+        chebyshev_err = errmax_poly_interpolation(nb_points[i], cheb_pts, t)
+
+        ax.plot(t, SD.f(t), color='black', label='f')
+        ax.plot(t, l_poly_uniform(t), color='red',
+                label='$L_{f}$, intervalle équidistants')
+        ax.plot(t, uniform_err, '--', color='red',
+                label='ErrMax de $L_{f}$, intervalle équidistants')
+        ax.plot(t, l_poly_chebyshev_pts(t), color='blue',
+                label='$L_{f}$, points de Chebyshev')
         ax.plot(t, chebyshev_err, '--', color='blue',
                 label='ErrMax de $L_{f}$, points de Chebyshev')
         ax.plot(interpolate_pts, SD.f(interpolate_pts), 'o', color='red',
                 label='Points équidistants')
-        ax.plot(cheb_pts[::-1],
-                SD.f(cheb_pts[::-1]), 'o', color='blue',
+        ax.plot(cheb_pts, SD.f(cheb_pts), '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 Lagrange de $f$ avec 2 subdivisions différentes d\'intervalle: Équidistantes (rouge) / Points de Chebyshev (bleu)')
+    fig.suptitle(f'Erreur maximale théorique lors de l\'interpolation de $f$ avec 2 subdivisions différentes d\'intervalle: Équidistantes (rouge) / Points de Chebyshev (bleu)')
 
     fig.tight_layout()
     plt.show()
@@ -299,7 +333,9 @@ def ex3_lagrange_interpolation_poly():
 
 
 # ex2_taylor_poly()
-ex3_lagrange_interpolation_poly()
+# plot_taylor_poly()
+plot_lagrange_poly()
+# plot_errmax_interpolation()
 
 
 # def ex3_newton_interpolation_poly():
-- 
GitLab