import numpy as np import matplotlib.pyplot as plt print('------ 3.17 ---------------') print("Polynôme passant au mieux par des points donnés.") ax = np.linspace(-2.5, 2.5, 21, np.float64) # Donnée ay = np.sin(ax) # Donnée nDeg = 17 coefs = np.polyfit(ax, ay, nDeg) # Coefficients du polynôme de degré 3 coefs = np.flip(coefs) # Change l'ordre des nombres dans le vecteur print("Solution = ", coefs) # Graphique, les points, le polynôme et le sinus. xx = np.linspace(-2.5, 2.5, 81, np.float64) # Abscisses des points pour tracer le polynôme yy = coefs[0] for jj in range(1,nDeg+1): yy += coefs[jj]*xx**jj plt.plot(ax, ay, 'o') # Affiche les points plt.plot(xx, yy, '-') # Trace le polynôme plt.plot(xx, np.sin(xx), '-') # Trace le sinus plt.title('Polynôme passant au mieux par les points.') plt.xlabel('x') plt.ylabel('y = sin(x)') plt.legend(['points', 'y=poly(x)', 'y=sin(x)'], loc='upper left') plt.axis([-2.5, 2.5, -1.5, 1.5]) # Limites des axes plt.show() ydiff = yy - np.sin(xx) plt.plot(xx, ydiff, '-') # Trace la différence entrel le polynôme et le sinus plt.title('Différence : "Polynôme passant au mieux par les points" - Sinus.') plt.xlabel('x') plt.ylabel('y = différence') plt.xlim(-2.5, 2.5) # Limites de l'axe X c.f. https://python.developpez.com/tutoriels/graphique-2d/matplotlib/#LII-D fig = plt.gcf(); fig.set_size_inches(8, 5) # autre manière de faire plt.show()