Help with Laplace transform method for 2nd order DE

3 次查看(过去 30 天)
I'm trying to solve the equation: y'' +2y' +y = g(t), with g(t) = { sin(t) if t < pi, 0 if t < pi }, and the intial conditons y(0) = 0 and y'(0) = 0.
Here's the code that I've tried:
syms s t y(t) Y
g = heaviside(t)*(sin(t)) + heaviside(t - pi)*(-sin(t));
eqn = diff(y,2) + 2*diff(y) + 2*(y) == g;
lteqn = laplace(eqn, t, s);
neweqn = subs(lteqn, [laplace(y(t), t, s), y(0), subs(diff(y(t), t, 0)), [Y, 0, 0]]);
ytrans = simplify(solve(neweqn, Y));
Warning: Unable to find explicit solution. For options, see help.
Invalid expression. Check for missing multiplication operator, missing or unbalanced delimiters, or other syntax error. To construct matrices, use brackets instead of parentheses.

Error in connector.internal.fevalMatlab

Error in connector.internal.fevalJSON
> In sym/solve (line 317)
>> y = ilaplace(ytrans, s, t)
y =
Empty sym: 0-by-1
I'm not sure why ytrans is not finding a solution. Can someone help me fix this/ find a different method?

采纳的回答

Star Strider
Star Strider 2023-4-23
In the subs call, use curly braces {} instead of square brackets [].
Then, it works —
syms s t y(t) Y
g = heaviside(t)*(sin(t)) + heaviside(t - pi)*(-sin(t));
eqn = diff(y,2) + 2*diff(y) + 2*(y) == g;
lteqn = laplace(eqn, t, s);
neweqn = subs(lteqn, {laplace(y(t), t, s), y(0), subs(diff(y(t), t), t, 0)}, {Y, 0, 0})
neweqn = 
ytrans = simplify(solve(neweqn, Y));
y = ilaplace(ytrans, s, t)
y = 
figure
fplot(y, [0 10])
grid
.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by