Chaka Posté(e) le 7 mai 2021 Signaler Posté(e) le 7 mai 2021 Bonjour, \(\left\{ \begin{array}{ll} y'(t)=y(t)\\ y(0)=1 \end{array} \right.\) Cependant, ma méthode de Heun me fais du n'importe quoi (du moins son approximation devrait être bien plus proche de la solution théorique). Voyez-vous mon erreur dans le script : def heun(fh,t0,tf,y0,N): y=[y0] t, pas=np.linspace(t0,tf,N+1), (tf-t0)/N #Initialisation k1=[fh(t[0],y[0])] k2=[fh(t[1],y[0]+pas*k1[0])] for i in range(N): k1.append(fh(t[i],y[i])) k2.append(fh(t[i+1],y[i]+pas*k1[i])) y.append(y[i]+pas*(k1[i]+k2[i])/2) return y (En pièce jointe le graphe comparatif des approximations de la solution: première capture pour 6 points, deuxième avec 21 points ). En effet Heun devrait être très proche de RK4 et être " plus précis " qu'Euler. Merci pour vos retours
E-Bahut julesx Posté(e) le 7 mai 2021 E-Bahut Signaler Posté(e) le 7 mai 2021 Bonjour, J'ai essayé ton script, en rajoutant ce qu'il faut pour pouvoir l'exécuter et afficher la courbe. Dans le def heun, j'ai du mettre return t,y mais c'est annexe. A priori, je ne vois donc pas d'erreur. Par contre, comme je n'ai pas étudié de près les différentes méthodes, je ne sais pas laquelle doit donner les meilleurs résultats. Je sais juste qu'en principe, on recommande RK4. Bon, si on augmente suffisamment la valeur de N, on finit par rendre indiscernable les courbes obtenues avec heun et la courbe théorique, mais je ne pense pas que cela résolve ton problème. Essaie de voir sur la toile, il y a peut-être des forums qui traitent de cela.
Chaka Posté(e) le 7 mai 2021 Auteur Signaler Posté(e) le 7 mai 2021 Bonsoir, Merci pour ton retour. On est censé trouvé que les méthodes d'ordre 1 (Euler) sont les moins précises, celle d'ordre 2 (Heun) un peu plus et celle d'ordre 4 le plus précis (RK4) Je vais chercher sur le web. Bonne soirée
E-Bahut julesx Posté(e) le 7 mai 2021 E-Bahut Signaler Posté(e) le 7 mai 2021 il y a 8 minutes, Chaka a dit : Je vais chercher sur le web. Je pense que c'est la meilleure solution. Sur ce site, on est quelques-un à bidouiller avec Python (ou avec d'autres logiciels de programmation) mais je n'ai, jusqu'à présent, pas vu de réponses d'intervenants vraiment au top (mais je ne suis pas là depuis le début). Si je me trompe, qu'ils se manifestent ! La difficulté est aussi d'adapter la démarche de la programmation à celle du concept mathématique que l'on veut étudier. Bon courage !
Chaka Posté(e) le 7 mai 2021 Auteur Signaler Posté(e) le 7 mai 2021 Oui tout à fait. En tout cas, je te remercie car tu es le seul à me répondre régulièrement qui plus est rapidement ! Bonne soirée.
Étienne9 Posté(e) le 17 juin 2021 Signaler Posté(e) le 17 juin 2021 Hello, Trop tard ? Ou ? Cordialement
Chaka Posté(e) le 17 juin 2021 Auteur Signaler Posté(e) le 17 juin 2021 Bonjour, Trop tard mais j'ai fait avec ! J'ai fait un compte rendu sur ces différentes méthodes et sur l'attracteur de newton si cela en intéresse certains (même si des équivalents sont trouvables facilement sur internet). Bien cordialement.
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.