Solving equations using Laplace transform

I am trying to solve an equation using the Laplace transform without having to find the Laplace transforms of the terms in the equation. Matlab is unable to find a solution based on the code below, although a solution can be found by writing the terms as a function of s. Could someone please suggest a method to do this?
syms y(t)
Dy2 = diff(y,t,2); Dy1 = diff(y,t,1);
eqn = laplace(Dy2+3*Dy1+2*y) == laplace(exp(-t))
cond = [y(0)==4, Dy(0)==5];
sol = dsolve(eqn,cond)
f

 采纳的回答

Unless you are solving a partial differential equation, such that the Laplace transform produces an ordinary differential equation in one of the two variables and a Laplace transform of ‘t’, dsolve is not appropriate. It is simply necessary to solve for (in this instance) ‘Y(s)’ and then invert it to get ‘y(t)’:
syms t y(t) Y(s) Dy0
Dy2 = diff(y,t,2);
Dy1 = diff(y,t,1);
eqn = laplace(Dy2+3*Dy1+2*y == exp(-t))
eqn = subs(eqn, {laplace(y(t), t, s), subs(diff(y(t), t), t, 0)},{Y(s), Dy0})
cond = [y(0)==4, Dy1(0)==5];
Soln_s = isolate(eqn, Y(s))
Soln_t = ilaplace(Soln_s)
Soln_t = subs(Soln_t, {ilaplace(Y(s), s, t)}, {y(t)})
Soln_t = simplify(Soln_t, 'Steps',500)
.

6 个评论

I made a small modification by replacing Dy0 with 5 so the value of Dy0 is output. Could you please tell me how y(0) can also be output in the soln_t variable instead of the symbolic variable y(0)?
syms t y(t) Y(s) Dy0
Dy2 = diff(y,t,2);
Dy1 = diff(y,t,1);
eqn = laplace(Dy2+3*Dy1+2*y == exp(-t))
eqn = subs(eqn, {laplace(y(t), t, s), subs(diff(y(t), t), t, 0)},{Y(s), 5})
cond = [y(0)==4, Dy1(0)==5];
Soln_s = isolate(eqn, Y(s))
Soln_t = ilaplace(Soln_s)
Soln_t = subs(Soln_t, {ilaplace(Y(s), s, t)}, {y(t)})
Soln_t = simplify(Soln_t, 'Steps',500)
My apologies for forgetting about the ‘cond’ variable, since the laplace transforms do not allow initial conditions to be included, as they would in dsolve. (I submitted an enhancement request about that a few years ago. It apparently has not yet been implemented.)
Changing this ‘eqn’ subs call will replace both of the ‘cond’ variables appropriately:
eqn = subs(eqn, {laplace(y(t), t, s), subs(diff(y(t), t), t, 0), y(0)},{Y(s), 5, 4})
producing in the end:
Soln_t =
exp(-t)*(t + 12) == 8*exp(-2*t) + y(t)
and with the addition of:
Soln_t = isolate(Soln_t, y)
after that line, producing:
Soln_t =
y(t) == exp(-t)*(t + 12) - 8*exp(-2*t)
.
Thank you. You have been very helpful

请先登录,再进行评论。

更多回答(1 个)

clear all clc syms x w f=input('Enter the function of x: '); F=laplace(f,x,w); disp('Laplace transform of f(t) = '); disp(F);

类别

帮助中心File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by