MATLAB: Solution to second order differential equation

for loopode45second order differential equation

I want to solve a second order differential equation which passes parameters to the ode solver. The parameters are column arrays and hence I used for loop in the function. I don't know if what I wrote is right or wrong. I am getting the solution. But I have no idea if it is right or wrong..
Is the code within the function right? I mean the syntax…
Thankyou…
The function is given below
function r = f1(tspan,y2,I,J,K,L,W)
r = zeros(2,1);
c = zeros(length(tspan));
r(1) = y2(2);
for n =2:length(tspan)
c(n) = -(I(n).*y2(2) + J(n).*y2(1) + K(n) + L(n).*cos(W*tspan(n)));
end
r(2)=c;

Best Answer

function r = f1(t,y2,tspan1,I,J,K,L,W)
r = zeros(2,1);
c = zeros(length(tspan1));
r(1) = y2(2);
for n =2:length(tspan1)
c(n) = -(I(n).*y2(2) + J(n).*y2(1) + K(n) + L(n).*cos(W*tspan1(n)));
end
r(2)=c;
% How to call your function
% Define Tspan1, Ic and your parameters
[T Y] = ode45(@(t,y2) f1(t,y2,Tspan1,I,J,K,L,W),Tspan1,IC)