login.php?sid=9e28aae720a1fb009b3238e0fbc1c786 profile.php?mode=register&sid=9e28aae720a1fb009b3238e0fbc1c786 faq.php?sid=9e28aae720a1fb009b3238e0fbc1c786 memberlist.php?sid=9e28aae720a1fb009b3238e0fbc1c786 search.php?sid=9e28aae720a1fb009b3238e0fbc1c786 index.php?sid=9e28aae720a1fb009b3238e0fbc1c786

Création de macros avancées : méthode d'Euler
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic     Forum Index -> Utilisation de CaRMetal
View previous topic :: View next topic  
Author Message
Remy



Joined: 04 May 2008
Posts: 40
Location: Nanterre

PostPosted: Sat May 10, 2008 2:08 pm    Post subject: Création de macros avancées : méthode d'Euler Reply with quote

Bonjour,

Je cherche à faire découvrir à mes 1e S la méthode d'Euler (sur un exemple). CaRMetal propose une création de macros très facile, qui me permet, à partir d'un point de départ, de la fonction à "intégrer" et d'un pas h, de créer un nouveau point par approximation affine.
Mais un seul ! Et je suis donc obligé de réitérer l'opération (macro personnelle Euler) autant de fois que nécessaire...
Or l'intérêt est de se fixer un intervalle (par exemple [0;2]) puis créer autant de points que nécessaire pour couvrir cet intervalle. Ensuite, on augmente le nombre de points pour voir la précision augmenter. Et je ne vois pas comment faire. Est-ce possible (à partir des if ou while) ? Smile

Merci,
Rémy.



Euler20.zir
 Description:
Méthode d'Euler appliquée à la fonction f(x) = 1/(1+x^2).

Ici h = 0,1 et l'intervalle est [0;2].

Download
 Filename:  Euler20.zir
 Filesize:  14.64 KB
 Downloaded:  323 Time(s)


Euler4.zir
 Description:
Méthode d'Euler appliquée à la fonction f(x) = 1/(1+x^2)

Download
 Filename:  Euler4.zir
 Filesize:  6.88 KB
 Downloaded:  307 Time(s)

Back to top
View user's profile Send private message
monique31



Joined: 03 Nov 2007
Posts: 306
Location: Toulouse

PostPosted: Sat May 10, 2008 8:26 pm    Post subject: Reply with quote

Très jolie la figure ! Et c'est sûr que c'est très facile à faire faire par des élèves. En plus les élèves adorent faire des macros.

Bon, je réponds d'abord à la question.
Les if existent, mais pas les while. Donc les boucles ne sont pas possibles.
Alors je propose une méthode simple pour résoudre ton problème (voir fichier joint)

- j'ai repris exactement ta construction et ta macro, sauf que h je l'ai appelé k, et que je ne l'ai pas mis sous forme de curseur : c'est une simple expression posée sur le bureau. Et dans les propriétés de la macro j'ai déclaré f et k comme "fixes". Attention, dire que k est fixe veut simplement dire qu'il est implicite, c'est à dire non demandé lors de l'exécution de la macro. Pour le faire varier, il suffit d'un clic-droit sur l'expression.

- ensuite cette macro je l'ai utilisée 10 fois, en faisant très attention à l'apparence des objets une fois le travail fini : les 9 premiers points sont bleus et pales, le dixième est rouge et foncé

- puis j'ai transformé çà en macro ! Mais c'est là qu'il y a une super astuce (çà c'est une trouvaille de René Grothmann) : objets initiaux k, la fonction, le point A0 ; objets finaux : aucun !!!!!!!! Puis la macro a été enregistrée sous le nom de "Euler 10 fois". Quand on ne déclare aucun objet final, c'est toute la construction ultérieure qui est enregistrée dans la macro, les objets gardant leurs formes couleurs etc.


Tu peux même ensuite t'amuser et faire une macro "Euler 100 fois" en appliquant celle là 10 fois et en transformant à nouveau le tout en macro.

