On Friday, August 19, 2016 at 11:23:29 PM UTC+1, Harald Schilly wrote:
>
> Hi, we're here at SageDays 81 and there is some odd issue with 3d plotting 
> symbolic functions. Sage version is 7.4.beta0. One of the examples is
>
> var('x y z')
>
> plot3d( real_part(sqrt(x + i*y)), (x,-3,3), (y,-3,3), color='seagreen' )
>
> which works without the sqrt ...
>

it's most probably due to real_part() not getting eliminated properly (as 
in real_part(x+I*y) 
one cannot stipulate that x and y are real.)

Indeed,
sage: real_part(sqrt(x + i*y))
sqrt(abs(x + I*y))*cos(1/2*arctan2(imag_part(x) + real_part(y), 
-imag_part(y) + real_part(x)))

which (assuming x, y real) simpifies to 

sage: gg(x,y)=sqrt(x^2+y^2)*cos(1/2*arctan2(y, x))

and this works just fine:

plot3d(gg(x,y), (x,-3,3), (y,-3,3), color='seagreen' )



> Probably related, this also doesn't work:
>
> var('x y z')
> g999( x,y ) = exp(i*CC(x + i*y).argument()/2)*sqrt( sqrt( x^2 + y^2 ) )
> g999( 3, 4 )
>
>
> I also found 
> https://groups.google.com/d/topic/sage-support/3mekDq5Stvk/discussion
>
> Stacktraces:
>
> Error in lines 1-1
> Traceback (most recent call last):
>   File "/usr/local/lib/python2.7/dist-packages/smc_sagews/sage_server.py", 
> line 947, in execute
>     exec compile(block+'\n', '', 'single') in namespace, locals
>   File "", line 1, in <module>
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/rings/complex_field.py",
>  line 352, in __call__
>     return Parent.__call__(self, x)
>   File "sage/structure/parent.pyx", line 1107, in 
> sage.structure.parent.Parent.__call__ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/structure/parent.c:10005)
>     return mor._call_(x)
>   File "sage/structure/coerce_maps.pyx", line 110, in 
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/structure/coerce_maps.c:4754)
>     raise
>   File "sage/structure/coerce_maps.pyx", line 105, in 
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/structure/coerce_maps.c:4642)
>     return C._element_constructor(x)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/rings/complex_field.py",
>  line 391, in _element_constructor_
>     return x._complex_mpfr_field_( self )
>   File "sage/symbolic/expression.pyx", line 1342, in 
> sage.symbolic.expression.Expression._complex_mpfr_field_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/symbolic/expression.cpp:10277)
>     return self._eval_self(R)
>   File "sage/symbolic/expression.pyx", line 1205, in 
> sage.symbolic.expression.Expression._eval_self 
> (/projects/sage/sage-dev/src/build/cythonized/sage/symbolic/expression.cpp:9595)
>     raise TypeError("Cannot evaluate symbolic expression to a numeric value.")
> TypeError: Cannot evaluate symbolic expression to a numeric value.
>
>
>
> and
>
> Error in lines 1-1
> Traceback (most recent call last):
>   File "/usr/local/lib/python2.7/dist-packages/smc_sagews/sage_server.py", 
> line 947, in execute
>     exec compile(block+'\n', '', 'single') in namespace, locals
>   File "", line 1, in <module>
>   File "<string>", line 26, in newPlot3d
>   File "sage/misc/lazy_import.pyx", line 386, in 
> sage.misc.lazy_import.LazyImport.__call__ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/misc/lazy_import.c:3636)
>     return self._get_object()(*args, **kwds)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/plot/plot3d/implicit_plot3d.py",
>  line 317, in implicit_plot3d
>     G = ImplicitSurface(f, xrange, yrange, zrange, **kwds)
>   File "sage/plot/plot3d/implicit_surface.pyx", line 982, in 
> sage.plot.plot3d.implicit_surface.ImplicitSurface.__init__ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/plot/plot3d/implicit_surface.c:13474)
>     self.f, ranges, self.vars = setup_for_eval_on_grid(f, [xrange, yrange, 
> zrange], return_vars=True)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/plot/misc.py",
>  line 148, in setup_for_eval_on_grid
>     return fast_float(funcs, *vars,**options), [tuple(range+[range_step]) for 
> range,range_step in zip(ranges, range_steps)], vars
>   File "sage/ext/fast_eval.pyx", line 1429, in sage.ext.fast_eval.fast_float 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_eval.c:11151)
>     return fast_callable(f, vars=vars, domain=float, 
> _autocompute_vars_for_backward_compatibility_with_deprecated_fast_float_functionality=True,
>  expect_one_var=expect_one_var)
>   File "sage/ext/fast_callable.pyx", line 456, in 
> sage.ext.fast_callable.fast_callable 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:4490)
>     et = x._fast_callable_(etb)
>   File "sage/symbolic/expression.pyx", line 11152, in 
> sage.symbolic.expression.Expression._fast_callable_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/symbolic/expression.cpp:58401)
>     return fast_callable(self, etb)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1580, in fast_callable
>     return FastCallableConverter(ex, etb)()
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 221, in __call__
>     return self.relation(ex, operator)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1456, in relation
>     return self(ex.lhs() - ex.rhs())
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 219, in __call__
>     return self.arithmetic(ex, operator)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1508, in arithmetic
>     return reduce(lambda x,y: self.etb.call(operator, x,y), operands)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1508, in <lambda>
>     return reduce(lambda x,y: self.etb.call(operator, x,y), operands)
>   File "sage/ext/fast_callable.pyx", line 734, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.call 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:6839)
>     return ExpressionCall(self, fn, map(self, args))
>   File "sage/ext/fast_callable.pyx", line 609, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.__call__ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:5933)
>     return fc(self)
>   File "sage/symbolic/expression.pyx", line 11152, in 
> sage.symbolic.expression.Expression._fast_callable_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/symbolic/expression.cpp:58401)
>     return fast_callable(self, etb)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1580, in fast_callable
>     return FastCallableConverter(ex, etb)()
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 218, in __call__
>     return self.arithmetic(div, div.operator())
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1508, in arithmetic
>     return reduce(lambda x,y: self.etb.call(operator, x,y), operands)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1508, in <lambda>
>     return reduce(lambda x,y: self.etb.call(operator, x,y), operands)
>   File "sage/ext/fast_callable.pyx", line 734, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.call 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:6839)
>     return ExpressionCall(self, fn, map(self, args))
>   File "sage/ext/fast_callable.pyx", line 609, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.__call__ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:5933)
>     return fc(self)
>   File "sage/symbolic/expression.pyx", line 11152, in 
> sage.symbolic.expression.Expression._fast_callable_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/symbolic/expression.cpp:58401)
>     return fast_callable(self, etb)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1580, in fast_callable
>     return FastCallableConverter(ex, etb)()
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 219, in __call__
>     return self.arithmetic(ex, operator)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1498, in arithmetic
>     return self.etb.call(sqrt, operands[0])
>   File "sage/ext/fast_callable.pyx", line 734, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.call 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:6839)
>     return ExpressionCall(self, fn, map(self, args))
>   File "sage/ext/fast_callable.pyx", line 609, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.__call__ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:5933)
>     return fc(self)
>   File "sage/symbolic/expression.pyx", line 11152, in 
> sage.symbolic.expression.Expression._fast_callable_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/symbolic/expression.cpp:58401)
>     return fast_callable(self, etb)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1580, in fast_callable
>     return FastCallableConverter(ex, etb)()
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 227, in __call__
>     return self.composition(ex, operator)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1546, in composition
>     return self.etb.call(function, *ex.operands())
>   File "sage/ext/fast_callable.pyx", line 734, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.call 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:6839)
>     return ExpressionCall(self, fn, map(self, args))
>   File "sage/ext/fast_callable.pyx", line 609, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.__call__ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:5933)
>     return fc(self)
>   File "sage/symbolic/expression.pyx", line 11152, in 
> sage.symbolic.expression.Expression._fast_callable_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/symbolic/expression.cpp:58401)
>     return fast_callable(self, etb)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1580, in fast_callable
>     return FastCallableConverter(ex, etb)()
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 219, in __call__
>     return self.arithmetic(ex, operator)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1508, in arithmetic
>     return reduce(lambda x,y: self.etb.call(operator, x,y), operands)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1508, in <lambda>
>     return reduce(lambda x,y: self.etb.call(operator, x,y), operands)
>   File "sage/ext/fast_callable.pyx", line 734, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.call 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:6839)
>     return ExpressionCall(self, fn, map(self, args))
>   File "sage/ext/fast_callable.pyx", line 609, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.__call__ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:5933)
>     return fc(self)
>   File "sage/symbolic/expression.pyx", line 11152, in 
> sage.symbolic.expression.Expression._fast_callable_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/symbolic/expression.cpp:58401)
>     return fast_callable(self, etb)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1580, in fast_callable
>     return FastCallableConverter(ex, etb)()
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 218, in __call__
>     return self.arithmetic(div, div.operator())
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1508, in arithmetic
>     return reduce(lambda x,y: self.etb.call(operator, x,y), operands)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1508, in <lambda>
>     return reduce(lambda x,y: self.etb.call(operator, x,y), operands)
>   File "sage/ext/fast_callable.pyx", line 734, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.call 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:6839)
>     return ExpressionCall(self, fn, map(self, args))
>   File "sage/ext/fast_callable.pyx", line 609, in 
> sage.ext.fast_callable.ExpressionTreeBuilder.__call__ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/ext/fast_callable.c:5933)
>     return fc(self)
>   File "sage/symbolic/expression.pyx", line 11152, in 
> sage.symbolic.expression.Expression._fast_callable_ 
> (/projects/sage/sage-dev/src/build/cythonized/sage/symbolic/expression.cpp:58401)
>     return fast_callable(self, etb)
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 1580, in fast_callable
>     return FastCallableConverter(ex, etb)()
>   File 
> "/projects/sage/sage-dev/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py",
>  line 209, in __call__
>     raise err
> TypeError: unable to coerce to a real number
>
>
>
>
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to