Loading [MathJax]/jax/output/HTML-CSS/jax.js
Aller au contenu

Messages recommandés

Posté(e)

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

image.png

image.png

  • E-Bahut
Posté(e)

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.

Posté(e)

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
Posté(e)
  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 !

 

Posté(e)

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.

  • 1 mois plus tard...
Posté(e)

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. 

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...
spam filtering
spam filtering