Chaka Posté(e) le 7 mai 2021 Signaler Posté(e) le 7 mai 2021 Bonjour, {y′(t)=y(t)y(0)=1 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 Citer
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. Citer
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 Citer
E-Bahut julesx Posté(e) le 7 mai 2021 E-Bahut Signaler Posté(e) le 7 mai 2021 Le 07/05/2021 à 18:28, Chaka a dit : Je vais chercher sur le web. Expand 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 ! Citer
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. Citer
Étienne9 Posté(e) le 17 juin 2021 Signaler Posté(e) le 17 juin 2021 Hello, Trop tard ? Ou ? Cordialement Citer
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. Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.