Solving and plotting 2nd order ODE
71 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
回答(1 个)
Piotr Balik
2023-4-20
编辑:Piotr Balik
2023-4-20
This is constant, whose numerical value is depending on initial conditions.
You can either specify it directly, per Solve system of differential equations - MATLAB dsolve (mathworks.com)
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-')
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!