# drawing the function y = |log x|

When drawing the function y = |log x|, I know that x must be positive but I have varied x from -5 to 5 by habit. I had no error message and a graph having a part in the box x<0. I would have liked to attach the graphic but that is denied me.

    def y(x):
return abs(log(x))

G = plot(y, (-5,5), color='blue')
G.show(aspect_ratio=1, axes = True, gridlines=True, ymin = -1, ymax = 6)

edit retag close merge delete

Hint: try log(-3) etc. and see what comes out.

( 2018-10-19 14:01:00 +0200 )edit
1

( 2018-10-19 17:36:26 +0200 )edit
1

Although most people learn the logarithm has domain positive reals and range all reals the logarithm, like other functions such as e^x, gets extended to the complex number system. Type: log? on the command line for Sage to see further down: "The log function works for negative numbers, complex numbers, and symbolic numbers too, picking the branch with angle between -pi and pi". Since the absolute value of a complex number is just its distance from the origin Sage has done everything correctly.

( 2018-10-19 17:52:09 +0200 )edit

Thank you very much for the answers. They show me that I still have to study a lot Sage.

( 2018-10-24 12:01:52 +0200 )edit

Sort by ยป oldest newest most voted

One way to obtain the desired graph would be to define a function real_log which would map x to log(x) if x is positive, and return "not a number" if x is not positive.

sage: nan = float(NaN)
sage: real_log = lambda x: log(x) if x > 0 else nan
sage: y = lambda x: abs(real_log(x))
sage: G = plot(y, (-5, 5))
verbose 0 (3763: plot.py, generate_plot_points) WARNING: When plotting, failed to evaluate function at 100 points.
verbose 0 (3763: plot.py, generate_plot_points) Last error message: 'Unable to compute f(-0.047921289673)'
sage: G.show(aspect_ratio=1, axes=True, gridlines=True, ymin=-1, ymax=6)
Launched png viewer for Graphics object consisting of 1 graphics primitive

more