Ensuite si tu veux recouvrir exactement l'intervalle [0;2] un clic-droit sur k pour lui donner la bonne valeur en fonction du nombre d'étapes désirées.


Parenthèse : René Grothmann a écrit un très bel article sur quelque chose un peu du même genre, avec les suites de points et des fractales, par macros. C'est l'article de CaRzine intitulé "fun macros", page 4 de "CaRzine".



Euler_monique.zir
 Description:

Download
 Filename:  Euler_monique.zir
 Filesize:  46.68 KB
 Downloaded:  318 Time(s)

Back to top
View user's profile Send private message Send e-mail
Hesperion



Joined: 11 Nov 2007
Posts: 218
Location: Blois

PostPosted: Sun May 11, 2008 8:24 am    Post subject: Reply with quote

Si je peux me permettre une optimisation :

Si j'ai bien suivi, tu as créé la primitive F de f, puis tu as placé A0 appartenant à la courbe représentative.

Seulement le fait de créer la primitive F de f l'inclus dans tout ce que créé la macro, ce qui rend la manipulation un peu lourde au bout d'un 100aine d'itérations (avec 100 fois la courbe de F) !

En fait, l'utilité de cette méthode est lorsqu'on ne peut pas avoir facilement F, donc autant ne pas la créer tout de suite. Par contre, on peut connaître facilement certains points de F, ici F(0) = 0 étant donné la définition de F.

On applique la méthode d'Euler, et on vérifie en traçant F.

Voila, en espérant ne pas raconter trop de bêtises.



Euler pm.zir
 Description:

Download
 Filename:  Euler pm.zir
 Filesize:  12.81 KB
 Downloaded:  299 Time(s)

Back to top
View user's profile Send private message Send e-mail
Remy



Joined: 04 May 2008
Posts: 40
Location: Nanterre

PostPosted: Sun May 11, 2008 1:07 pm    Post subject: Reply with quote

Merci à vous !

En fait, je cherche même à fixer l'intervalle, puis à augmenter le nombre n de pas (curseur ou expression, peu importe j'imagine) ; l'idéal étant que le logiciel crée automatiquement n points avec la méthode d'Euler.

Mais je vais chercher du côté des objets auto-référents ! En plus j'aime bien les fractals...
Si je trouve du nouveau je balance mes fichiers ici ! Merci encore.

PS : Je viens de découvrir (il y a deux-trois mois) CaRMetal, donc mes élèves n'en profitent pas trop cette année --- en plus je suis néo-titulaire. Et le niveau de mes 1e S est bien faible, donc ça m'aurait pris du temps de les initier à ce logiciel et en particulier aux macros ! Peut-être l'an prochain...
Back to top
View user's profile Send private message
yves974
Site Admin


Joined: 30 Oct 2007
Posts: 261
Location: Réunion

PostPosted: Sun May 11, 2008 1:16 pm    Post subject: Reply with quote

Bon super tout ça ... j'aime bien la _pm.

Je voulais faire remarquer que c'est du Euler explicite et sur cette fonction là on doit pouvoir faire aussi de l'implicite (désolé je suis sur d'autres trucs pas vraiment le temps de regardé tout de suite, mais ce soir probablement ..)

En plus l'intérêt des deux est que la moyenne est d'ordre 2 (en 1/n2 quoi) au lieu d'être en 1/n. La moyenne correspond à la méthode des trapèzes en fait.

Comme je sais pas trop intégrer une image dans le forum, je vous propose de lire ça : c'est la seconde image à adapter à la fonction

http://revue.sesamath.net/spip.php?article10

Si on est courageux, la vidéo explique bien aussi.

Si vous n'avez pas fait la figure avant, je devrais la poster sur le forum dans la soirée (ça me servira pour ma formation CaRMetal mardi, alors merci Wink.
Back to top
View user's profile Send private message
Remy



Joined: 04 May 2008
Posts: 40
Location: Nanterre

PostPosted: Sun May 11, 2008 1:47 pm    Post subject: Reply with quote

En fait, la méthode d'Euler proposée par les programmes du lycée se base sur l'approximation affine f(a+h) "=" f(a)+hf'(a). En première, on ne propose pas d'équation fonctionnelle du genre y' = y, auquel cas on pourrait appliquer la méthode d'Euler comme dans le lien fourni...

Ici il me semble que ce ne sera pas possible d'adapter le procédé, mais je voudrais bien me tromper (comme ça, ça m'obligerait à me replonger dans le calcul numérique)...

