#!/usr/bin/python3 # -*- coding: utf-8 -*- # pylint: disable=invalid-name """ TP AP1 Licence SESI 1ère année Univ. Lille 1 analyse_en_moyenne.py TP4 - Evaluation empirique des tris Analyse du coût moyen du tri par insertion http://www.fil.univ-lille1.fr/~L1S2API/CoursTP/tp4_tri.html """ # Analyse des arguments import argparse parser = argparse.ArgumentParser(description='Analyse le coût moyen du tri par insertion.') parser.add_argument('--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") args = parser.parse_args() m = args.m from analyse_tris import nbre_moyen_tri_insertion xData = list(range(1, 101)) yData = [nbre_moyen_tri_insertion(m, i) for i in xData] # Peut prendre un certain temps # Affichage des données if args.brut: for i in range(len(xData)): print("{:<3} {:>14}".format(xData[i], yData[i])) # Régression polynominale from numpy import polyfit if args.poly: polynome = polyfit(xData, yData, 2) if args.brut: print("Polynôme : {}".format(polynome)) # Affichage from matplotlib import pyplot if args.graph: pyplot.plot(xData, yData, 'x') if args.poly: if args.poly: def f(x): """ float → float Retourne un point de la regression polynominale de l'analyse du tri. CU : polynome est défini et est de degré 2 """ return polynome[0] * x ** 2 + polynome[1] * x + polynome[2] pyplot.plot(xData, [f(x) for x in xData], '-') pyplot.show()