Plot function to graph differential equations

1 vue (au cours des 30 derniers jours)
Aleem Andrew
Aleem Andrew le 5 Fév 2020
Commenté : Star Strider le 6 Fév 2020
I am trying to plot the solution to the following system but the code below plots a small circle instead of a parabola, which is the solution to the system. Can anyone explain how to plot the solution (y= f(x)) or point out any errors in the code? Thank you
tspan = [0 3 5 6];
y0 = [0 4 5 6];
[x,y] = ode45(@(x,y) odefcn(x,y,A,B), tspan,y0);
plot(x,y(:,1),'-o',x,y(:,2),'-.')
function dydx = odefcn(x,y,A,B)
dydx = zeros(4,1);
dydx(1) = y(2);
dydx(3)= y(4);
dydx(2) = y(2)*sqrt(y(1)*y(1)+ (y(3)*y(3))); %this is a system of two second order differential equations
dydx(4) = y(3)*sqrt((y(1)*y(1)+ (y(3)*y(3))-9.81;
end
  2 commentaires
darova
darova le 6 Fév 2020
Attach the original equations
Aleem Andrew
Aleem Andrew le 6 Fév 2020
The original equations are: x"=x'*sqrt(x'^2+y'^2); y"=y'*sqrt(x'^2+y'^2)-9.81;

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 6 Fév 2020
Use a different tspan vector.
When I run your code (using random values for ‘A’ and ‘B’, since they are not supplied), I get:
Warning: Failure at t=5.659410e-01. Unable to meet integration tolerances without reducing the
step size below the smallest value allowed (1.776357e-15) at time t.
With:
tspan = [0 0.5];
I get a plot.
Also, ‘dx(4)’ as posted is missing a couple parentheses. This corrected version works:
dydx(4) = y(3)*sqrt((y(1)*y(1))+ (y(3)*y(3)))-9.81;
Be sure that is the syntax you intended.
  4 commentaires
Aleem Andrew
Aleem Andrew le 6 Fév 2020
Ok I will look into that for further details such as why the order of the values needs to be ascending Thank you
Star Strider
Star Strider le 6 Fév 2020
As always, my pleasure!
See the documentation section on tspan. Note that: ‘The elements in tspan must be all increasing or all decreasing.’ So they only need to be monotonic.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by