Chaka Posté(e) le 7 mai 2021 Signaler Share 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 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 7 mai 2021 E-Bahut Signaler Share 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Chaka Posté(e) le 7 mai 2021 Auteur Signaler Share 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 7 mai 2021 E-Bahut Signaler Share 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 ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Chaka Posté(e) le 7 mai 2021 Auteur Signaler Share 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Étienne9 Posté(e) le 17 juin 2021 Signaler Share Posté(e) le 17 juin 2021 Hello, Trop tard ? Ou ? Cordialement Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Chaka Posté(e) le 17 juin 2021 Auteur Signaler Share 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
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.