Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • isc2/maths/controle4
1 result
Select Git revision
Show changes
Commits on Source (2)
......@@ -206,8 +206,25 @@ def ex2_taylor_poly():
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():
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))
t = np.linspace(SD.a, SD.b, Nmbre_pts)
......@@ -225,14 +242,21 @@ def ex3_lagrange_interpolation_poly():
l_poly_chebyshev_pts = lagrange(
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, 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',
# 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')
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',
# 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')
ax.plot(interpolate_pts, SD.f(interpolate_pts), 'o', color='red',
label='Points équidistants')
......@@ -240,7 +264,7 @@ def ex3_lagrange_interpolation_poly():
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.set_ylim([-1.2, 1.2])
ax.legend()
......@@ -250,7 +274,12 @@ def ex3_lagrange_interpolation_poly():
plt.show()
def caca():
print(len(SD.Maximal_derivatives_values))
ex3_lagrange_interpolation_poly()
# caca()
# def ex3_newton_interpolation_poly():
......
figs/lagrange_interpolate_errmax.png

330 KiB

......@@ -56,6 +56,8 @@ la valeur de l'erreur commise en chaque point.
![Polynôme d'interpolation avec 2 subdivisions d'intervalle différentes](./figs/lagrange_interpolate.png){#fig-interpolate}
![Erreur théorique maximale lors de l'interpolation](./figs/lagrange_interpolate_errmax.png){#fig-interpolate-errmax}
Nous pouvons donc remarquer que plus le degré du polynôme d'interpolation
augmente, plus l'erreur commise lors de l'interpolation semble diminuer,
notamment en ce qui concerne la partie centrale de chaque graphique. Les divers
......@@ -93,7 +95,3 @@ polynôme d'interpolation de faible degré n'est précis que de manière locale.
Ceci implique donc le fait qu'il sera nécessaire d'approximer tous les points
de manière locale à l'aide d'un polynôme de degré faible puis de finalement,
construire un assemblage de tous ces polynômes en un seul qui minimisera l'erreur.
# Exercice 4
# Conclusion