Polynôme

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

Re: Polynôme

Message par sos-math(21) » ven. 11 déc. 2020 19:54

Je te conseille de bien lire l’article Wikipedia : tout est expliqué même si les raisons du phénomène ne sont pas simples à comprendre.
Invité

Re: Polynôme

Message par Invité » ven. 11 déc. 2020 20:00

d'accord.

Et pour la Q3, il faudrait remplacer chaque élément de la liste construite précédemment par les xk ?
Comment fait-on ça en Python... ?

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

Re: Polynôme

Message par sos-math(21) » sam. 12 déc. 2020 07:31

Bonjour,
tu l'as déjà fait en prenant une subdivision régulière avec numpy.linspace.
Pour les abscisses de Tchebychev, la formule proposée me semble incorrecte (disons qu'avec celle de ton énoncé, cela ne fonctionne pas et on a encore une divergence), il faut prendre, pour avoir un polynôme de degré \(n\) :
\(\dfrac{a+b}{2}+\dfrac{b-a}{2}\times \cos\left(\dfrac{(2k-1)\pi}{n+1}\right)\) pour \(k=1,\ldots, n+1\) (dans l'énoncé on divise par 2 au lieu de \(n+1\) dans le cosinus)
Par ailleurs, je ne comprends pas pourquoi on te fait tester cette formule avec la fonction \(f_3\) qui a une valeur interdite en \(\dfrac {-1}{16}\) qui est dans l'intervalle.
Généralement (et cela me gêne depuis le début de ce sujet), on prend des fonctions de la forme \(f(x)=\dfrac{1}{1+\lambda x^2}\) donc moi j'aurais plutôt pris \(f_3(x)=\dfrac{1}{1+16x^2}\).
Ne peux-tu pas contacter ton professeur pour en avoir le cœur net ?
Quoiqu'il en soit, il te reste à créer la subdivision d'interpolation avec les cosinus : il y a une seule ligne à changer dans la définition de la fonction ecart_absolu.
Bonne continuation
Invité

Re: Polynôme

Message par Invité » sam. 12 déc. 2020 08:17

D'accord je vais le contacter !

C'est la ligne x = ou la ligne y = qu'il faut changer ?
Pour moi c'est les 2...
sos-math(21)
Messages : 8785
Enregistré le : lun. 30 août 2010 11:15

Re: Polynôme

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

Bonjour,
on change la subdivision (ou le support) donc ce sont les abscisses que l'on change (liste liste_x dans mon programme) .
Les "y" sont toujours les images des points de la subdivision par la fonction polynôme d'approximation ou par la fonction de départ.
Il n'y a pas grand chose à modifier.
Invité

Re: Polynôme

Message par Invité » sam. 12 déc. 2020 08:40

Ah oui merci je comprends mieux.

Donc voici ce que je propose :

Code : Tout sélectionner

def ecart_absolu_2(f,debut,fin,degre,precision):
    abscisses = numpy.linspace(debut,fin, precision)
    #plt.plot(abscisses,f(abscisses),color='blue')
    liste_x = [(a+b)/2+(b-a)/2*(np.cos(2*k-1)*3,14)/(n-1) for k in range n]
    ecart = numpy.array([abs(Interpolation_Lagrange(abscisses[i],liste_x,f(liste_x))-f(abscisses[i])) for i in range(len(abscisses))])
    plt.plot(abscisses,ecart,color='red')
    plt.show()
    return max(ecart)
Mais ça me semble faux. Je me serais pas un peu compliqué la vie pour liste_x ? Je pense que c'est faux surtout ...
sos-math(21)
Messages : 8785
Enregistré le : lun. 30 août 2010 11:15

Re: Polynôme

Message par sos-math(21) » sam. 12 déc. 2020 09:39

Bonjour,
Ta ligne ci-dessous ne peut pas marcher :

Code : Tout sélectionner

liste_x = [(a+b)/2+(b-a)/2*(np.cos(2*k-1)*3,14)/(n-1) for k in range n]
Que désigne n ?
Regarde les paramètres de ta fonction ... De plus on écrit range(n) et pas range n .
Par ailleurs, tu as des problèmes de parenthèses dans ton np.cos
En python le séparateur décimal est le point donc 3.14 au lieu de 3,14... Tu peux encore faire mieux en appelant directement la constante pi de numpy : np.pi
Tes autres listes sont des tableaux numpy donc pour ne pas avoir de problème avec le tracé et la fonction plot, il faut convertir ta liste en tableau numpy : np.array(ma_liste)
J'ai l'impression que tu n'as jamais codé en Python, je me trompe ?
Invité

Re: Polynôme

Message par Invité » sam. 12 déc. 2020 14:53

non vous ne trompez pas, on a commencé en novembre le Python, l'année dernière j'en avais jamais fait.
Donc c'est pas simple...

Désolée mais je vois pas où je pourrai demander la valeur de n.

Pourriez-vous me dire svp ?
SoS-Math(25)
Messages : 1745
Enregistré le : mer. 2 nov. 2011 09:39

Re: Polynôme

Message par SoS-Math(25) » sam. 12 déc. 2020 15:46

Bonjour,

n correspond au degré du polynôme d'interpolation. De même pour a et b, ils ne sont pas définis pour ta fonction, ils correspondent à d'autres noms de variables... lesquels ?

Suis les remarques de sos-math(21).

Voici un endroit où tu peux tester et corriger ta liste :

https://trinket.io/python3/8439448113

Code : Tout sélectionner

import numpy as np
import matplotlib.pyplot as plt

debut = -1
fin = 1
degre = 10

liste_x = [np.cos((2*k-1)*np.pi) for k in range(degre)]

print(liste_x)
Je te laisse modifier la ligne 8 pour obtenir cela avec degre = 10 sur [-1;1] et la formule de sos-math(21) :

[0.9594929736144974, 0.6548607339452851, 0.14231483827328512, -0.4154150130018863, -0.8412535328311811, -1.0, -0.8412535328311812, -0.41541501300188716, 0.14231483827328487, 0.6548607339452845]

ou (si tu divises dans ton cosinus par degre au lieu de (degre + 1))

[0.9510565162951535, 0.5877852522924731, 6.123233995736766e-17, -0.587785252292473, -0.9510565162951535, -0.9510565162951538, -0.5877852522924732, -1.8369701987210297e-16, 0.5877852522924729, 0.9510565162951535]


Bon courage
Invité

Re: Polynôme

Message par Invité » sam. 12 déc. 2020 16:27

Du coup je modifierais ça comme ça :
import numpy as np
import matplotlib.pyplot as plt

debut = -1
fin = 1
degre = 10

liste_x = [-(1/2)*np.cos((2*k-1)*np.pi) for k in range(degre)]

print(liste_x)
Est-ce corret ?
SoS-Math(25)
Messages : 1745
Enregistré le : mer. 2 nov. 2011 09:39

Re: Polynôme

Message par SoS-Math(25) » sam. 12 déc. 2020 16:39

Tu peux modifier tester ton code sur la plateforme en lien :

https://trinket.io/python3/8439448113

Si tu ne trouves pas un des deux résultats que je te propose avec debut =- 1, fin = 1 et degre = 10, c'est que ce n'est pas la bonne réponse.

Dans le cosinus, il faut par exemple diviser l'angle par le degré du polynôme. Reprends la formule donnée par mon collègue. Et il y a d'autres choses à modifier

A bientôt.
Invité

Re: Polynôme

Message par Invité » sam. 12 déc. 2020 18:15

Désolée mais là je suis vraiment perdue...

Je suis pas matheuse et en plus on vient de commencer Python, alors...
sos-math(21)
Messages : 8785
Enregistré le : lun. 30 août 2010 11:15

Re: Polynôme

Message par sos-math(21) » 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
Invité

Re: Polynôme

Message par Invité » dim. 13 déc. 2020 07:19

Bonjour

Merci beaucoup de toutes ces explications : j'ai tout repris hier soir et maintenant je crois que j'ai compris.

Pour la toute dernière question, la question 4, que faut-il faire ?
Peut-on s'inspirer de ce qui a été fait à la question 2 ?

C'est ce que j'ai essayé de faire mais je vois pas quoi changer dans le programme de la question 2 pour qu'il réponde à la question 4..
Et vous ? Pourriez-vous me donner un début de résolution, ou un programme à compléter ?

Merci et bon dimanche
sos-math(21)
Messages : 8785
Enregistré le : lun. 30 août 2010 11:15

Re: Polynôme

Message par sos-math(21) » dim. 13 déc. 2020 07:45

Bonjour,
Si tu regardes bien la réponse que j’ai faite hier, c’est exactement ce qui est demandé dans la question 4 : on représente graphiquement la liste écart qui mesure l’écart entre la fonction et ses interpolées de Lagrange sur les abscisses de Tchebychev.
En fait on n’a pas vraiment traité la question 3 : il faudrait donc re-découper ma proposition en deux parties pour qu’elle réponde aux deux dernières questions.
Je te laisse réorganiser ces éléments.
Répondre