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
  • master
1 result

Target

Select target project
  • isc2/maths/controle4
1 result
Select Git revision
  • master
1 result
Show changes
Commits on Source (3)
......@@ -155,17 +155,30 @@ print(f"valeur de la fonction en a et b: {SD.f(SD.a), SD.f(SD.b)}")
#### Exercices #####
###########################################################################
def taylor_err_max(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():
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])
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])
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])
fig, axs = plt.subplots(2, 2, figsize=(18, 12))
axs[0, 0].plot(t, SD.f(t), color='black')
......@@ -174,6 +187,8 @@ def ex2_taylor_poly():
axs[0, 1].plot(t, SD.f(t), color='black', label='$f$')
axs[0, 1].plot(t, y0, color='orange', label='$T_{f}$')
axs[0, 1].plot(t, err_y0, '--', color='orange',
label='Erreur maximal de $T_{f}$')
axs[0, 1].plot(SD.Taylor_points[0], SD.f(
SD.Taylor_points[0]), "-o", color='red', label=f'a = {SD.Taylor_points[0]}')
axs[0, 1].set_title(
......@@ -184,6 +199,8 @@ def ex2_taylor_poly():
axs[1, 0].plot(t, SD.f(t), color='black', label='$f$')
axs[1, 0].plot(t, y1, color='blue', label='$T_{f}$')
axs[1, 0].plot(t, err_y1, '--', color='blue',
label='ErrMax de $T_{f}$')
axs[1, 0].plot(SD.Taylor_points[1], SD.f(
SD.Taylor_points[1]), "-o", color='red', label=f'a = {SD.Taylor_points[1]}')
axs[1, 0].set_title(
......@@ -194,6 +211,8 @@ def ex2_taylor_poly():
axs[1, 1].plot(t, SD.f(t), color='black', label='$f$')
axs[1, 1].plot(t, y2, color='violet', label='$T_{f}$')
axs[1, 1].plot(t, err_y2, '--', color='violet',
label='ErrMax de $T_{f}$')
axs[1, 1].plot(SD.Taylor_points[2], SD.f(
SD.Taylor_points[2]), "-o", color='red', label=f'a = {SD.Taylor_points[2]}')
axs[1, 1].set_title(
......@@ -223,6 +242,11 @@ def polerr(nb_points, interpolation_pts, plot_range):
return errs_range
def chebyshev_pts(start, stop, nb_points):
return (((start + stop) / 2) + ((stop - start) / 2) *
np.cos(((2 * np.arange(nb_points) + 1) * np.pi) / (2 * (nb_points))))
def ex3_lagrange_interpolation_poly():
nb_points = np.linspace(1, 12, 6, dtype=np.uint8)
fig, axes = plt.subplots(2, 3, figsize=(20, 12))
......@@ -230,20 +254,16 @@ def ex3_lagrange_interpolation_poly():
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
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(
chebyshev_points_mapped, SD.f(chebyshev_points_mapped))
cheb_pts, SD.f(cheb_pts))
uniform_err = polerr(nb_points[i], interpolate_pts, t)
chebyshev_err = polerr(nb_points[i], chebyshev_points_mapped, 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',
......@@ -251,17 +271,17 @@ def ex3_lagrange_interpolation_poly():
# 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='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(t, chebyshev_err, '--', color='blue',
label='$L_{f}$, points de Chebyshev, erreur')
label='ErrMax de $L_{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',
ax.plot(cheb_pts[::-1],
SD.f(cheb_pts[::-1]), 'o', color='blue',
label='Points de Chebyshev')
ax.set_title(f'n = {nb_points[i]}')
# ax.set_ylim([-1.2, 1.2])
......@@ -274,12 +294,12 @@ def ex3_lagrange_interpolation_poly():
plt.show()
def caca():
print(len(SD.Maximal_derivatives_values))
# def caca():
# print(len(SD.Maximal_derivatives_values))
# ex2_taylor_poly()
ex3_lagrange_interpolation_poly()
# caca()
# def ex3_newton_interpolation_poly():
......
figs/ex2_taylor.png

163 KiB | W: 0px | H: 0px

figs/ex2_taylor.png

177 KiB | W: 0px | H: 0px

figs/ex2_taylor.png
figs/ex2_taylor.png
figs/ex2_taylor.png
figs/ex2_taylor.png
  • 2-up
  • Swipe
  • Onion skin
figs/lagrange_interpolate_errmax.png

330 KiB | W: 0px | H: 0px

figs/lagrange_interpolate_errmax.png

330 KiB | W: 0px | H: 0px

figs/lagrange_interpolate_errmax.png
figs/lagrange_interpolate_errmax.png
figs/lagrange_interpolate_errmax.png
figs/lagrange_interpolate_errmax.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -20,7 +20,7 @@ format:
# Polynômes de Taylor
![Graphiques de la fonction $f$ et de ses développements de Taylor en divers points](./figs/ex2_taylor.png)
![Polynômes de Taylor & l'erreur maximale théorique](./figs/ex2_taylor.png){#fig-taylor}
## L'erreur maximale théorique
......@@ -39,6 +39,17 @@ $$
R_{f, n, a}(x) \leq \max_{\xi \in I} \left| \frac{f^{(n + 1)}(\xi)(x - a)^{n + 1}}{(n + 1)!} \right|
$$
Ceci implique donc que l'erreur maximale théorique commise lors de l'évaluation
du polynôme de Taylor dépend de son degré et donc par définition du "degré" de
la dérivé de la fonction $f$ auquel on a accès.
Sur la @fig-taylor, lors de la construction des polynômes de Taylor, nous pouvons
observer l'erreur maximale théorique commise (en traitillé). Il est pertinent
de remarquer que localement autour du point $a_{i}$ par rapport auquel le
polynôme de Taylor est construit, l'erreur maximale est de 0 (du moins, tend
fortement vers 0). Cependant, dès qu'on atteint les limites de "l'intervalle
de précision" du polynôme, la valeur de l'erreur explose vers l'infini.
# Polynômes d'interpolation
Dans cette partie, nous allons présenter les graphiques de divers polynômes
......