How to use ode45 on a second-order ODE, but without a function file (just one script)?
1 次查看(过去 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?
0 个评论
采纳的回答
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);
figure
plot(T,Y)
grid
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!