Polynôme

Retrouver tous les sujets résolus.
sos-math(21)
Messages : 10348
Enregistré le : lun. 30 août 2010 11:15

Re: Polynôme

Message par sos-math(21) » mer. 23 déc. 2020 11:15

Bonjour,
c'est la définition même des polynômes de Lagrange : pour interpoler sur \(n\) points, il faut un polynôme de degré \(n-1\).
Donc plus tu vas rajouter de points, plus ton polynôme sera de degré élevé, plus il sera "compliqué" et tu risques d'avoir des surprises sur l'allure de ton polynôme qui passera bien aux points demandés mais qui risque de faire des "sauts" entre deux points, c'est ce que j'entendais par régularité.
Dans ta situation de profil, topographique, cela risque de faire des bosses ou des creux surprenants :
lagrange_exemple_12.PNG
Comprends-tu le problème ?
Invité

Re: Polynôme

Message par Invité » mer. 23 déc. 2020 16:35

Oui, merci beaucoup, c'est très bien explique ! Cette fois j'ai compris.

Pour la dernière question faut-il encore utiliser un programme informatique ? Car je suis bloquée, je ne sais pas s'il faut utiliser l'informatique ou la main pour répondre...

Merci !
sos-math(21)
Messages : 10348
Enregistré le : lun. 30 août 2010 11:15

Re: Polynôme

Message par sos-math(21) » mer. 23 déc. 2020 20:30

Bonjour,
tu as ta fonction interpolation_Lagrange qui te permet de calculer l'image de 800 par chacune des interpolées de Lagrange :

Code : Tout sélectionner

>>> Interpolation_Lagrange(800, bleu_x,bleu_y), Interpolation_Lagrange(800,rouge_x,rouge_y)
(322.00863678929767, 375.3337950782858)
Tu notes une différence d'altitude assez importante.
Je te laisse cherche dans la documentation de scipy : il y a sûrement des fonctions d'interpolation qui approchent mieux que Lagrange la réunion des deux listes.
Bonne continuation
sos-math(21)
Messages : 10348
Enregistré le : lun. 30 août 2010 11:15

Re: Polynôme

Message par sos-math(21) » jeu. 24 déc. 2020 08:05

Bonjour,
un exemple d'approximation avec une fonction d'approximation de scipy (avec une spline qui est une fonction définie par morceaux par des polynômes, on interpole par des polynômes mais en partageant l'intervalle en sous-intervalles et en faisant correspondre les morceaux de polynômes d'interpolation) :
lagrange_exemple_13.PNG
C'est tout de même beaucoup mieux.
Bonne continuation
Invité

Re: Polynôme

Message par Invité » mer. 13 janv. 2021 15:41

Bonjour

bonne année 2021 !

en prévision d'un DS j'ai repris ce sujet et il y a quelque chose qui me pose problème.

Ici, j'ai une erreur : https://www.cjoint.com/data/KAnoNVNQWy4_bug.png

D'où vient cette erreur ? Qu'avez-vous comme script pour qu'il n'y ait pas cette erreur ?
C'est sur la liste abscisses je pense...

Merci d'avance de la réponse !

(en dessous la réponse que vous m'aviez envoyée)
sos-math(21) a écrit :
sam. 12 déc. 2020 18:33
Bonjour,
on reprend :
tu as besoin d'une liste liste_x qui correspond aux points de la subdivision : pour un polynôme d'interpolation de degré \(n\), cette liste contient \(n+1\) points
tu as besoin d'une liste d'images liste_y qui sont les images des points : les polynômes et la fonction de départ coïncident en ces points.
Ensuite pour tracer les courbes, avec matplotlib, tu as besoin d'une liste d'abscisses et de l'image de cette liste par la fonction mais aussi de l'image de cette liste par le polynôme afin de pouvoir tracer les courbes comme des lignes brisées.

Tu vas donc déclarer pour mieux comprendre en suivant le cheminement de sos-math(25) :

Code : Tout sélectionner

degre = 10 # degré du polynôme qui va imposer 11 points d'interpolation
debut = -1
fin = -1
precision = 1000 # cela correspond aux points que l'on va prendre pour tracer les courbes
Il te reste ensuite à déclarer tes listes :

Code : Tout sélectionner

# liste de la nouvelle subdivision avec les abscisses de Tchebychev
liste_x = numpy.array([(debut+fin)/2 + ((fin-debut)/2)*math.cos((2*k-1)*(np.pi)/degre+1) for k in range(1, degre+2)]) 
# liste des écarts entre le polynôme et la fonction interpolée, avec la nouvelle subdivision
ecart = numpy.array([abs(Interpolation_Lagrange(abscisses[i],liste_x,f(liste_x))-f(abscisses[i])) for i in range(len(abscisses))])
# tracé
plt.plot(abscisses,ecart,color='red')
plt.show()
ce qui doit donner avec \(f(x)=\dfrac{1}{1+16x^2}\)
lagrange_exemple_8.PNG
On voit que les écarts maximaux sont de l'ordre de 0,7.
Si on augmente le degré du polynôme, contrairement à la situation précédente avec la subdivision régulière, l'écart va diminuer : avec un degré 100, l'écart maximal est d'environ 0,04.
Bonne continuation

Bonne continuation
sos-math(21)
Messages : 10348
Enregistré le : lun. 30 août 2010 11:15

Re: Polynôme

Message par sos-math(21) » mer. 13 janv. 2021 16:06

Bonjour,
avec ce code,

Code : Tout sélectionner

import numpy
import math
import matplotlib.pyplot as plt

def Interpolation_Lagrange(x,liste_x,liste_y):
    """renvoie la valeur du polynôme d'interpolation de Lagrange aux points (liste_x[i], liste_[i]) à l'abscisse x"""
    val = 0
    for i in range(len(liste_x)):
        produit = 1
        for j in range(len(liste_x)):
            if j != i:
                produit = produit * (x-liste_x[j])/(liste_x[i]-liste_x[j])
        val = val + produit*liste_y[i]
    return val



f = lambda x:1/(1+16*x**2)
abscisses = numpy.linspace(-1,1,1000)
degre = 10 # degré du polynôme qui va imposer 11 points d'interpolation
debut = -1
fin = 1
precision = 1000 # cela correspond aux points que l'on va prendre pour tracer les # liste de la nouvelle subdivision avec les abscisses de Tchebychev
liste_x = numpy.array([(debut+fin)/2 + ((fin-debut)/2)*math.cos((2*k-1)*(numpy.pi)/degre+1) for k in range(1, degre+2)])
# liste des écarts entre le polynôme et la fonction interpolée, avec la nouvelle subdivision
ecart = numpy.array([abs(Interpolation_Lagrange(abscisses[i],liste_x,f(liste_x))-f(abscisses[i])) for i in range(len(abscisses))])
# tracé
plt.plot(abscisses,ecart,color='red')
plt.show()
Cela fonctionne et donne le graphique suivant :
Figure_1.png
Bonne continuation
Invité

Re: Polynôme

Message par Invité » ven. 15 janv. 2021 22:27

bonjour, possible de vous poser une dernière question rapide ?
sos-math(21)
Messages : 10348
Enregistré le : lun. 30 août 2010 11:15

Re: Polynôme

Message par sos-math(21) » sam. 16 janv. 2021 10:13

Bonjour,
oui c'est possible, on te répondra si on peut.
À bientôt
Répondre