I'm trying to improve the complex_plot facilities to include real and
complex contour lines, in the style of the book Visual Complex
Analysis.  I'm getting rather confused by some of the behaviour of
contour_plot in SAGE 4.1.1.

Specifically, if I run

sage: f(z) = z^2; p1 = complex_plot(f, (-3,3), (-3,3))
sage: p2 = contour_plot(lambda x, y: imag(f(x+y*I)), (-3, 3), (-3, 3),
fill=False, cmap=[(1,0,0)], contours=[-24,-22..24])
sage: p1+p2

I get something that I expect.

On the other hand, if I then try

sage: p3 = contour_plot(lambda x, y: real(f(x+y*I)), (-3, 3), (-3, 3),
fill=False, cmap=[(1,0,0)], contours=[-24,-22..24])

I get an error message:




Traceback (click to the left for traceback)
...
ValueError: setting an array element with a sequence.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/dpt/.sage/sage_notebook/worksheets/admin/1/code/24.py",
line 7, in <module>
    contour_plot(lambda x, y: real(f(x+y*I)), (-_sage_const_3 ,
_sage_const_3 ), (-_sage_const_3 , _sage_const_3 ), fill=False, cmap=
[(_sage_const_1 ,_sage_const_0 ,_sage_const_0 )], contours=
(ellipsis_range(-_sage_const_24 ,-
_sage_const_22 ,Ellipsis,_sage_const_24 )))
  File "", line 1, in <module>

  File "sage_object.pyx", line 101, in
sage.structure.sage_object.SageObject.__repr__ (sage/structure/
sage_object.c:1387)
  File "/usr/local/src/sage-4.1.1/local/lib/python2.6/site-packages/
sage/plot/plot.py", line 873, in _repr_
    self.show()
  File "/usr/local/src/sage-4.1.1/local/lib/python2.6/site-packages/
sage/plot/plot.py", line 1364, in show
    self.save(**options)
  File "/usr/local/src/sage-4.1.1/local/lib/python2.6/site-packages/
sage/plot/plot.py", line 1592, in save
    g._render_on_subplot(subplot)
  File "/usr/local/src/sage-4.1.1/local/lib/python2.6/site-packages/
sage/plot/contour_plot.py", line 162, in _render_on_subplot
    subplot.contour(self.xy_data_array, contours, cmap=cmap, extent=
(x0,x1,y0,y1))
  File "/usr/local/src/sage-4.1.1/local/lib/python2.6/site-packages/
matplotlib/axes.py", line 6538, in contour
    return mcontour.ContourSet(self, *args, **kwargs)
  File "/usr/local/src/sage-4.1.1/local/lib/python2.6/site-packages/
matplotlib/contour.py", line 567, in __init__
    x, y, z = self._contour_args(*args)        # also sets
self.levels,
  File "/usr/local/src/sage-4.1.1/local/lib/python2.6/site-packages/
matplotlib/contour.py", line 751, in _contour_args
    z = ma.asarray(args[0], dtype=np.float64)
  File "/usr/local/src/sage-4.1.1/local/lib/python2.6/site-packages/
numpy/ma/core.py", line 5536, in asarray
    return masked_array(a, dtype=dtype, copy=False, keep_mask=True,
subok=False)
  File "/usr/local/src/sage-4.1.1/local/lib/python2.6/site-packages/
numpy/ma/core.py", line 2295, in __new__
    _data = np.array(data, dtype=dtype, copy=copy, subok=True,
ndmin=ndmin)
ValueError: setting an array element with a sequence.

What's the difference between these two cases?  Surely they should
have the same behaviour?

I can work around this (just multiply by I rather than taking the real
part), but I'd like to understand what's going on.

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to