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
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
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 Center 和 File Exchange 中查找有关 Assumptions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!