solving with ode23, error using feval?
Afficher commentaires plus anciens
I want to solve a group of differential equations using ode23, but it always gives me the same error, which is:
??? Error using ==> feval
Undefined function or method 'funsys' for input arguments of type 'double'.
Error in ==> odearguments at 110
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ==> ode23 at 172
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
I don't know exactly what is these referring to, so I wanted to ask why is it giving me these errors?? The code of the function is:
function pX=funsys(t,X)
Ie1=X(1);
Ie2=X(2);
Ir1=X(3);
Ir2=X(4);
wr=X(5);
theta=X(6);
Le=0.4112;
Lr=0.329;
M=0.4112;
w=377;
R=3;
Tm=0;
Ve1=sqrt(2)*150*sin(w*t);
Ve2=sqrt(2)*150*cos(w*t);
I=[Ie1;Ie2;Ir1;Ir2];
L=[1.1*Le 0 M*cos(theta) -M*sin(theta);0 1.1*Le -M*sin(theta) M*cos(theta);M*cos(theta) -M*sin(theta) 1.1*Lr 0;-M*sin(theta) M*cos(theta) 0 1.1*Lr];
dL=[0 0 -M*sin(theta) -M*cos(theta);0 0 -M*cos(theta) -M*sin(theta);-M*sin(theta) -M*cos(theta) 0 0;-M*cos(theta) -M*sin(theta) 0 0];
vR=R*eye(4);
vV=[Ve1;Ve2;0;0];
vImp=vR+wr*dL;
Linv=inv(L);
L1=Linv(1,:);
L2=Linv(2,:);
L3=Linv(3,:);
L4=Linv(4,:);
A=vV-vImp*I;
Te=(I'*dL*I)/2;
pIe1=L1*A;
pIe2=L2*A;
pIr1=L3*A;
pIr2=L4*A;
pwr=Te+Tm/J;
ptheta=wr;
pX=[pIe1;pIe2;pIr1;pIr2;pwr;ptheta];
Then in the command window:
y0=[0 0 0 0 0 0]
st=0:0.001:10
[t,X]=ode23(@funsys,st,y0)
Thank you very much.
1 commentaire
David Sanchez
le 14 Mai 2013
Please, use the {}Code option to tell what's code from comment.
Réponses (1)
Walter Roberson
le 16 Mai 2013
0 votes
Perhaps you did not save your code into the file funsys.m on your MATLAB path.
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!