(Maxima 5.30.0 using Lisp SBCL 1.1.8-2 on Fedora 19)
I guess it is a Maxima-wide problem with resolving constant conditions,
that I ran into back in July for integrate()
and now with desolve(). Whenever Maxima asks 'Is ... zero or nonzero?'
both 'nonzero' and 'zero' are interpreted as 'zero'.
I suspect the only way to specify non-zero is to say 'n':
atvalue ('diff (f(x), x), x = 0, v0)$
atvalue (f(x), x = 0, x0)$
desolve('diff(f(x),x,2)=-(w*w)*f(x), f(x));
Is w zero or nonzero?
nonzero;
(%o16) f(x) = x0 + v0 x
desolve('diff(f(x),x,2)=-(w*w)*f(x), f(x));
Is w zero or nonzero?
n;
v0
(%o17) f(x) = x0 cos(w x) + ----- sin(w x)
w