#! /usr/bin/env python # -*- coding: utf-8 -*- """ Utilisation de tableaux "array" pour des polynômes """ import numpy as np from numpy.polynomial import Polynomial as P # les coefficients du polynômes sont donnés par ordre décroissance des dégrés a = P([4., 3., 2., 1.]) # = x³ + 2x² + 3x + 4 print("polynôme : \n", a, type(a)) # les coefficients de a : print("coefficients : ", a.coef) # les racines de a : print("racines : ", a.roots()) # l'ordre du polynôme : print("ordre : ", a.degree()) # évaluations sur un vecteur x = np.linspace(0, 2., 21) print("x = ", x) print("évaluation en x : ", a(x)) # dérivation print("dérivée : \n", a.deriv(1)) print("dérivée seconde : \n", a.deriv(2)) print("dérivée troisième : \n", a.deriv(3)) print("dérivée quatrième : \n", a.deriv(4)) # intégration print("intégrale : \n", a.integ(1)) # création d'un polynôme par ses racines b = a.roots() c = P.fromroots(b) print("Polynômes recrées par les racines :\n", c) # # fitting polynomial # # utilisation de poly1d (ancienne librairie) # # numpy.polyfit (poly1d) : # https://docs.scipy.org/doc/numpy/reference/routines.polynomials.poly1d.html # https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html # xd = np.array([0., 1., 2., 3., 4., 5.]) yd = np.array([0.05, 0.99, 3.95, 9.17, 15.86, 24.93]) pfit = np.poly1d(np.polyfit(xd, yd, 2)) print("fit d'une parabole (polynôme d'ordre 2) sur ces x et y :") print(xd) print(yd) print("polynôme de fit : \n", pfit) # # "Unfortunately, np.polynomial.polynomial.polyfit returns the coefficients # in the opposite order of that for np.polyfit and np.polyval" # → https://stackoverflow.com/questions/18767523/fitting-data-with-numpy # ################################################## # Ajouter les fits utilisant numpy.polynomial... # ################################################## # # numpy.polynomial.polynomial.Polynomial.fit : # https://docs.scipy.org/doc/numpy/reference/routines.polynomials.html # https://docs.scipy.org/doc/numpy/reference/routines.polynomials.package.html # https://docs.scipy.org/doc/numpy/reference/routines.polynomials.classes.html # https://docs.scipy.org/doc/numpy/reference/generated/numpy.polynomial.polynomial.Polynomial.fit.html # # numpy.polynomial.polynomial.polyfit : # https://docs.scipy.org/doc/numpy/reference/generated/numpy.polynomial.polynomial.polyfit.html #