En revanche, en TS, ça devient faisable !
Back to top
View user's profile Send private message
yves974
Site Admin


Joined: 30 Oct 2007
Posts: 261
Location: Réunion

PostPosted: Sun May 11, 2008 1:59 pm    Post subject: Reply with quote

OK pour la TS effectivement. Mais moi aussi je vais chercher quand même dès que j'ai un moment ...
Back to top
View user's profile Send private message
Remy



Joined: 04 May 2008
Posts: 40
Location: Nanterre

PostPosted: Sun May 11, 2008 2:07 pm    Post subject: Reply with quote

Cela dit, je ne vois pas du tout à quelle construction géométrique on peut relier la méthode explicite...
Back to top
View user's profile Send private message
Remy



Joined: 04 May 2008
Posts: 40
Location: Nanterre

PostPosted: Sun May 11, 2008 2:30 pm    Post subject: Reply with quote

Bon, pour en revenir à mon problème initial, mon désir serait que CaRMetal me construise automatiquement autant de points que nécessaire pour couvrir un intervalle donné ([0;2] par exemple). Et je ne sais pas comment faire !
Back to top
View user's profile Send private message
yves974
Site Admin


Joined: 30 Oct 2007
Posts: 261
Location: Réunion

PostPosted: Sun May 11, 2008 2:40 pm    Post subject: Reply with quote

Si j'ai bien compris tu cherche à résoudre graphiquement y'=1/(1+x^2)
La méthode Euler explicite est du genre y(t0+h) = y(t0)+hy'(t0)
Jusque là ça va.
Le "si j'ai bien compris" commence là :
La méthode implicite serait alors y(t0+h) = y(t0)+hy'(t0+h)
Et là comme c'est juste un calcul de primitive, effectivement la méthode implicite est on ne peux plus explicite : ce sont (peut-être pas tout à fait , mais on dirait que si) les rectangle à gauche d'un côté et à gauche de l'autre à droite. Bilan la moyenne est la méthode du point médian qui est équivalente à dcelle du trapèze. Bref on retombe sur ses pattes mais c'est pas transcendant du tout parce que c'est juste une primitive.

