I am trying to solve a Cauchy problem of the type
y'=A(t)*y
being A a time-dependent square matrix, depending on a number of parameters.
What I have done is to define a function (in a separate file, as needed)
function timedepf=timedep(time,y,L,t,gamma,Rx,Ry,T)
a=zeros(3*L);
for j=1:L
a(j,j+1)=-t;
a(j+1,j)=-t;
a(L,1)=-t;
a(1,L)=-t;
a(L+j,L+j+1)=-t;
a(L+j+1,L+j)=-t;
a(L+L,L+1)=-t;
a(L+1,L+L)=-t;
a(2*L+j,2*L+j+1)=-t;
a(2*L+j+1,2*L+j)=-t;
a(2*L+L,2*L+1)=-t;
a(2*L+1,2*L+L)=-t;
a(j,L+j)=Rx*cos(2*pi*time/T)*exp(-1i*gamma*j);
a(L+j,j)=Rx*cos(2*pi*time/T)*exp(1i*gamma*j);
a(L+j,2*L+j)=Rx*cos(2*pi*time/T)*exp(-1i*gamma*j);
a(2*L+j,L+j)=Rx*cos(2*pi*time/T)*exp(1i*gamma*j);
a(2*L+j,j)=Ry*sin(2*pi*time/T)*exp(-1i*gamma*j);
a(j,2*L+j)=Ry*sin(2*pi*time/T)*exp(1i*gamma*j);
end
timedepf=a*y;
(please, don't care about the actual form of A, it is just a 3*L X 3*L square matrix) and then to call the solver
time_span=[0 T];
[time,V]=ode45(@(time,V)timedep(time,V,L,t,gamma,Rx,Ry,T),time_span,V0);
where V0 is a suitable 3*L X 3*L initial condition. Then I am getting the errors
Error using *
Inner matrix dimensions must agree.
Error in timedep (line 23)
timedepf=a*y;
Error in @(time,V)timedep(time,V,L,t,gamma,Rx,Ry,T)
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 Pumping (line 65)
[time,V]=ode45(@(time,V)timedep(time,V,L,t,gamma,Rx,Ry,T),time_span,V0);
I cannot find out where I am wrong. Can you please help me?
Thank you very much!