ode45 with an input

9 views (last 30 days)
Blah
Blah on 6 May 2013
I'd like to integrate a function with a variable that is taken from the user. For example, to integrate the function below:
function dydt = test(t,y)
dydt = -t*y/sqrt(2-y^2);
,I would call it with something like [t,y] = ode45('test',[0:0.1:5],1), but if I want to integrate dydt = -ty/sqrt(2-y^2)*b, where b is taken from the user, how would I do that?
Here's what I've tried:
function dydt = test(t,y,b)
dydt = -ty/sqrt(2-y^2)*b;
,and calling it with [t,y] = ode45('test',[0:0.1:5],1,3), where b = 3 in the call, but it's giving me an error. Is there a way to integrate a function with a variable that is taken from the user?

Answers (2)

Azzi Abdelmalek
Azzi Abdelmalek on 6 May 2013
tspan=[0:0.1:5]
[T,Y] = ode45(@(t,y),test(t,y,b),tspan,y0)
  1 Comment
Jan
Jan on 6 May 2013
Edited: Jan on 6 May 2013
Some tiny modifications:
tspan = 0:0.1:5; % This is a vector already
b = 23.4; % Define b as wanted
[T,Y] = ode45(@(t,y) test(t,y,b), tspan, y0); % One comma removed

Sign in to comment.


Jan
Jan on 6 May 2013

Categories

Find more on Programming 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!