Skip to content
Snippets Groups Projects
Commit 6eb77df9 authored by iliya.saroukha's avatar iliya.saroukha :first_quarter_moon:
Browse files

fix: renamed functions

parent 2af674f6
No related branches found
No related tags found
No related merge requests found
...@@ -156,28 +156,28 @@ print(f"valeur de la fonction en a et b: {SD.f(SD.a), SD.f(SD.b)}") ...@@ -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] / return (SD.Maximal_derivatives_values[len(SD.Maximal_derivatives_values) - 1] /
math.factorial(len(SD.Maximal_derivatives_values) + 1)) * \ math.factorial(len(SD.Maximal_derivatives_values) + 1)) * \
(plot_range - eval_pt)**(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) t = np.linspace(SD.a, SD.b, Nmbre_pts)
y0 = compute_taylor_series( y0 = compute_taylor_series(
t, SD.Taylor_points[0], SD.Taylor_derivatives_values[SD.Taylor_points[0]]) 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( y1 = compute_taylor_series(
t, SD.Taylor_points[1], SD.Taylor_derivatives_values[SD.Taylor_points[1]]) 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( y2 = compute_taylor_series(
t, SD.Taylor_points[2], SD.Taylor_derivatives_values[SD.Taylor_points[2]]) 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)) fig, axs = plt.subplots(2, 2, figsize=(18, 12))
...@@ -225,7 +225,7 @@ def ex2_taylor_poly(): ...@@ -225,7 +225,7 @@ def ex2_taylor_poly():
plt.show() plt.show()
def polerr(nb_points, interpolation_pts, plot_range): def errmax_poly_interpolation(nb_points, interpolation_pts, plot_range):
errs_range = [] errs_range = []
for pt in plot_range: for pt in plot_range:
...@@ -247,7 +247,7 @@ def chebyshev_pts(start, stop, nb_points): ...@@ -247,7 +247,7 @@ def chebyshev_pts(start, stop, nb_points):
np.cos(((2 * np.arange(nb_points) + 1) * np.pi) / (2 * (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) nb_points = np.linspace(1, 12, 6, dtype=np.uint8)
fig, axes = plt.subplots(2, 3, figsize=(20, 12)) fig, axes = plt.subplots(2, 3, figsize=(20, 12))
...@@ -262,33 +262,67 @@ def ex3_lagrange_interpolation_poly(): ...@@ -262,33 +262,67 @@ def ex3_lagrange_interpolation_poly():
l_poly_chebyshev_pts = lagrange( l_poly_chebyshev_pts = lagrange(
cheb_pts, SD.f(cheb_pts)) 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, SD.f(t), color='black', label='f')
ax.plot(t, l_poly_uniform(t), color='red', ax.plot(t, l_poly_uniform(t), color='red',
label='$L_{f}$, intervalle équidistants') label='$L_{f}$, intervalle équidistants')
# ax.plot(t, np.abs(SD.f(t) - l_poly_uniform(t)), '--', color='red', # ax.plot(t, np.abs(SD.f(t) - l_poly_uniform(t)), '--', color='red',
# label='$L_{f}$, intervalle équidistants, erreur') # 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', ax.plot(t, l_poly_chebyshev_pts(t), color='blue',
label='$L_{f}$, points de Chebyshev') label='$L_{f}$, points de Chebyshev')
# ax.plot(t, np.abs(SD.f(t) - l_poly_chebyshev_pts(t)), '--', color='blue', # ax.plot(t, np.abs(SD.f(t) - l_poly_chebyshev_pts(t)), '--', color='blue',
# label='$L_{f}$, points de Chebyshev, erreur') # 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', ax.plot(t, chebyshev_err, '--', color='blue',
label='ErrMax de $L_{f}$, points de Chebyshev') label='ErrMax de $L_{f}$, points de Chebyshev')
ax.plot(interpolate_pts, SD.f(interpolate_pts), 'o', color='red', ax.plot(interpolate_pts, SD.f(interpolate_pts), 'o', color='red',
label='Points équidistants') label='Points équidistants')
ax.plot(cheb_pts[::-1], ax.plot(cheb_pts, SD.f(cheb_pts), 'o', color='blue',
SD.f(cheb_pts[::-1]), 'o', color='blue',
label='Points de Chebyshev') label='Points de Chebyshev')
ax.set_title(f'n = {nb_points[i]}') ax.set_title(f'n = {nb_points[i]}')
# ax.set_ylim([-1.2, 1.2])
ax.legend() 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() fig.tight_layout()
plt.show() plt.show()
...@@ -299,7 +333,9 @@ def ex3_lagrange_interpolation_poly(): ...@@ -299,7 +333,9 @@ def ex3_lagrange_interpolation_poly():
# ex2_taylor_poly() # ex2_taylor_poly()
ex3_lagrange_interpolation_poly() # plot_taylor_poly()
plot_lagrange_poly()
# plot_errmax_interpolation()
# def ex3_newton_interpolation_poly(): # def ex3_newton_interpolation_poly():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment