Aide pour la méthode de Runge-Kutta en Scilab

Résolu
jibthefly Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
samwel25 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'étudie actuellement une des voies du chaos: la diffusion anormale dans un réseau linéaire de tourbillons.

Pour cela, j'aurais en ce moment besoin de pouvoir résoudre numériquement un système d'équations différentielles non linéaires. J'ai donc pensé à la méthode de Runge-Kutta, et à scilab, car il est gratuit et proche de matlab.

Mais je n'ai aucune expérience de scilab, voire très peu en programmation généralement...Quelqu'un aurait-il déjà essayé de résoudre ce genre d'équation, par scilab ou dans un autre langage?

Merci d'avance.

5 réponses

Sacabouffe Messages postés 9427 Date d'inscription   Statut Membre Dernière intervention   1 835
 
Salut

Tu as aussi Octave comme logiciel gratuit de calcul numérique et il encore plus proche de Matlab que Scilab ne l'est ;-)

Que ce soit pour Scilab ou Octave, t'auras pas besoin de coder la méthode de RK.

Scilab est fourni avec un package de solveurs d'ode (ODEPACK), tu trouveras des infos en faisant help ode dans une fenêtre Scilab. Tous les solveurs sont appelés avec la fonction ode et il suffit de préciser en option lequel tu veux en partculier. Si tu veux avoir un aperçu de ce que tu peux faire avec la fonction ode de Scilab, tu peux aller jeter un œil ici :
http://genome.jouy.inra.fr/doc/genome/divers/scilab-4.1.2/man/fr/nonlinear/ode.htm

En ce qui concerne Octave, c'est la toolbox Octave-Forge OdePkg qui fournit la panoplie de solveurs (ode, dae, ide, dde).
http://octave.sourceforge.net/odepkg/index.html
Mais quand tu installes Octave sous Windows avec l'installeur (hébergé sur Octave-Forge lui aussi), ça t'installe toutes les toolboxes Octave-Forge. Les solveurs d'ode d'Octave sont appelés par des fonctions ode** est une chaîne de 2 ou 3 caractères (chiffres ou lettres) caractérisant le solveur (ex : ode23, ode45, ode54, ode78 pour les solveurs RK non modifiés).
Jette un œil à la doc si tu veux te faire une idée :
http://octave.sourceforge.net/odepkg/local/odepkg.html
Et si t'installe Octave, pour l'aide, c'est comme Matlab et Scilab, help la_fonction et t'as les infos dont t'as besoin.

Voivi voilou...

Ah oui... et sinon, que ce soit l'un ou l'autre des deux softs, tu peux les récupérer sur CCM :
http://www.commentcamarche.net/telecharger/telecharger 34058903 scilab
http://www.commentcamarche.net/telecharger/telecharger 34058902 gnu octave

Bonne fin de journée ;-)
0
jibthefly
 
Merci beaucoup pour tes lumières, et pour la rapidité de ta réponse. Maintenant je devrais pouvoir y arriver sans problème...
bonne fin de journée
0
Sacabouffe Messages postés 9427 Date d'inscription   Statut Membre Dernière intervention   1 835
 
Y a pas de quoi ! ;-)
Repasse si t'as un souci mais crée en nouveau sujet si le problème est différent.
Bonne fin d'après-midi
0
neil91
 
Salut,

j'ai vu que tu travaillait sur la méthode de runge kutta à l'aide du logiciel scilab. Je voulais savoir si tu pouvais m'envoyer ton prog afin que je voille comment ta programmer stp

Je te remercie
0
mhidoo > neil91
 
c pas trop compliqué tu peut regarder la doc de ODE dans le help de scilab
d'abord tu défini le deuxième membre comme une fonction ( ici BBO )

// Phase solide
// equation diff de suivi des particules : BBO attention ici equation adimensionnalisée
// second membre

function [dX]=bbo(t,X,st,bet)
dX(1)=X(3)
dX(2)=X(4)
[u,v]=taygr(X(1),X(2))
dX(3)=(u-X(3)+bet*sin(a))/st
dX(4)=(v-X(4)-bet*cos(a))/st

endfunction

aprés tu défini les conditions initiales et les points (instants) ou tu désire calculer la solution puis tu résout avec ODE, l'option "rk" spécifie que tu utilise la méthode de Runge-kutta d'ordre 4 à pas adaptatif.

//Solution
X0=[pxp(c3); pyp(c3); u0; v0];// position et vitesses initiales de la particule.
t0=0;//instant initial
tf=200;//instant final
t=linspace(t0,tf,m);// instants à calculer
[X] = ode("rk",X0, t0, t, list(bbo,st,bet)); // résolution

voilou, dis moi si t'a encore des questions....
0
neil91 > mhidoo
 
Merci pour tes conseil, juste un dernier truc je travail sur un projet de runge kutta un peu comme vous mais le probleme c'est que je n'arrive pas à faire le lien entre ton programme scilab et ce que je pourrais faire pour mon projet. Pourrais tu me dire ce que je dois changer dans ton prog pour qu'il soit appliquable pour mon projet. Ton aide me sera très utilie car je me sens un peu perdu


Voici l'énnoncé de mon problème (juste le dernier point sur runge kutta, le reste déjà fait)
https://www.casimages.com/i/090902014956997796.jpg.html
https://www.casimages.com/i/090902015155755726.jpg.html

Je te remercie
0
mhidoo
 
salut c marrant moi aussi je crois que je travail sur la même chose! j'étudie la dispersion de particles ponctuelles dans un réseau de tourbillon de type taylor-green, je resous l'équation de suivi des particules avec ODE de scilab. ça marche....
cordialement
0
samwel25 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour;
j'aurais en ce moment besoin de pouvoir résoudre numériquement un système d'équations différentielles non linéaires. J'ai donc pensé à la méthode de Runge-Kutta d'ordre 4 en matlab.
donc voila le systeme :
(1) V’=(N’/v)- 2*V

(2) U’=-(Y*N’/U)-2*U

(3) EXP(-N-Y)-V*(1+2(Y/V))=0

(4) N’’=(1/V)-exp(N)- Y/U

donc mon probléme c'est l'equation 3 je sais pas comment l'introduire dans la boucle dintegration avec les autre équation de systéme; d'autre façon c'est que je n'arrive pas à faire le lien entre l'équation 3 avec les autres équations.
Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
samwel25 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour;
j'aurais en ce moment besoin de pouvoir résoudre numériquement un système d'équations différentielles non linéaires. J'ai donc pensé à la méthode de Runge-Kutta d'ordre 4 en matlab.
donc voila le systeme :
(1) V’=(N’/v)- 2*V

(2) U’=-(Y*N’/U)-2*U

(3) EXP(-N-Y)-V*(1+2(Y/V))=0

(4) N’’=(1/V)-exp(N)- Y/U

donc mon probléme c'est l'equation 3 je sais pas comment l'introduire dans la boucle dintegration avec les autre équation de systéme; d'autre façon c'est que je n'arrive pas à faire le lien entre l'équation 3 avec les autres équations.
Merci d'avance.
-1