Using dsolve gives a different solution than Wolfram Alpha

5 次查看(过去 30 天)
I'm trying to solve a differential equation (1x''+8x'+16x=50*e^(-t)*unit step(t),x(0)=0,x'(0)=0) using dsolve:
dsolve('1*D2x + 8*Dx + 16*x == 50*exp(-t)*heaviside(t)','x(0) == 0', 'Dx(0) == 0')
and it returns:
-Inf*sign(t)
Obviously, trying to eval is going to give a pretty meaningless result. So I decided to throwing it into Wolfram Alpha:
{1 x''[t] + 8 x'[t] + 16 x[t] == (50 UnitStep[t])/E^t, x[0] == 0, x'[0] == 0}
where it returned:
{x[t] == (50 (-1 + E^(3 t) - 3 t) UnitStep[t])/(9 E^(4 t))}
Am I not using heaviside correctly? Is there something simple I'm missing? I have no idea where to start debugging the problem, because it's just a built in function.
  4 个评论
@Johannes
@Johannes 2015-10-28
I tried the second method in R2015b too. I don't get an array of solutions. I get a symbolic variable which contains the substituted solution. Plotting this solution leads to the same plot as wolfram alpha delivers. Not sure if i misunderstand you.
Best regards,
Johannes
Walter Roberson
Walter Roberson 2015-10-28
I would try recoding in terms of diff() instead of replying on the D parser. The initial condition D(0) might require some investigation to recode though.

请先登录,再进行评论。

回答(0 个)

类别

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

标签

Community Treasure Hunt

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

Start Hunting!

Translated by