> I just submitted a desolve bug ...
> I ... was just wondering, why do trivial bugs still exist
> on a program this old ...?
Well, first of all, the behavior you reported is not a bug. As the
documentation says, "the functional relationships must be explicitly
indicated". That is, for Desolve, you can't write 'diff(y(x),x)=y+x;
you must write 'diff(y(x),x)=y(x)+x. As it happens, Desolve can't solve
that, but ODE2 can -- though ODE2 takes a different input form (yes, I
agree this is annoying and illogical): depends(y,x)$ 'diff(y,x)=y+x.
I've included a transcript below.
But it is true that there are still bugs in Maxima. Maxima is based on
DOE Macsyma, from 1982. As far as I can tell, very little work was done
on the mathematical core between the 70's and now -- most of the work
has been on porting and on adding new facilities such as plotting. The
commercial Macsyma product was being maintained during those years, but
we don't have access to that codebase.
-s
---------------------------------------------------------------
/* Declare functional dependency */
(C1) depends(y,x);
(D1) [y(x)]
(C2) 'diff(y,x)=(4-2*x)/(3*y^2-5);
dy 4 - 2 x
(D2) -- = --------
dx 2
3 y - 5
(C3) ode2(%,y,x);
3 2
y - 5 y x - 4 x
(D3) - -------- = -------- + %C
2 2
/* Now let's check the answer */
(C4) diff(d3,x);
2 dy dy
3 y -- - 5 --
dx dx 2 x - 4
(D4) - -------------- = -------
2 2
(C5) solve(d4,'diff(y,x));
dy 2 x - 4
(D5) [-- = - --------]
dx 2
3 y - 5
(C6) subst(d5,d2);
2 x - 4 4 - 2 x
(D6) - -------- = --------
2 2
3 y - 5 3 y - 5
(C7) ratsimp(lhs(d6)-rhs(d6));
(D7) 0