First time here? Check out the FAQ!

Ask Your Question
1

Precision plots - How do I do those?

asked 9 years ago

Dox gravatar image

updated 8 years ago

FrédéricC gravatar image

Hi.

I have a function which varies so slowly, that in the range I'm interested only the 17th decimal changes.

The sws is this:

sage: mp = 139570180.
sage: mm = 105658371.5
sage: mn = 1.
sage: dmp = 350.
sage: dmm = 3.8
sage: dmn = 0.1
sage: l(a,b,c) = a^2 + b^2 + c^2 - 2*( a*b + b*c + c*a )
sage: f(x) = sqrt(l(mp^2, mm^2, x^2))/(2*mp)
sage: R=RealField(100)
sage: g = fast_callable(f, vars=[x], domain=R)
sage: plot( g, (x,0,2))

but I got the following plot, which is unsatisfactory in several ways!

image description

How could I possible improve it? (ticks on vertical axis, a "continuous" line, ...)

Thank you!

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
3

answered 9 years ago

tmonteil gravatar image

updated 9 years ago

I did not check further, but i would say that the plot function is using matplotlib and that the latter uses double floating-point numbers (with 53 bits of precision). So, what i temporarly suggest is to shift your finction as follow to get more precision:

sage: ff(x) = f(x)-2.97919787636599e7
sage: g = fast_callable(ff, vars=[x], domain=R)
sage: plot( g, (x,0,2))

This workaround solution is not completely satisfactory, but at least, you will get something much rounder:

smooth_plot.png

Preview: (hide)
link

Comments

@tmonteil Thank you! it was in fact really useful!

Dox gravatar imageDox ( 9 years ago )

^_^ .

tmonteil gravatar imagetmonteil ( 7 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 9 years ago

Seen: 5,705 times

Last updated: Aug 22 '15