import matplotlib.pyplot as plt import numpy as np from scipy.optimize import curve_fit #modélisation par une fonction exponentielle décroissante def modele(t, a, b): """ Modèle d'une fonction exponentielle décroissante """ return a * np.exp(-b*t) #fonction de tracé d'une courbe avec sa modélisation def trace(nom,abscisse,ordonnee,couleur): ''' Fonction traçant une courbe et sa modélisation paramètres : nom :chaine de caractères du type X=f(t) abscisse : tableau numpy contenant les abscisses ordonnée : tableau numpy contenant les ordonnées ''' # tracé de la courbe expérimentale plt.plot( abscisse,ordonnee, color = couleur, label = "Mesures : "+nom, marker = '+') # calcul du modèle parametres, covariance = curve_fit(modele, abscisse,ordonnee) print(parametres) # calcul des ordonnées du modèle avec la fonction du modèle et les paramètres optimisés modelisation = modele(t, *parametres) # *parametres -> unpacking des paramètres du modèle #chaine de caractères représentant l'équation modélisée N0 , lamb = parametres expression="Modèle : "+nom[0]+"="+str(int(N0))+".exp(-"+str(round(lamb,3))+".t)" #tracé du modèle plt.plot(t, modelisation, label=expression, color='black') # Lecture des donnees du fichier csv t,N,A = np.loadtxt('radioactivite.csv', unpack=True, usecols=(0, 1,2), delimiter = ';', skiprows = 1) #affichage des données chargées à partir du fichier print(t) print(N) print(A) # Creation des graphiques plt.figure('Décroissance radioactive',figsize=(16,7),dpi=80) # Création du graphique N avec sa modélisation plt.subplot(2,1,1) plt.axis([1,t[-1],0,N[0]]) plt.xlabel('Temps t(s)') plt.ylabel('Nombre de noyaux N') trace("N=f(t)",t,N,"red") plt.legend() # Creation du graphique A plt.subplot(2,1,2) plt.axis([1,t[-1],0,A[0]]) plt.xlabel('Temps t(s)') plt.ylabel('Activité') trace("A=f(t)",t,A,"blue") plt.legend() #affichage plt.show()