par Invité » mar. 22 déc. 2020 21:47
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) :
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()
Mais ça ne m'affiche pas votre deuxième graphique : savez-vous pourquoi ?
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) :
[code]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()[/code]
Mais ça ne m'affiche pas votre deuxième graphique : savez-vous pourquoi ?