Bon, du coup c'est moins motivant qu'une vraie équadif (je me voyais déjà avec l'otiil fonction implicite de Eric) mais je vais quand même regarder ça ..
Back to top
View user's profile Send private message
yves974
Site Admin


Joined: 30 Oct 2007
Posts: 261
Location: Réunion

PostPosted: Sun May 11, 2008 2:41 pm    Post subject: Reply with quote

OK OK on va revenir au problème initial, d'accord, on laisse tomber le reste d'autant que c'est un vrai problème ...
Back to top
View user's profile Send private message
Remy



Joined: 04 May 2008
Posts: 40
Location: Nanterre

PostPosted: Sun May 11, 2008 2:48 pm    Post subject: Reply with quote

Non, non, c'est intéressant ! Je vais revoir ça. Mais du coup on fait la construction en utilisant en quelque sorte la tangente au point suivant; Je n'y pensais pas.
Back to top
View user's profile Send private message
Remy



Joined: 04 May 2008
Posts: 40
Location: Nanterre

PostPosted: Sun May 11, 2008 3:10 pm    Post subject: Reply with quote

Retour aux sources ! Wink

Malheureusement ce n'est toujours pas ce qu'il me faut précisément. Mais je vais y regarder (à l'aide du conseil de Monique).



EulerNV.zir
 Description:
J'ai ici rajouté une condition sur les points créés : leurs abscisses doivent appartenir à [0;2]. On peut aussi modifier les conditions initiales.

Download
 Filename:  EulerNV.zir
 Filesize:  27.71 KB
 Downloaded:  270 Time(s)

Back to top
View user's profile Send private message
Remy



Joined: 04 May 2008
Posts: 40
Location: Nanterre

PostPosted: Sun May 11, 2008 6:28 pm    Post subject: Reply with quote

Méthode d'Euler implicite cette fois-ci, toujours avec la condition que les abscisses soient inférieures à 2. (Bon, en fait, c'est nul comme restriction !)


Je rajoute également la méthode des trapèzes, d'après Yves. Bon, le souci c'est que je fabrique du coup des expressions horribles pour les coordonnées de points...


C'est un essai !



Méthode-trapèzes.zir
 Description:
Méthode des trapèzes

Download
 Filename:  Méthode-trapèzes.zir
 Filesize:  42.27 KB
 Downloaded:  300 Time(s)


Euler-implicite.zir
 Description:
Méthode d'Euler implicite

Download
 Filename:  Euler-implicite.zir
 Filesize:  33.96 KB
 Downloaded:  319 Time(s)

Back to top
View user's profile Send private message
yves974
Site Admin


Joined: 30 Oct 2007
Posts: 261
Location: Réunion

PostPosted: Sun May 11, 2008 6:53 pm    Post subject: Reply with quote

Bon ben moi j'aborde un autre point de vue. Je fais les construction entre 0 et x ( en fait entre A0(x0,y0) et x et ensuite j'ai mis, aprés toutes les constructions A0(0, 0) - plus facile pour les macros.

Cela ne correspond probablement pas à ce que tu veux, mais c'est pour montrer que, fondamentalement ce que cherchait Euler c'était le point (x, f(x)) et que quand x varie, la fonction est - généralement comme ici - C infini.

Sur la figure jointe j'ai forcé - voir pourquoi plus loin - sur un Euler256pas (le point final est le 818 iem et la "courbe rouge" (qu'on voit à peine car j'ai construit la solution par dessus - est composée (par macro) de 256 segments. On peut cacher la solution f1 pour voir la courbe du lieu des (x,y) obtenus par 256 pas.

Note : cette figure est trop lourde pour être ouverte avec la 288 (on peut mais ça bloque un peu quoi). Prendre la webstart car Eric, ce WE - pour tout autre chose - a amélioré des choses là dessus et du cout au lieu de faire un Euler64pas "traditionnel", j'ai fait un 256 pas mais sans la webstart ça rame un max

Donc les courbes sont les courbes C-infini qui correspondent aux approximations d'Euler quand x varie et non pas des affines par morceau comme on dit dans les livres scolaires.

On notera que le 256 pas est proche de la solution exacte même loin (trés lin, à 2) de l'origine ...

A ce sujet lire le commentaire de Dominique Tournès (prof d'université, spécialiste de la question) dans cette page, à la fin :

http://www-cabri.imag.fr/abracadabri/Courbes/EquaDiff/ApprxO1.html

Pour tes courbes ça aurait été bien de mettre implicite et explicite sur la même. Je n'ai pas fait implicite, par paresse, je vais le refaire avec 64 pas seulement.



Euler256pas.zip
 Description:

Download
 Filename:  Euler256pas.zip
 Filesize:  44.4 KB
 Downloaded:  462 Time(s)



Last edited by yves974 on Sun May 11, 2008 8:31 pm; edited 1 time in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> Utilisation de CaRMetal All times are GMT
Goto page 1, 2, 3  Next
Page 1 of 3

 
  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin