Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Résolution d'équation différentielle avec Scilab

Posté par
Olish
18-04-13 à 13:08

Bonjour,

Je dois résoudre une équation différentielle du premier ordre avec la méthode de Runge-Kutta d'ordre 4 avec le logiciel Scilab version 5.4.0 pour Mac OS.

Je n'arrive pas à utiliser la séquence d'appel qu'ils proposent, car je reçois constamment l'erreur suivante :
      -->[y,w,iw]=ode([type],y0,t0,t [,rtol [,atol]],f [,jac] [,w,iw])
                                                      !--error 3
      En attente d'une parenthèse droite.

Par ailleurs, je ne sais pas exactement quoi renseigner pour les options entre [], i.e type, rtol, atol, w et iw et quelle est la syntaxe exacte à utiliser.
Merci d'avance pour votre aide.

NB : Voici le détail du bout de code que j'ai écris avec l'équation à résoudre

teta=1.145763*%pi/180;
beta1=30*%pi/180;
qv=50/2.4/3600;
r=5.34/2;

n=0.49*2*%pi/60;
function ydot=f(t,y),
    ydot=tan(teta)/cos(beta1)-360*qv*tan(beta1)/(%pi*n*(r*2)^3)*(2*y/r-(y/r)^2)^(-1.5),
endfunction
y0=1.36;t0=0;t=0:1:75;
[y,w,iw]=ode([type],y0,t0,t [,rtol [,atol]],f [,jac] [,w,iw])

Posté par
qwydr
re : Résolution d'équation différentielle avec Scilab 18-04-13 à 15:19

salut,

je trouve la doc scilab assez bien faite .. >>>>

Posté par
Olish
re : Résolution d'équation différentielle avec Scilab 18-04-13 à 16:18

En fait je suis profane en programmation, de ce fait la doc ne répond pas à toute mes questions...

Je pense que je dois d'une part faire des erreurs de syntaxe, et d'autre part, d'un point de vue des mathématiques je ne pense pas bien comprendre la nature des vecteurs w et iw (comment les définir à partir de mon problème ?), ni comment calculer/évaluer les bonnes valeurs pour les paramètres rtol et atol.

Posté par
qwydr
re : Résolution d'équation différentielle avec Scilab 18-04-13 à 16:38

j'ai l'impression que ce n'est pas trop clair, il y a beaucoup de paramètres facultatifs en général dans ces fonctions là, ils sont indiqués entre crochets, de là l'intérêt de lire la doc ..

en général, voici comment ça marche quand on veut résoudre numériquement :

y'=f(y,t)
y(t0)=y0

on écrit la fonction f qui calcule y' à partir de y et t

on appelle le solveur en lui stipulant cette fonction, et les conditions initiales, ainsi que l'horizon d'intégration t1

typiquement un exemple basique improvisé: y'=cos(t)+y² avec y(0)=0

// definition de f
deff("[ydot=f(t,y)","ydot=cos(t)+y^2")
// conditions initiales
t0=0;
y0=0;
t1=2*%pi;
t=t0:0.1:t1;
// appel du solver
y=ode(y0,t0,t,f);
// plot de la solution
plot(t,y)

à toi d'appliquer avec ton équa diff ..

Posté par
Olish
re : Résolution d'équation différentielle avec Scilab 18-04-13 à 16:54

Merci pour cette réponse, mais en fait j'avais déjà essayé de résoudre mon équation avec l'appel le plus simple càd y=ode(y0,t0,t,f)... Mais le pas d'intégration pose problème sous cette forme là (erreur du type "le pas de temps h est tel que t+h=t"), et je n'obtiens aucun résultat.

Du coup c'est pour ça que je veux appliquer cet appel de séquence :
[y,w,iw]=ode([type],y0,t0,t [,rtol [,atol]],f [,jac] [,w,iw])
et m'assurer que je résous bien mon équation en RK4.

Posté par
qwydr
re : Résolution d'équation différentielle avec Scilab 18-04-13 à 17:01

il faut pas mettre les crochets en fait .. ils sont juste là pour dire que ce sont des arguments facultatifs dans la doc ! met les arguments juste en respectant l'ordre ça devrait suffire .. je te conseille des méthodes plus bourrines que RK, par exemple adams il va te résoudre ça en deux coups de cuillère à pot tu verras et pas besoin de se prendre la tête avec les tolérances et autres w,iw..



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !