Bonjour,
Je dois tracer l'évolution d'une vitesse angulaire d'une voiture dans un looping parfaitement rond. De ce fait j'ai utilisé Scilab, et j'ai eu un résultat satisfaisant. Mais le problème vient lors du changement de mes variables: En les rendant plus grandes pour simuler une situation réelle, Scilab se plaint qu'il y a trop de calculs à faire et refuse d'en faire plus de 500.
L'erreur que je reçois:
De ce fait, j'ai voulu utiliser la méthode d'Euler, mais je ne comprends pas comment l'utiliser. Pouvez-vous m'aider svp?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 lsoda-- at t (=r1), mxstep (=i1) steps needed before reaching tout where i1 is : 500 where r1 is : 0.2343607491632D+01 Excessive work done on this call (perhaps wrong jacobian type).
Mon code:
J'avais trouvé cette fonction et l'ai retouchée pour l'adapter à mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 clear() // Déclarer les variables et les fonctions nécessaires au calcul : mu=0.01; m=1760; rho=1.225; scx=0.0273; R=6.; g=9.81; // Accélération angulaire function tpp=f(t, tp) tpp=mu*tp(1)^2-1/(m*2)*rho*scx*R*tp(1)^2-1/R*mu*g*cos(t)-1/R*m*g*cos(t); endfunction tpInitiales=[25/R]; // Vitesse angulaire initiale [x] t0=0; // Temps de départ t=0:0.1*%pi:%pi; // Pas tp =ode(tpInitiales,t0,t,f); // Vitesse angulaire //Vitesse angulaire en fonction du temps plot2d(t, tp(1,:), style=[2]); b=gca(); b.title.text='Vitesse angulaire en fonction du temps'; b.x_label.text='Temps (s)'; b.y_label.text='Vitesse angulaire (rad.s^-1)';
Mais elle me renvoie des résultats impossibles (Une vitesse angulaire de 4.88D+104 rad/s).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function [liste_tp,liste_t]=Euler(tp0,N,T) // Version 3 tp=tp0;liste_tp=[tp0]; t=0;liste_t=[0]; h=T/N; for i=1:N tp=tp+h*f(t,tp); t=t+h; liste_tp=[liste_tp,tp]; liste_t=[liste_t,t]; end endfunction
Merci en avance!
Partager