Solving ODE using laplace

25 ビュー (過去 30 日間)
LUCA 2024 年 4 月 21 日

This is the question I'm struggling on
Using the Laplace transform find the solution for the following ODE:
d^2/dt(y(t)) + 16y(t) = 16[1(t-3) -1(t)]
initial conditions:
y(0) = 0
dy(t)/dt = 0
I have to solve the ODE with laplace and with inverse laplace
Save the inverse laplace in y_sol.
This is what I wrote but it gives me the wrong answer:
syms t s y(t) Y X
y0 = 0;
dot_y0 = 0;
dot_y = diff(y,t);
ddot_y = diff(dot_y,t);
ode = ddot_y + 16*y == 16*(1*(t-3)-1*(t))
ode(t) =
Y1 = laplace(ode,t,s)
Y1 =
ysol1 = subs(Y1,laplace(y,t,s),X)
ysol1 =
ysol2 = subs(ysol1,y(0),y0)
ysol2 =
ysol3 = subs(ysol2, subs(diff(y(t), t), t, 0), dot_y0)
ysol3 =
ysol = solve(ysol3, X)
ysol =
Y = simplify(expand(ysol))
Y =
y_sol = ilaplace(Y)
y_sol =
7 件のコメント5 件の古いコメントを表示5 件の古いコメントを非表示
Sam Chak 2024 年 4 月 21 日
I didn't simplify the analytical solution from dsolve, but it seems to yield the similar plot as WolframAlpha.
sympref('HeavisideAtOrigin', 1);
syms y(t) t s
dy = diff( y,t);
ddy = diff(dy,t);
massSpring = ddy + 16*y == 16*(heaviside(t-3) - heaviside(t))
massSpring(t) =
sol = dsolve(massSpring, y(0) == 0, dy(0) == 0)
sol =
fplot(sol, [0 13]), grid on, xlabel('t'), title('y(t)')
Torsten 2024 年 4 月 21 日

syms t s y(t) Y X
y0 = 0;
dot_y0 = 0;
dot_y = diff(y,t);
ddot_y = diff(dot_y,t);
ode = ddot_y + 16*y == 16*(heaviside(t-3)-heaviside(t));
Y1 = laplace(ode,t,s);
ysol1 = subs(Y1,laplace(y,t,s),X);
ysol2 = subs(ysol1,y(0),y0);
ysol3 = subs(ysol2, subs(diff(y(t), t), t, 0), dot_y0);
ysol = solve(ysol3, X);
Y = simplify(expand(ysol));
y_sol = ilaplace(Y)
y_sol =
Check_Laplace_Solution = dsolve(ode, y(0) == 0, dot_y(0) == 0)
Check_Laplace_Solution =
hold on
fplot(y_sol,[0 13])
fplot(Check_Laplace_Solution,[0 13])
hold off
grid on

サインインしてコメントする。

回答 (1 件)

Star Strider 2024 年 4 月 21 日
Your code looks correct to me, and when I checked the result with dsolve, its solution agreees with yours —
syms t s y(t) Y X
y0 = 0;
dot_y0 = 0;
dot_y = diff(y,t);
ddot_y = diff(dot_y,t);
ode = ddot_y + 16*y == 16*(1*(t-3)-1*(t))
ode(t) =
Y1 = laplace(ode,t,s)
Y1 =
ysol1 = subs(Y1,laplace(y,t,s),X)
ysol1 =
ysol2 = subs(ysol1,y(0),y0)
ysol2 =
ysol3 = subs(ysol2, subs(diff(y(t), t), t, 0), dot_y0)
ysol3 =
ysol = solve(ysol3, X)
ysol =
Y = simplify(expand(ysol))
Y =
y_sol = ilaplace(Y)
y_sol =
Check_Laplace_Solution = dsolve(ode, y(0) == 0, dot_y(0) == 0)
Check_Laplace_Solution =
.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCalculus についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by