MATLAB: Ode45 with multiple value for a single variable in a function file

multiple value for a variableode45

function [ dudt ] = task3a_function( t,y )
w = 1
dudt = zeros(2,1)
dudt(1) = y(2)
dudt(2) = (10*sin(w*t))/3 - (75*y(1))/3
end
The value of w should be 1, 5, 10
and this is the ode45 file
tspan = [0 20]
initialvalues = [0 0]
fname ='task3a_function'
[t,y] = ode45(fname,tspan,initialvalues)
figure (1) % w = 1

plot(t,y(:,1)) % w = 1
figure (2) % w = 5
plot(t,y(:,1)) % w = 5
figure (3) % w = 10

plot(t,y(:,1)) % w = 10
Anyone can tell me how to get the 3 graph for w = 1, 5,10 respectively.
Thank you

Best Answer

I would use a loop:
task3afunction = @(t,y,w) [y(2); (10*sin(w*t))/3 - (75*y(1))/3 ];
tspan = [0 20];
initialvalues = [0 0];
w = [1, 5, 10];
for k1 = 1:length(w)
[t{k1},y{k1}] = ode45(@(t,y)task3afunction(t,y,w(k1)),tspan,initialvalues);
figure(k1)
plot(t{k1},y{k1})
title(sprintf('w = %d',k1))
end
There’s no easy way to describe this without writing the code. However, you’ve done most of it yourself already.
Related Question