Yes, and I should have thought of that!

Fernando

On 3/5/2020 12:13 PM, Dima Pasechnik wrote:
In fact, substituting x and y directly into the equation of the curve
to plot, and clearing denominators,
produces something pretty good,IMHO:

implicit_plot(v^2*3*sqrt(1-u^2-v^2)-u^3*9+u*(1-u^2-v^2),(u,-1,1),(v,-1,1))


On Thu, Mar 5, 2020 at 4:51 PM Dima Pasechnik <dimp...@gmail.com> wrote:
On Thu, Mar 5, 2020 at 2:32 PM Fernando Gouvea <fqgou...@colby.edu> wrote:
This works, in the sense that there's no error. One does get a bunch of 
extraneous points near the boundary of the disk. It's as if plot_points were 
trying to connect the point at (0,1) and the point at (0,-1) along the circle, 
even though f_uv is 1 on the circle.

Strangely, they occur only on the right hand side (i.e., positive u, not 
negative u). I tried setting plot_points to be 500, but the bad points don't go 
away. Changing the curve to y^2-x^3+x-1=0 doesn't make them go away either.

the reason is that implicit_plot attempts to approximate the function
it assumes continuous, so if it's negative inside, but near, the
boundary, and positive nearby, but outside, then a fake zero is being
drawn very close to the boundary.

That's why it should be better to create a plot in polar coordinates
and then transform it.



Fernando

On 3/5/2020 8:22 AM, Dima Pasechnik wrote:

The easiest way is to use Python functions rather than symbolic ones;
define a function that is 1 outside the unit disk, and implicitly plot it.

sage: def f_uv(u,v):
....:     if u^2+v^2>=1:
....:         return 1
....:     else:
....:         x=u*sqrt(9/(1-u^2-v^2))
....:         y=v*sqrt(9/(1-u^2-v^2))
....:         return y^2-x^3+x
....: implicit_plot(f_uv,(u,-1,1),(v,-1,1))

On Tue, Mar 3, 2020 at 8:20 PM Fernando Gouvea <fqgou...@colby.edu> wrote:

Here's what I ended up trying, with r=3:

var('x y u v')
x=u*sqrt(9/(1-u^2-v^2))
y=v*sqrt(9/(1-u^2-v^2))
implicit_plot(y^2-x^3+x==0,(u,-1,1),(v,-1,1))

That gives an error:

/opt/sagemath-8.9/local/lib/python2.7/site-packages/sage/ext/interpreters/wrapper_rdf.pyx
 in sage.ext.interpreters.wrapper_rdf.Wrapper_rdf.__call__ 
(build/cythonized/sage/ext/interpreters/wrapper_rdf.c:2237)()
      74         for i from 0 <= i < len(args):
      75             self._args[i] = args[i]
---> 76         return self._domain(interp_rdf(c_args
      77             , self._constants
      78             , self._py_constants

ValueError: negative number to a fractional power not real

Is there some way to tell implicit_plot to stay inside u^2+v^2\leq 1? Or to 
ignore complex values?

I'd just change the limits of u and v to make the rectangle of the
values you plot in, anyway,
to well stay inside the unit circle.

The equivalent code seems to give the correct graph in Mathematica.

Fernando

On 2/29/2020 5:29 PM, Fernando Gouvea wrote:

Some years ago in a book review, David Roberts had the idea of plotting an 
algebraic curve using the transformation  (u,v) = (x,y)/(r2 + x2 + y2)1/2, 
which transforms the plane into a circle and makes it easy to visualize the 
projective completion of the curve. You can see some of his plots at 
https://www.maa.org/press/maa-reviews/rational-algebraic-curves-a-computer-algebra-approach

I’d love to do this kind of plot for my students. Can anyone offer help on how 
to do it with Sage? (Of course the dream scenario would be to add this option 
to the plot method for curves...)

I’ve been using implicit_plot for most of my examples, which seems to be 
equivalent of using C.plot() when C is a curve.

Thanks,

Fernando
--
=============================================================
Fernando Q. Gouvea         http://www.colby.edu/~fqgouvea
Carter Professor of Mathematics
Dept. of Mathematics and Statistics
Colby College
5836 Mayflower Hill
Waterville, ME 04901

We now face a choice between Christ and nothing, because Christ has
claimed everything so that renouncing him can only be nihilism.
   -- Peter Leithart

--
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-support/bc81b0c4-62ff-65b9-a7f2-e995f26f9234%40colby.edu.

--
=============================================================
Fernando Q. Gouvea         http://www.colby.edu/~fqgouvea
Carter Professor of Mathematics
Dept. of Mathematics and Statistics
Colby College
5836 Mayflower Hill
Waterville, ME 04901

We now face a choice between Christ and nothing, because Christ has
claimed everything so that renouncing him can only be nihilism.
  -- Peter Leithart

--
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-support/09f37cde-34a4-932d-7ee1-c65d4fb8550d%40colby.edu.

Reply via email to