Solution to second order differential equation

1 view (last 30 days)
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;

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 18 Oct 2013
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)
  3 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 18 Oct 2013
Look at the above answer for how to write the function f1, and call it like below:
[t,y2] = ode45(@(t,y2) f1(t,y2,tspan,I,J,K,L,W),tspan,init2);

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!