JeuxOnLineForumsPlusConnectés : 371 (sites) | 660 (forums)Créer un compte
Forums divers
La Taverne
Les forums JOL > Forums divers > La Taverne > Problème avec Maple RSS
   
Répondre
Partager Outils Rechercher
Avatar de Greumlins
Greumlins
Alpha & Oméga
 
Avatar de Greumlins
 

Problème avec Maple

Pour ceux qui connaissent, Maple est un logiciel de calcul formel.
Mon problème : j'ai un système d'équations différentielles impossible à résoudre (du type x'=-y*x, y'=y*x+y), ou en tout cas trop difficile pour moi et pour Maple.
Mon but est d'obtenir une courbe montrant l'évolution de x(t) et y(t).

L'idée géniale : faire une boucle sur un intervalle de temps, avec un pas assez réduit, et lui faire afficher un point à chaque itération, jusqu'à obtenir une jolie courbe. Mais je ne sais pas comment programmer ça en Maple ...
J'ai bien réussi à obtenir un petit truc, en calculant toutes les valeurs puis en en sélectionnant quelques unes avec "$", mais c'est pas très précis, et vraiment trop lourd au niveau des calculs, ce qui m'empêche de faire quelques applications un peu plus compliquées.

Donc voila, si y a des utilisateurs chevronnés qui sauraient comment faire ...
Lien direct vers le message - Vieux
Avatar de Aërandis
Aërandis
Alpha & Oméga
 
Avatar de Aërandis
 
Désolé, moi je sais pas faire sa.

Aer qui est constructif
Lien direct vers le message - Vieux
Avatar de - Caïn Abalham -
- Caïn Abalham -
Alpha & Oméga
 
Avatar de - Caïn Abalham -
 
Re: Problème avec Maple
Citation:
Provient du message de Greumlins
Problème avec Maple
Tout est dans le titre

Plus serieusement, tu a pas moyen de mettre toutes tes valeurs dans une matrice, et ensuite d'afficher les valeurs de la matrice ?

Enfin ca fait un bail que jai pas utilisé Maple, mais je doit encore avoir mes TPs qui trainent qq part a la fac, si jamais je trouves un truc utile je te passes ca lundi
Lien direct vers le message - Vieux
Avatar de Aërandis
Aërandis
Alpha & Oméga
 
Avatar de Aërandis
 
Une matrice avec des fonctions à plusieurs variables
Lien direct vers le message - Vieux
Avatar de Melchiorus
Melchiorus
Alpha & Oméga
 
Avatar de Melchiorus
 
Je réécris le problème sous la forme :
x'=f(x,y)
y'=g(x,y)
x(0)=x_0 et y(0)=y_0


L'algorithme
Soit dt = le pas de temps (par exemple dt=0.01)
Soit N = le nombre d'itération (si tu prends N=100 ça dessinera la solution jusqu'au temps t=1)
Tu fais :
x_0->A
y_0->B

pour i variant de 1 à N faire la boucle

début de boucle
A+dt*f(A,B)->C
B+dt*g(A,B)->D
tracer la ligne entre les points (A,B) et (C,D)
C->A
D->B
fin de la boucle


Edit : programme testé avec maple 7

with(plottools):
with(plots):
dt:=0.01:
N:=100:
L:=NULL:
A:=x_0:
B:=y_0:
for i to N do
C:=A+dt*f(A,B):
E:=B+dt*g(A,B):
L:=L,line([A,B],[C,E]);
A:=C:
B:=E:
od:
plots[display](L);
Lien direct vers le message - Vieux
Avatar de MrSeb
MrSeb
Alpha & Oméga
 
Avatar de MrSeb
 
saurais pas faire ça sur maple, mais si tu me donnes les conditions initiales, je te fais ça sous Excel
Lien direct vers le message - Vieux
Avatar de Greumlins
Greumlins
Alpha & Oméga
 
Avatar de Greumlins
 
Citation:
Provient du message de Melchiorus

début de boucle
A+dt*f(A,B)->C
B+dt*g(A,B)->D
tracer la ligne entre les points (A,B) et (C,D)
C->A
D->B
fin de la boucle
La boucle, je l'avais, mais mon problème c'est justement pour tracer ...
Je connaissais pas l'instruction "line", avec ça ça devrait marcher.

Pour Grugnita : merci, mais faut que je fasse ça en Maple presqu'obligatoirement (ou sinon, en Caml, mais je connais pas encore ses fonctions graphiques).

Pour Sarga : gneu ? J'ai pas trop compris ... De toute façon, même si j'arrive à mettre les valeurs dans la matrice, faut quand même que j'arrive à en tirer une courbe, et ça promet d'être coton ...
Lien direct vers le message - Vieux
Avatar de Melchiorus
Melchiorus
Alpha & Oméga
 
Avatar de Melchiorus
 
Le programme que j'ai écrit, je l'ai testé et il marchait chez moi donc pas besoin d'en refaire un.

Tu n'as qu'à remplacer x_0 et y_0 par leur valeur, ainsi que f(A,B) et g(A,B) par leur expression.
Lien direct vers le message - Vieux
Avatar de Greumlins
Greumlins
Alpha & Oméga
 
Avatar de Greumlins
 
Le truc, c'est que je veux les fonctions x(t) et y(t) en fonction du temps, donc il me faut 2 courbes !

Avec ça, j'obtiens quelques chose :
Citation:
A:=0.9: B:=0.1:
> for t from 0 to Tmax do
> dA:=-r*A*B; dB:=r*A*B-a*B:
> C:=A+dt*dA: d:=B+dt*dB:
> L1:=L1,line([t,A],[t+dt,C]):
> L2:=L2,line([t,B],[t+dt,d]):
> A:=C: B:=d:
> od:
Mais c'est pas très beau.

J'obtiens ça :


Avec ma méthode de bourrin, j'obtiens ça, et je trouve trop "carré" :
Lien direct vers le message - Vieux
Avatar de Melchiorus
Melchiorus
Alpha & Oméga
 
Avatar de Melchiorus
 
Citation:
A:=0.9: B:=0.1:
> for t from 0 to Tmax do
> dA:=-r*A*B; dB:=r*A*B-a*B:
> C:=A+dt*dA: d:=B+dt*dB:
> L1:=L1,line([t,A],[t+dt,C]):
> L2:=L2,line([t,B],[t+dt,d]):
> A:=C: B:=d:
> od:
Le problème est dans ton programme.

Tu fais : for t from 0 to Tmax do
t augmente de 1 à chaque boucle, alors qu'il devrait augmenter de dt.


Remplace le par : for t from 0 by dt to Tmax do
Lien direct vers le message - Vieux
Avatar de Greumlins
Greumlins
Alpha & Oméga
 
Avatar de Greumlins
 
Ah oui, j'avais oublié de changer ça, merci !
Bon, bin maintenant j'ai deux belles courbes.
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forums divers > La Taverne > Problème avec Maple
   

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés

Outils Rechercher
Rechercher:

Recherche avancée

Thème visuel : Fuseau horaire GMT +1. Il est actuellement 08h59.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite