ode45 with an input

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?

回答(2 个)

tspan=[0:0.1:5]
[T,Y] = ode45(@(t,y),test(t,y,b),tspan,y0)

1 个评论

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

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Programming 的更多信息

提问:

2013-5-6

Community Treasure Hunt

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

Start Hunting!

Translated by