One way to tackle the problem is to recognize that the solution is one giant sum with three terms.
You can then convert this sum to a list, simplify the terms individually, and sum all elements of the list back together.
sol = x[t] /. s[[1]];
Total[ FullSimplify[ Apply[ List , sol ] ] ]
But this "hack" is somewhat unelegant, because it might fail if the inhomogeneous solution is a sum in it's own.
A more robust solution is to Simplify
first, then Collect
all terms that contain a C[ ]
-factor, and finally simplifying the individual terms in that sum:
sol = x[t] /. s[[1]];
Total [Simplify[Apply[List, Collect[ Simplify[ sol ], _C ] ] ] ]
It's a bit hard to see what is going in that verbose form, so here is the same code in postfix notation (think "Unix pipes"):
sol = x[t] /. s[[1]];
sol // Simplify // Collect[#, _C]& // Apply[List, #]& // Simplify // Total
The output of all these commands is equivalent.
Addendum: I did another FullSimplify
of the last result and noticed that it stayed the same (instead of reverting to the original). And indeed, checking the complexity of the expressions revealed 121 for the original "FullSimplified"-version, and 90 for the "Collected" version.
I suspect that FullSimplify
somehow misses this simplification. Hopefully it will come in future Mathematica versions.