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

feat: computing max theoretical error when interpolating

parent c3638f84
Branches
No related tags found
No related merge requests found
...@@ -206,8 +206,25 @@ def ex2_taylor_poly(): ...@@ -206,8 +206,25 @@ def ex2_taylor_poly():
plt.show() plt.show()
def polerr(nb_points, interpolation_pts, plot_range):
errs_range = []
for pt in plot_range:
prod = 1
for inter_pt in interpolation_pts:
prod *= pt - inter_pt
err = (SD.Maximal_derivatives_values[nb_points - 1] /
math.factorial(nb_points + 1)) * np.abs(prod)
errs_range.append(err)
return errs_range
def ex3_lagrange_interpolation_poly(): def ex3_lagrange_interpolation_poly():
nb_points = np.linspace(1, 13, 6, dtype=np.uint64) 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))
t = np.linspace(SD.a, SD.b, Nmbre_pts) t = np.linspace(SD.a, SD.b, Nmbre_pts)
...@@ -225,14 +242,21 @@ def ex3_lagrange_interpolation_poly(): ...@@ -225,14 +242,21 @@ def ex3_lagrange_interpolation_poly():
l_poly_chebyshev_pts = lagrange( l_poly_chebyshev_pts = lagrange(
chebyshev_points_mapped, SD.f(chebyshev_points_mapped)) chebyshev_points_mapped, SD.f(chebyshev_points_mapped))
uniform_err = polerr(nb_points[i], interpolate_pts, t)
chebyshev_err = polerr(nb_points[i], chebyshev_points_mapped, 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')
ax.plot(t, uniform_err, '--', color='red',
label='$L_{f}$, intervalle équidistants, erreur') label='$L_{f}$, intervalle équidistants, erreur')
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')
ax.plot(t, chebyshev_err, '--', 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', ax.plot(interpolate_pts, SD.f(interpolate_pts), 'o', color='red',
label='Points équidistants') label='Points équidistants')
...@@ -240,7 +264,7 @@ def ex3_lagrange_interpolation_poly(): ...@@ -240,7 +264,7 @@ def ex3_lagrange_interpolation_poly():
SD.f(chebyshev_points_mapped[::-1]), 'o', color='blue', SD.f(chebyshev_points_mapped[::-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.set_ylim([-1.2, 1.2])
ax.legend() ax.legend()
...@@ -250,7 +274,12 @@ def ex3_lagrange_interpolation_poly(): ...@@ -250,7 +274,12 @@ def ex3_lagrange_interpolation_poly():
plt.show() plt.show()
def caca():
print(len(SD.Maximal_derivatives_values))
ex3_lagrange_interpolation_poly() ex3_lagrange_interpolation_poly()
# caca()
# 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