# Logarithms and desolve

More questions about desolve results: Using

 y = function('y', x)
desolve(diff(y,x) == y*(100-y), y)


results in the solution:

-1/100*log(y(x) - 100) + 1/100*log(y(x)) == _C + x


But that solution does not work for y<100. But it is correct if you assume that it should be log(abs(y(x)-100)) in the first term. Is the abs() implicit?

(The log terms actually comes from the integral of 1/y and 1/(100-y) so it should be absolute values.)

edit retag close merge delete

1

Testing:

assume(x<0)

integral(1/x,x)

And the result is log(x). Hm...

Sort by » oldest newest most voted

log is a multivalued function. Most CASes will return log(x) and not log(abs(x)) as the antiderivative of 1/x. So that is probably the situation here - it is true in the multivalued sense?

Edit: here's how to set that maxima variable - but you have to do it in the "calculus" copy of Maxima inside Sage.

sage: integral(1/x,x)
log(x)
sage: maxima.eval(" logabs:true")
'true'
sage: integral(1/x,x)
log(x)
sage: maxima_calculus.eval(" logabs:true")
'true'
sage: integral(1/x,x)
log(abs(x))

more

I found that it is possible to set a option variable in Maxima to get the log(abs(x)) answer when doing integrals http://maxima.sourceforge.net/docs/ma... . Can you set that variable to True in Sage.