Bonjour, je suis tout nouveau sur matlab, et dans le cadre d'un projet, j'éssaye de résoudre avec ce logiciel l'équation de mouvement d'un pendule simple.
Après plusieurs recherches, je suis tombés, sur une certaine fonction "ode45" qui sert à ce genre de résolution.
ode45 a besoin en paramètre d'une fonction décrivant l'équation différentielle.
Donc j'ai créer cette fonction:
Code:
function dx = EDpendule(t,x,param)
%définition des paramètres
theta=x(1);
dtheta=x(2);
ddtheta=-(param(1)/param(2))*sin(theta);
dx= [dtheta;ddtheta];
ensuite donc, j'ai écrit le corps de ma fonction qui utilise "ode45" :

Code:
%On définit les conditions initiales
pos0= 60*pi/180; %l'angle theta_0 en radian
v0=0; % vitesse initiale du pendule

%Domaine temporelle pour l'intégration numérique
t0=0;
tmax=20;
%parametres 
g=9.81;
longueur=1.0;
param= [g longueur];
%résolution numérique de l'équation à l'aide de Ruge-Kutta(ode45)
[tt2,Xs2]=ode45('EDpendule',[t0 tmax],[pos0 v0],param);
pos= Xs2(:,1)/pi*180; %COnversion en degres
vit=Xs2(:,2);
%tracer de la solution 
plot(tt2,pos2);
title('Pendule Simple');
ylabel('\theta(t) [deg]');
Mais lorsque je lance ce program sous Matlab je récupère ces érreurs :
Attempted to access param(1); index out of bounds because numel(param)=0.

Error in EDpendule (line 6)
ddtheta=-(param(1)/param(2))*sin(theta);

Error in odearguments (line 88)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

Error in SolutionED (line 15)
[tt2,Xs2]=ode45('EDpendule',[t0 tmax],[pos0 v0],param);
Que je ne comprend absolument pas.
Quelqu'un pourrait t'il m'éclairer?
Merci.