How to use ode45 on a second-order ODE, but without a function file (just one script)?

4 次查看(过去 30 天)
I am given the following second-order ODE and I want to use ode45 and by not creating a function file.
I am given the equation above, a timespan t, and initial y and dy values.
I first set up my dydt into a matrix [y1' y2']"
dydt = [y(2); eps*((y(1)^2) - 1)*y(2) - y(1)]
func= dydt(t,y)
and tried to evaluate such ode45(@func, t, [y0, dy0]), but it gives me an error
I also tried setting it up as just one function:
f = @(y1,y2) eps*((y1^2) - 1)*y2 - y1;
Here, it gives me the error that I am using the same function, which was previously used as a variable:
ode45(@f, t, [y0, dy0])
Help please?


Star Strider
Star Strider 2019-10-8
You are almost there!
Try this:
dydt = @(t,y) [y(2); eps*((y(1)^2) - 1)*y(2) - y(1)];
ic = [1 1]*eps;
tspan = [0 10];
[T,Y] = ode45(dydt, tspan, ic);
That worked when I tried it. Change the initial conditions vector ‘ic’ to match your initial conditions, and ‘tspan’ to get the result you want.
  4 个评论


更多回答(0 个)


Help CenterFile Exchange 中查找有关 Programming 的更多信息



Community Treasure Hunt

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

Start Hunting!

Translated by