Résolution d'un système d'edo avec python
Réponses
-
Bonjour Paul
Tu peux m’aider à améliorer mon code? Stp
Ou bien Bissam ou quelqu’un d’autre?
À partir de t=5 il donne des valeurs à 0.2 au dessus. Je ne comprends pas pourquoi.
Merci beaucoup d’avance. -
Je n'ai fait que reprendre le code en essayant de l'adapter pour supprimer les "append", donc je ne maîtrise pas trop le résultat et pas sûr que cela soit juste.
J'espère toutefois qu'il y a des "choses" utiles à reprendreimport matplotlib.pyplot as plt import numpy as np import os path = PATH = str(os.path.abspath('')) # Constantes tau=2. a=0.01 b=80000. beta=0.1 sigma=1. # Pas de temps h=0.0001 ntau=int(tau/h) #temps final T=25. #M=nb de pas de temps M=int(T/h)+1 # pre-dimensionnement du tableau & initialisation U = np.zeros(M+1) I = np.copy(U) V = np.copy(U) t = np.copy(U) U[0]=1. I[0]=0. V[0]=4.5 for n in range(1,M+1): # on commense au premier if n>ntau: V[n] = (V[n-1] + h*b*I[n-ntau])/(1+h*sigma) else: V[n] = V[n-1]/(1+h*sigma) U[n] = U[n-1]/(1 + a*h*V[n-1]) I[n] = (I[n-1] + a*h*U[n]*V[n])/(1+beta*h) t[n] = t[n-1] + h # Figure fig, ax = plt.subplots(figsize=(8, 8)) ax.plot(t, U, color = 'b', linewidth=1.5, linestyle ='-', label = r"$U$") # ax.plot(t, V, color = 'g', linewidth=1.5, linestyle ='-', label = r"$V$") ax.plot(t, I, color = 'r', linewidth=1.5, linestyle ='-', label = r"$I$") ax.minorticks_on() ax.grid(which='major', linestyle='-', linewidth='1.', color='black') ax.grid(which='minor', linestyle=':', linewidth='0.5', color='blue') ax.set_xlabel(r"t", fontsize=20) ax.set_ylabel(r"??", fontsize=20) # plt.legend(loc="lower right", title=r"Legend", frameon=True, fontsize=20) plt.legend(loc="upper right", title=r"Legend", frameon=True, fontsize=14, facecolor = "white", edgecolor = "black") plt.savefig(PATH + '/plot.png',dpi=300) fichier = 'toto.txt' tableau = np.transpose(np.vstack((t,U,V,I))) np.savetxt(path + '/' + fichier, tableau, delimiter=';')
-
Pardon. Ca n'affiche pas toute les valeurs de log10(V), ca met des pointillés. Est-ce que c'est possible d'avoir une colonne pour t et une autre pour log10V? Stp
-
c'est en dehors de la boucle qu'il faut calculer $log10(V)$; le reste du code reste inchangé
for n in range(1,M+1): # on commence à t>0 if n>ntau: V[n] = (V[n-1] + h*b*I[n-ntau])/(1+h*sigma) else: V[n] = V[n-1]/(1+h*sigma) U[n] = U[n-1]/(1 + a*h*V[n-1]) I[n] = (I[n-1] + a*h*U[n]*V[n])/(1+beta*h) t[n] = t[n-1] + h # passage de V à log10(V) V = np.log10(V)
ensuite tu mets ce que tu veux dans ton "tableau)tableau = np.transpose(np.vstack((t,U,V,I))) ou juste tableau = np.transpose(np.vstack((t,V)))
-
Voici une capture de ce qui s'affiche, ce ne sont pas toutes les valeurs qui sont affichées
-
ah ok
Ton éditeur (IDE) ne peut pas afficher les 250_000 lignes (ou colonnes), donc il ajoute des pointillés et n'affiche que les premières et dernières x valeurs. Pour t'en convaincre, il suffit d'éditer le fichier txt qui a été créé.
Personnellement j'utilise Spyder comme IDE (sous Anaconda), et Vi comme éditeur, mais Excel fera très bien son office ici puisque c'est un format genre "csv" -
On obtient exactement les mêmes résultats.
A partir de t=5 c'est plus grand de 0.2. Je suis complétement perdue et je ne sais plus quoi faire pour améliorer le code et enlever ces 0.2 en plus -
Merci infiniment paul18 , ton aide m'a été d'un grand réconfort!
Merci :-) -
Je ne sais pas d'où vient l'écart de 0.2 ; c'est peut-être une histoire de paramètres à recaler ...
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 163.2K Toutes les catégories
- 9 Collège/Lycée
- 21.9K Algèbre
- 37.1K Analyse
- 6.2K Arithmétique
- 53 Catégories et structures
- 1K Combinatoire et Graphes
- 11 Sciences des données
- 5K Concours et Examens
- 11 CultureMath
- 47 Enseignement à distance
- 2.9K Fondements et Logique
- 10.3K Géométrie
- 65 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 68 Informatique théorique
- 3.8K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 314 Mathématiques et Physique
- 4.9K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10K Probabilités, théorie de la mesure
- 773 Shtam
- 4.2K Statistiques
- 3.7K Topologie
- 1.4K Vie du Forum et de ses membres