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.