| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
AntiMath
Inscrit le: 20 Aoû 2010 Messages: 13 Localisation: Antilles
|
Posté le: Lun Aoû 30, 2010 7:16 pm Sujet du message: Champ de pentes |
|
|
Bonjour, je m'intéresse à l'approche graphique d'équations différentielles, du type y'=f(x,y), avec par exemple f(x,y)=-y^2.
Je sais faire une macro qui à partir d'un point (x,y) trace le vecteur issu de ce point et d'extremités (x+1,y+f(x,y)) (ou le vecteur normé associé).
Je peux ainsi constater, une fois la courbe solution tracée, la coïncidence entre ce vecteur en un point de la courbe (macro) et la tangente à la courbe (outil tangente).
Je n'ai pas encore assimilé la notion de script
Je voudrais savoir s'il y a moyen de faire tracer ce champ de vecteurs issus mettons de tous les points à coordonnées entières entre a=-5 et +5, par exemple? Est-ce qu'alors la valeur de a peut être un objet d'entrée? idem pour la fonction f?
Je ne sais pas si je suis bien clair
Merci d'avance |
|
| Revenir en haut de page |
|
 |
yves974 Site Admin

Inscrit le: 30 Oct 2007 Messages: 244 Localisation: Réunion
|
Posté le: Lun Aoû 30, 2010 8:11 pm Sujet du message: |
|
|
Quelque chose comme ça peut-être (macro et script dans la figure)
| Code: |
for (i=0; i<10; i=i+1){
for (j=0; j<10; j=j+1){
k=10*i+j
a=Point("A"+k,-5+i,-5+j);
ExecuteMacro("PourAntiMath","f2,A"+k);
}
}
|
|
|
| Revenir en haut de page |
|
 |
yves974 Site Admin

