6 views (last 30 days)

John D'Errico
on 31 Jul 2020

Edited: John D'Errico
on 31 Jul 2020

Sorry. I don't know what you did incorrectly, but here is what I see.

syms y(t)

yalpha = (1/80)*(36*exp(-t) + 125*sin(t) -3*sin(3*t) -35*cos(t) -cos(3*t));

ode = diff(y,t,3) + diff(y,t,2) + diff(y,t) + y == cos(3*t);

dy = diff(y,t);

ddy = diff(y,t,2);

ysol = simplify(dsolve(ode,y(0) == 0,dy(0) == 1,ddy(0) == 1))

ysol =

(9*exp(-t))/20 - (2*cos(t))/5 + (8*sin(t))/5 - cos(t)^3/20 - (3*cos(t)^2*sin(t))/20

simplify(ysol - yalpha)

ans =

0

The difference is identically zero. You may have copied something incorrectly. It is difficult to know, because we don't truly know what is inside the variables you claim have created.

John D'Errico
on 1 Aug 2020

No problem. It was an interesting exercise in arm twisting. The problem is, if I look at virtually any of the intermediate forms, they all could be construed as of similar complexity to any other. So when we tell MATLAB to simplify the expression, it needed a little direction.

There is another trick that can sometimes work. It is pretty random though. If I add two arguments to simplify, it will return a sequence of variations on the expression.

ysimpl = simplify(ysol,'all',true,'steps',20)

ysimpl =

(9*exp(-t))/20 - (2*cos(t))/5 + (29*sin(t))/20 - cos(t)^3/20 + (3*sin(t)^3)/20

(exp(-t)*(29*exp(t)*sin(t) - 8*exp(t)*cos(t) - exp(t)*cos(t)^3 + 3*exp(t)*sin(t)^3 + 9))/20

(9*exp(-t))/20 - (10^(1/2)*cos(3*t - atan(3)))/80 - (674^(1/2)*cos(t + atan(25/7)))/16

(9*cos(t*1i))/20 + (sin(t*1i)*9i)/20 - (2*cos(t))/5 + (29*sin(t))/20 - cos(t)^3/20 - (3*sin(t)*(cos(t)^2 - 1))/20

(sin(t*1i)*9i)/20 + (29*sin(t))/20 + (3*sin(t)^3)/20 - ((2*sin(t/2)^2 - 1)*(sin(t)^2 - 1))/20 + (4*sin(t/2)^2)/5 - (9*sin((t*1i)/2)^2)/10 + 1/20

(9*exp(-t))/20 - exp(-t*1i)*(1/5 - 29i/40) - exp(t*1i)*(1/5 + 29i/40) - (exp(-t*1i)/2 + exp(t*1i)/2)^3/20 + (3*((exp(-t*1i)*1i)/2 - (exp(t*1i)*1i)/2)^3)/20

-exp(t*(- 1 - 3i))*(- (9*exp(t*3i))/20 + exp(t*(1 + 2i))*(7/32 - 25i/32) + exp(t*(1 + 4i))*(7/32 + 25i/32) + exp(t*(1 + 6i))*(1/160 - 3i/160) + exp(t)*(1/160 + 3i/160))

(29*tan(t/2))/(10*(tan(t/2)^2 + 1)) - (9*(tan((t*1i)/2) - 1i))/(20*(tan((t*1i)/2) + 1i)) + (tan(t/2)^2 - 1)^3/(20*(tan(t/2)^2 + 1)^3) + (6*tan(t/2)^3)/(5*(tan(t/2)^2 + 1)^3) + (2*(tan(t/2)^2 - 1))/(5*(tan(t/2)^2 + 1))

Here, for example, I see it has managed to find the first step in the sequence I chose as one of the alternatives. Now I might decide to try another shot in the dark.

ysol = ysimpl(1)

ysol =

(9*exp(-t))/20 - (2*cos(t))/5 + (29*sin(t))/20 - cos(t)^3/20 + (3*sin(t)^3)/20

ysimpl = simplify(ysol,'all',true,'steps',200);

This was a huge mess of variations. One of them however got me closer to my goal. Now repeat the process, examoming the results to see if simplify was able to help me out.

ysol = ysimpl(4)

ysol =

(9*exp(-t))/20 - cos(3*t)/80 - (7*cos(t))/16 + (29*sin(t))/20 + (3*sin(t)^3)/20

ysimpl = simplify(ysol,'all',true,'steps',200);

ysimpl(5)

ans =

(9*exp(-t))/20 - cos(3*t)/80 - (3*sin(3*t))/80 - (7*cos(t))/16 + (25*sin(t))/16

Scanning down through the mess it produces gives me an answer, at the 5th step in that sequence.

Honestly, the intelligently directed solution I did in my previous answer was more satisfying. But sometimes, if you have no clue what to try, this may help you get past a bump in the road.

madhan ravi
on 31 Jul 2020

a1 = matlabFunction(simplify(sol));

a = matlabFunction((1/80)*(36*exp(-t)-35*cos(t)-cos(3*t)+125*sin(t)-3*sin(3*t)));

t = linspace(0, 2*pi);

all(abs(a1(t) - a(t)) < 1e-2) % to check if they yield the same results

Opportunities for recent engineering grads.

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

Start Hunting!
## 2 Comments

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/573538-wrong-differential-equation-solution#comment_956716

⋮## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/573538-wrong-differential-equation-solution#comment_956716

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/573538-wrong-differential-equation-solution#comment_956725

⋮## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/573538-wrong-differential-equation-solution#comment_956725

Sign in to comment.