Solving nonlinear DE by reduction of order on matlab
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
규민 권
el 11 de Ag. de 2021
Comentada: 규민 권
el 13 de Ag. de 2021
Nice of you all to answer my question.
I tried to graph the nonlinear ordinary DE in a textbook(Advanced Engineering Mathematics 6th Ed by Zill Wright).\
the DE is like this.
dy/dx = u
du/dx = x + y - y^2
Written the codes like below, but only gained 2 graphs each.
[sourcecode]
function dydt = odesys(t, y)
dydt(1) = y(1);
dydt(2) = t + y(2) - y(2)^2;
dydt = [dydt(1); dydt(2)];
end
[command]
[t, y] = ode45(@odesys, [-1 1], [-1 1])
plot(t, y);
grid
I want to get the graph as on the textbook, like the picture right below.(In case of copyright, I couldn't get original picture in the book)
What is wrong with my code?
0 comentarios
Respuesta aceptada
Fabio Freschi
el 11 de Ag. de 2021
Editada: Fabio Freschi
el 11 de Ag. de 2021
There are some typos in your description of the problem. Here the correct version
% your ODE - note that (y(1) and y(2) are exchanged)
odesys = @(t,y)[y(2); t+y(1)-y(1)^2];
% soluiton - note that the time span is [0 10] and the initial conditions
% are set for t = 0;
[t, y] = ode45(odesys, [0 10], [-1 1]);
% plot
figure, plot(t,y(:,1));
grid on
3 comentarios
Fabio Freschi
el 12 de Ag. de 2021
My pleasure. Regarding your questions
- the return outputs are the arrays t and y. The dimensions of t are Nx1, being N the number of time steps. This number is not known a priori, since ode45 uses adaptive step size. The dimensions of y is NxM, where M is the number of variables in your ODE. In this case M = 2. I understood you wanted only y(:,1), that is the variable y in your model.
- your way to call ode45 was correct, because you defined your ODE as an external function. I defined the model inline with an anonymous function. The data type of the anonymous function is a function_handle, so the @ symbol was not required in the call.
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!