Inscrit le: 30 Oct 2007 Messages: 244 Localisation: Réunion
|
Posté le: Lun Aoû 30, 2010 8:19 pm Sujet du message: |
|
|
Merci de cette question, super fun
(dans la figure précédente faite trop vite, il faut peut-être ouvrir le panneau de gauche pour voir f2 sinon c'est hors écran, désolé |
|
| Revenir en haut de page |
|
 |
AntiMath
Inscrit le: 20 Aoû 2010 Messages: 13 Localisation: Antilles
|
Posté le: Lun Aoû 30, 2010 9:43 pm Sujet du message: |
|
|
Merci très joli
J'aime bien apprendre sur des exemples qui m'ont obligé à réfléchir;
là j'étais parti sur une mauvaise piste ...
Cependant, je ne comprends ta macro :
je ne sais pas (et ne sais pas comment savoir)
quel est l'objet de sortie?
Ensuite, dans le script, quel est le rôle du ''A'' ?
Merci d'avance !
PS :
pour la macro, je pense avoir compris, reste la question:
est-il possible d'éditer celle que tu as écrite?
pour le ''A'', j'en vois le rôle, mais quelle est la valeur par défaut?
il n'y a pas d'initialisation
je vais réfléchir au rôle efficace de k
(dsl, je ne connais rien à javascript,
d'où mon erreur sur l'utilisation des boucles
et ma difficulté à décrypter au premier coup d'oeil)
PPS :
Bon, je dois fatiguer, mais je n'arrive plus, une courbe solution étant tracée, à obtenir la tangente en un point, même avec l'option dialogue
d'ailleurs, je n'ai même pas de boîte de dialogue
(certes, je ne travaille pas sur le même portable, mais tout est dans mon DDE) |
|
| Revenir en haut de page |
|
 |
yves974 Site Admin

Inscrit le: 30 Oct 2007 Messages: 244 Localisation: Réunion
|
Posté le: Mar Aoû 31, 2010 9:14 am Sujet du message: |
|
|
| AntiMath a écrit: |
Cependant, je ne comprends ta macro :
je ne sais pas (et ne sais pas comment savoir)
quel est l'objet de sortie?
Ensuite, dans le script, quel est le rôle du ''A'' ?
|
(les illustrations sont à l'envers, la première est en bas du post désolé, pas habitué à la polonaise inversée sur les illustrations)
Pour la macro j'ai fait ce que tu as dit : le point P3 donné par le calcul (illustration. Cercle de rayon fixe pour prendre des vecteurs unitaires. La macro renvoie le vecteur comme objet final à partir de la formule et de M comme initiaux
Spécial Eric (si tu passes par là) : il semble bien qu'il ne faille pas mettre la fonction en implicite, en script j'ai eu l'impression (fait trés vite) que ça retient pas les implicites, mais pas grave ça fonction très bien sans et comme on a rien à montrer à la souris, je comprends bien que ça ne sert pas de traiter les implicites en script.
L'histoire du nommage du point : là aussi c'était fait en vitesse donc sans réfléchir, une option plus savante aurait été de mettre un "f2,_a" si a est le nom de la variable JS du point construit.
Comme je avais pas trop envie de tester, j'ai mis un point A mais comme on dit en créer beaucoup il faut les indexer (sinon ça fait des A*** jusqu'à 100 étoiles (j'ai déjà fait ça au début de mon exploration des scripts)
Pour l'index, des choses comme "A"+i+j ne va pas non plus soit parfois ça somme soit quand on dépasse 10 ça va pas d'où le k=10*i+j et pour une amplitude de plus de 10 sur i ou j tu prendrais 100*i+j ça irait bien, tu peux d'ailleurs voir le nom des points.
Bon mais là je viens de tester, ce code fonctionne très bien
(attention si tu fais dans une nouvelle figure il faut récupérer la macro et la rendre "de bibliothèque" pour qu'elle soit dispo dans tous le classeur.
| Code: |
for (i=0; i<24; i=i+1){
for (j=0; j<24; j=j+1){
a=Point(-5+i/2,-5+j/2);
ExecuteMacro("PourAntiMath","f1,_a");
}
}
|
et c'est plus propre
Sinon pour adapter avec CaRMetal, ou comprendre le principe d'un point de vue totalement géométrique, mes anciennes pages Cabri (de 2001 !!!) sur le sujet (c'est pour ça que j'ai fait vite, c'est une vieille histoire tout ça)
http://www.reunion.iufm.fr/Dep/Mathematiques/abracadabri/Courbes/EquaDiff/EDiffGene.html
Serait à reprendre avec des scripts et des choses un peu plus contemporaines ... |
|
| Revenir en haut de page |
|
 |
monique31
Inscrit le: 03 Nov 2007 Messages: 297 Localisation: Toulouse
|
Posté le: Mar Aoû 31, 2010 4:04 pm Sujet du message: |
|
|
| AntiMath a écrit: |
| Ensuite, dans le script, quel est le rôle du ''A'' ? |
Si tu regardes la première figure envoyée par Yves et que tu actives l'outil "clé à molette", tu verras que tous les points s'appellent : A11, A12 ou des trucs du genre. Car en javascript le signe + est utilisé pour la concaténation de chaines de carctères : donner à un point le nom "A"+4, c'est en fait lui imposer de s'appeler A4.
C'est pourquoi le second script d'Yves est un peu plus simple : aucun nom n'étant imposé aux points (inutile ici), ils vont s'appeler automatiquement P1, P2 etc jusque P100.
En voyant les exemples proposés dans la discussion, j'ai eu envie d'y ajouter un autre script : celui qui donne les solutions approchées par la méthode d'Euler. Script expliqué pas à pas sur le site dans les tutoriels récents. Il m'a suffi de remplacer une ligne, celle avec la fonction ; ce qui donne :
| Code: |
m="A";
p="B";
n=Input("Nombre d'itérations ?");
for (i=0; i<n; i=i+1){
a=Point("x_m+(x(B)-x(A))/_n","y_m+(x(B)-x(A))/_n*f2(x_m,y_m)");
SetHide(a,true);
s=Segment(m,a);SetHide(s,true);
m=a;
}
|
En faisant tourner le script, j'ai demandé 50 itérations.
Petit changement : les points et segments ont été cachés !!! Mais c'est pour appliquer à la fin la "vraie" méthode d'Euler : avec la baguette magique on affiche tout ce qui est caché, puis on demande le lieu du 50 ième point (clic sur le point) quand B varie (clic sur B). On obtient ceci :
Bien évidemment tout est dynamique : le curseur peut varier, les points A et B également. Et la fonction f2 redéfinie par un simple clic-droit : tout se remet à jour.
As-tu encore des questions sur les macros ou sur autre chose ? |
|
| Revenir en haut de page |
|
 |
AntiMath
Inscrit le: 20 Aoû 2010 Messages: 13 Localisation: Antilles
|
Posté le: Mar Aoû 31, 2010 6:21 pm Sujet du message: |
|
|
Bonjour,
et merci à tous deux pour ces réponses précises et intéressantes
| monique31 a écrit: |
As-tu encore des questions sur les macros ou sur autre chose ? |
Eh bien, ça ne saurait tarder  |
|
| Revenir en haut de page |
|
 |
monique31
Inscrit le: 03 Nov 2007 Messages: 297 Localisation: Toulouse
|
Posté le: Mer Sep 01, 2010 5:30 am Sujet du message: |
|
|
| AntiMath a écrit: |
pour la macro, je pense avoir compris, reste la question:
est-il possible d'éditer celle que tu as écrite? |
Une méthode très simple pour savoir ce qu'une macro a dans le ventre !
Je viens de le faire avec la macro PourAntimath.
La rendre de bibliothèque (voir tuto sur les macros)
L'utiliser sur une figure vide dans un nouvel onglet (avec juste les initiaux dont on a besoin, ici c'est une fonction)
Afficher l'historique : faire un clic-droit dans une zone vide de ce panneau et alors décocher "objets visibles" ; j'obtiens ceci
Il y a les objets visibles, les cachés en plus pâle et les objets intermédiaires qui sont super cachés, en plus pâle mais entre parenthèses.
Par un clic droit sur chacun on obtient une boite de dialogue qui permet de les rendre à nouveau visibles : on retrouve alors le dessin de la construction.
Puis un double-clic (sur P3 par exemple) permet de retrouver dans la barre de propriétés les formules de définition en cas de besoin.
C'est une méthode que j'ai souvent employée pour décortiquer des macros très subtiles (fabriquées par Eric par exemple ...) et c'est fou tout ce que j'y ai appris !!! |
|
| Revenir en haut de page |
|
 |
AntiMath
Inscrit le: 20 Aoû 2010 Messages: 13 Localisation: Antilles
|
Posté le: Mer Sep 01, 2010 11:07 pm Sujet du message: |
|
|
| monique31 a écrit: |
C'est une méthode que j'ai souvent employée pour décortiquer des macros très subtiles (fabriquées par Eric par exemple ...) et c'est fou tout ce que j'y ai appris !!! |
C'est fou ce qu'on apprend grâce aux autres,
alors merci
(peut-être un jour apprendrai-je quelque chose à quelqu'un ) |
|
| Revenir en haut de page |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum You cannot attach files in this forum You cannot download files in this forum
|
|