Solving and plotting 2nd order ODE

71 views (last 30 days)
Nina
Nina on 16 Apr 2023
Edited: Piotr Balik on 20 Apr 2023
I'm trying to solve the equation y''+sin(y)=0, and plot the results at time 0, 0.1, 0.7, 1.5, 3.0, on a graph.
I tried using this code so far to find the solution, but I am unable to plot the result, '2*atan(exp(C1-t)). I think it's because of the 'C1' in the solution, but I'm not sure how to get rid of it.
>> syms y(t)
>> ode = diff(y,t) == -sin(y)
ode(t) =
diff(y(t), t) == -sin(y(t))
>> ySol(t) = dsolve(ode)
ySol(t) =
2*atan(exp(C1 - t))
0

Answers (1)

Piotr Balik
Piotr Balik on 20 Apr 2023
Edited: Piotr Balik on 20 Apr 2023
This is constant, whose numerical value is depending on initial conditions.
bnds = y(0) == -0.123
ySol(t) = dsolve(ode, bnds)
But you can also try to solve it substituting to general solution analytically:
Plotting and the example code
syms y(t)
ode = diff(y,t) == -sin(y)
bnds = y(0) == -0.123
ySol(t) = dsolve(ode,bnds)
tv = [0, 0.1, 0.7, 1.5, 3.0];
yv = ySol(tv)
figure,
plot(tv,yv,'o-')

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!