Polynôme
Re: Polynôme
OK merci je vais remanier tout ça.
Et on a eu la suite de l'exo : https://www.cjoint.com/data/JLomvB1x3y4 ... emaths.png
Pour la question 5, je ne vois pas encore pas comment faire, puisqu'on n'a pas de fonction donnée mais uniquement un tableau !
Alors avez-vous une idée pour répondre à cette question 5 ?
Merci bien !
Et on a eu la suite de l'exo : https://www.cjoint.com/data/JLomvB1x3y4 ... emaths.png
Pour la question 5, je ne vois pas encore pas comment faire, puisqu'on n'a pas de fonction donnée mais uniquement un tableau !
Alors avez-vous une idée pour répondre à cette question 5 ?
Merci bien !
-
- Messages : 10398
- Enregistré le : lun. 30 août 2010 11:15
Re: Polynôme
Bonjour,
tes points correspondent au support dans l'interpolation de Lagrange : les valeurs de positions vont dans "liste_x" et les valeurs de hauteur vont dans "liste_y".
C'est une application directe de ce qui a déjà été fait et tu peux reprendre les fonctions Python déjà définies.
tes points correspondent au support dans l'interpolation de Lagrange : les valeurs de positions vont dans "liste_x" et les valeurs de hauteur vont dans "liste_y".
C'est une application directe de ce qui a déjà été fait et tu peux reprendre les fonctions Python déjà définies.
Re: Polynôme
Je ne suis pas sûre de comprendre...
Il faut donc entrer toutes les valeurs du tableau à la main ?
Il faut donc entrer toutes les valeurs du tableau à la main ?
-
- Messages : 10398
- Enregistré le : lun. 30 août 2010 11:15
Re: Polynôme
Tu es bien obligée de saisir les valeurs du tableau dans des listes : liste_x et liste_y.
Cela ne fait jamais que 14 valeurs pour le premier cas : liste_x=[0,500,600,1000,1250,1750,2000] et même chose pour liste_y.
Bonne continuation
Cela ne fait jamais que 14 valeurs pour le premier cas : liste_x=[0,500,600,1000,1250,1750,2000] et même chose pour liste_y.
Bonne continuation
Re: Polynôme
Bonjour,
finalement le professeur a laissé les vacances pour terminer ce travail.
J'en suis donc toujours à la question 5 : pour cette question je voudrais faire :
Pourquoi est-ce faux ? Quelle est la réponse exacte ?
finalement le professeur a laissé les vacances pour terminer ce travail.
J'en suis donc toujours à la question 5 : pour cette question je voudrais faire :
Code : Tout sélectionner
# liste de la nouvelle subdivision avec les abscisses de Tchebychev
liste_x = [0,500,600,1000,1250,1750,2000]
# 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()
-
- Messages : 10398
- Enregistré le : lun. 30 août 2010 11:15
Re: Polynôme
Bonjour,
peux-tu préciser pourquoi tu penses que c'est faux ?
Ta liste_x devrait contenir les abscisses de tchebychev : je ne suis pas sur que les nombres que tu cites correspondent bien aux abscisses de tchebychev.
Par exemple pour un intervalle \([0\,;\,2000]\) et un polynôme de degré 10, on a :
Soit en triant par ordre croissant :
Bonne continuation
peux-tu préciser pourquoi tu penses que c'est faux ?
Ta liste_x devrait contenir les abscisses de tchebychev : je ne suis pas sur que les nombres que tu cites correspondent bien aux abscisses de tchebychev.
Par exemple pour un intervalle \([0\,;\,2000]\) et un polynôme de degré 10, on a :
Code : Tout sélectionner
>>> debut = 0;fin = 2000 ; degre = 10
>>>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_x
array([1.25382919e+03, 6.36817400e+02, 1.58529015e+02, 1.65394585e+00,
2.26113137e+02, 7.46170806e+02, 1.36318260e+03, 1.84147098e+03,
1.99834605e+03, 1.77388686e+03, 1.25382919e+03])
Code : Tout sélectionner
[1.65394585, 158.529015, 226.113137, 636.8174, 746.170806, 1253.82919, 1253.82919, 1363.1826, 1773.88686, 1841.47098, 1998.34605]
Re: Polynôme
Je pense que c'est faux car le résultat que j'obtenais sur Python était très étrange...
Ici comment transformer les valeurs que j'ai mises dans la liste_x (c'est-à-dire les valeurs qui étaient dans le tableau que j'ai donné), en une liste avec les abscisses de Tchebychev ?
C'est ça que je comprends pas...
Ici comment transformer les valeurs que j'ai mises dans la liste_x (c'est-à-dire les valeurs qui étaient dans le tableau que j'ai donné), en une liste avec les abscisses de Tchebychev ?
C'est ça que je comprends pas...
-
- Messages : 10398
- Enregistré le : lun. 30 août 2010 11:15
Re: Polynôme
Bonjour,
tu es bien dans la deuxième partie de ton exercice avec les équipes bleues et rouges.
Dans cette partie, il ne me semble pas que tu aies besoin des abscisses de Tchebychev car on te demande simplement de trouver le polynôme d'interpolation de Lagrange et de le représenter graphiquement afin d'avoir un profil du tracé.
Pour l'équipe bleue, j'obtiens : Et pour les rouges : Voilà.
tu es bien dans la deuxième partie de ton exercice avec les équipes bleues et rouges.
Dans cette partie, il ne me semble pas que tu aies besoin des abscisses de Tchebychev car on te demande simplement de trouver le polynôme d'interpolation de Lagrange et de le représenter graphiquement afin d'avoir un profil du tracé.
Pour l'équipe bleue, j'obtiens : Et pour les rouges : Voilà.
Re: Polynôme
D'accord, c'est effectivement ce qu'on devrait obtenir, ça ressemble bien à un profil topographique.
Mais quelles lignes de code avez-vous rentré pour obtenir tout ça ?
Moi je n'ai toujours pas réussi
Mais quelles lignes de code avez-vous rentré pour obtenir tout ça ?
Moi je n'ai toujours pas réussi
-
- Messages : 10398
- Enregistré le : lun. 30 août 2010 11:15
Re: Polynôme
Il faut que tu reprenne la fonction d'interpolation que nous avons construite auparavant et tu vas l'appliquer à la liste de l'équipe bleue, et ensuite, tu vas calculer les images d'une subdivision par cette fonction :
Bonne continuation
Code : Tout sélectionner
from scipy.interpolate import lagrange
import sympy
x, y, z, t = sympy.symbols('x y z t')
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
bleu_x = [0,500,600,1000,1250,1750,2000]
bleu_y = [100,285,300,350,385,225,100]
rouge_x = [50,75,400,650,1200,1900]
rouge_y = [100,110,250,340,380,140]
abscisses = numpy.linspace(0,2000,1000)
images = numpy.array([Interpolation_Lagrange(abscisses[i],bleu_x,bleu_y) for i in range(len(abscisses))]) # images des points de la subdivision par le polynôme d'interpolation de lagrange
plt.scatter(bleu_x,bleu_y, color="green")
plt.plot(abscisses,images, color = "red")
plt.show()
Re: Polynôme
merci beaucoup, j'obtiens bien votre premier graphique avec votre code.
Par contre, pour obtenir le deuxième, voici comment j'ai modifié votre code (j'ai modifié uniquement la troisième ligne en partant de la fin) :
Mais ça ne m'affiche pas votre deuxième graphique : savez-vous pourquoi ?
Par contre, pour obtenir le deuxième, voici comment j'ai modifié votre code (j'ai modifié uniquement la troisième ligne en partant de la fin) :
Code : Tout sélectionner
from scipy.interpolate import lagrange
import sympy
x, y, z, t = sympy.symbols('x y z t')
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
bleu_x = [0,500,600,1000,1250,1750,2000]
bleu_y = [100,285,300,350,385,225,100]
rouge_x = [50,75,400,650,1200,1900]
rouge_y = [100,110,250,340,380,140]
abscisses = numpy.linspace(0,2000,1000)
images = numpy.array([Interpolation_Lagrange(abscisses[i],bleu_x,bleu_y) for i in range(len(abscisses))]) # images des points de la subdivision par le polynôme d'interpolation de lagrange
plt.scatter(rouge_x,rouge_y, color="green")
plt.plot(abscisses,images, color = "red")
plt.show()
-
- Messages : 10398
- Enregistré le : lun. 30 août 2010 11:15
Re: Polynôme
Il faut aussi modifier la ligne d’au-dessus car la fonction polynôme de Lagrange doit s’appliquer à rouge_x et rouge_y.
Re: Polynôme
OK, c'est bon j'ai réussi merci !
Pour la question suivante, je dirais que c'est une bonne idée car ça permettrait d'avoir plus de données et d'avoir une représentation plus fidèle à la réalité ? Etes-vous d'accord avec moi ?
Pour la question suivante, je dirais que c'est une bonne idée car ça permettrait d'avoir plus de données et d'avoir une représentation plus fidèle à la réalité ? Etes-vous d'accord avec moi ?
-
- Messages : 10398
- Enregistré le : lun. 30 août 2010 11:15
Re: Polynôme
Bonjour,
c'est peut-être une fausse bonne idée... le fait de rajouter des points augmente le degré du polynôme et celui-ci peut devenir "moins régulier" : tout dépend de la répartition des points.
Essaie de tracer ta courbe en réunissant les listes bleu_x et rouge_x ainsi que bleu_y et rouge_y :
Tu verras ce que cela donne....
c'est peut-être une fausse bonne idée... le fait de rajouter des points augmente le degré du polynôme et celui-ci peut devenir "moins régulier" : tout dépend de la répartition des points.
Essaie de tracer ta courbe en réunissant les listes bleu_x et rouge_x ainsi que bleu_y et rouge_y :
Code : Tout sélectionner
bleu_x = [0,500,600,1000,1250,1750,2000]
bleu_y = [100,285,300,350,385,225,100]
rouge_x = [50,75,400,650,1200,1900]
rouge_y = [100,110,250,340,380,140]
union_x = sorted(bleu_x + rouge_x)
union_y = sorted(bleu_y + rouge_y)
abscisses = numpy.linspace(0,2000,1000)
images = numpy.array([Interpolation_Lagrange(abscisses[i],union_x,union_y) for i in range(len(abscisses))]) # images des points de la subdivision par le polynôme d'interpolation de lagrange
plt.scatter(union_x,union_y, color="green")
plt.plot(abscisses,images, color = "red")
plt.show()
Re: Polynôme
Bonjour,
Merci je vais regarder ça dès que j'ai un PC à ma disposition.
Il y a quand-même quelque chose que je comprends pas : pourquoi le fait de rajouter des points augmente le degré du polynôme ?
Pourriez-vous m'expliquer svp ?
Et qu'est-ce qu'un polynôme régulier / non régulier ?
Merci je vais regarder ça dès que j'ai un PC à ma disposition.
Il y a quand-même quelque chose que je comprends pas : pourquoi le fait de rajouter des points augmente le degré du polynôme ?
Pourriez-vous m'expliquer svp ?
Et qu'est-ce qu'un polynôme régulier / non régulier ?