Indépendance vis-à-vis du degré des pôlynomes.

This commit is contained in:
Geoffrey Frogeye 2015-03-15 11:38:52 +01:00
parent d6749e5445
commit 58f72474cb
2 changed files with 18 additions and 9 deletions

View file

@ -19,10 +19,14 @@ http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp4_tri.html
# Analyse des arguments # Analyse des arguments
import argparse import argparse
parser = argparse.ArgumentParser(description='Analyse le coût moyen du tri par insertion.') parser = argparse.ArgumentParser(
parser.add_argument('--brut', action='store_true', help="afficher les données brutes") description='Analyse le coût moyen du tri par insertion.')
parser.add_argument('--poly', action='store_true', help="calculer la regression pôlynominale") parser.add_argument(
parser.add_argument('--graph', action='store_true', help="voir les données sous forme de graphique") '--brut', action='store_true', help="afficher les données brutes")
parser.add_argument(
'--poly', action='store_true', help="calculer la regression pôlynominale")
parser.add_argument(
'--graph', action='store_true', help="voir les données sous forme de graphique")
parser.add_argument('-m', type=int, default=100, help="Changer la valeur de m") parser.add_argument('-m', type=int, default=100, help="Changer la valeur de m")
args = parser.parse_args() args = parser.parse_args()
@ -31,7 +35,8 @@ args = parser.parse_args()
m = args.m m = args.m
from analyse_tris import nbre_moyen_tri_insertion from analyse_tris import nbre_moyen_tri_insertion
xData = list(range(1, 101)) xData = list(range(1, 101))
yData = [nbre_moyen_tri_insertion(m, i) for i in xData] # Peut prendre un certain temps # Peut prendre un certain temps
yData = [nbre_moyen_tri_insertion(m, i) for i in xData]
# Affichage des données # Affichage des données
if args.brut: if args.brut:
@ -43,7 +48,8 @@ from numpy import polyfit
if args.poly: if args.poly:
polynome = polyfit(xData, yData, 2) polynome = polyfit(xData, yData, 2)
if args.brut: if args.brut:
print("Polynôme : {}".format(polynome)) print("f(x) = {}".format(' '.join(["{:+f} × x^{}" \
.format(polynome[d], len(polynome) - 1 - d) for d in range(len(polynome))])))
# Affichage # Affichage
@ -56,8 +62,11 @@ if args.graph:
""" """
float float float float
Retourne un point de la regression polynominale de l'analyse du tri. Retourne un point de la regression polynominale de l'analyse du tri.
CU : polynome est défini et est de degré 2 CU : polynome est défini
""" """
return polynome[0] * x ** 2 + polynome[1] * x + polynome[2] somme = 0
for d in range(len(polynome)):
somme += polynome[d] * x**(len(polynome) - 1 - d)
return somme
pyplot.plot(xData, [f(x) for x in xData], '-') pyplot.plot(xData, [f(x) for x in xData], '-')
pyplot.show() pyplot.show()

View file

@ -366,7 +366,7 @@ section("Avec Gnuplot")
question(1) question(1)
reponse("Graphiquement, on trouve que cette fonction a pour expression 0,287x²-2x+1\n\ reponse("Graphiquement, on trouve que cette fonction a pour expression 0,287 × - 2 × x + 1\n\
Cette fonction correspond à la commande suivante : \n\ Cette fonction correspond à la commande suivante : \n\
gnuplot> plot 'tri_insertion_moyen.txt', 0.287*x**2-2*x +1 with lines\n\ gnuplot> plot 'tri_insertion_moyen.txt', 0.287*x**2-2*x +1 with lines\n\
On peut aussi trouver des valeurs plus précises en faisant une regression pôlynominale des données \ On peut aussi trouver des valeurs plus précises en faisant une regression pôlynominale des données \