syms y(t) Y(s) g(t)
d2y = diff(y,t,2);
dy = diff(y,t);
eqn = d2y + 4*y == dirac(t);
cond = [y(0)==0, dy(0)==0];
dsolve_y(t) = dsolve(eqn,cond);
laplace_eqn = subs(laplace(eqn,t,s), laplace(y(t),t,s), Y(s));
laplace_eqn = isolate(subs(laplace_eqn, lhs(cond), rhs(cond)), Y(s));
laplace_y(t) = rhs(ilaplace(laplace_eqn));
roots = solve(subs(lhs(eqn),[d2y dy y],[s^2 s 1])==0);
coef = formula(coeffs(lhs(eqn)));
g(t) = (exp(roots(1)*t)-exp(roots(2)*t))/(coef(1)*(roots(1)-roots(2)));
greens_y(t) = simplify(g(t));
homogeneous_eqn = lhs(eqn) == 0;
new_cond = cond;
new_cond(2) = dy(0)==1/coef(1);
new_cond_y(t) = dsolve(homogeneous_eqn, new_cond);
disp("Functions calculated (last two restricted to t>0)")
disp([dsolve_y(t), laplace_y(t), greens_y(t), new_cond_y(t)])