THis got solved really nicely 
in 
https://ask.sagemath.org/question/46123/arrow-length-goes-wild-near-poles-in-vector-field-plot/

I posted here because i can not easily post long tracebacks on the forum, 
and i believed it was important for solving the problem. but it turns out 
it was me getting mixed up, not a bug (as i suspected).



On Saturday, April 13, 2019 at 7:20:24 PM UTC+2, Andreas Schuldei wrote:
>
> After getting this great tip
>
>
> https://ask.sagemath.org/question/46123/arrow-length-goes-wild-near-poles-in-vector-field-plot/
>
> I wanted to use the second approach and changed my code to this:
>
> ======
> load( 'e-feld.sage')
>
> pic=phi_ges.subs({
>     Q   : 1e-9,
>     d_e : 1,
>     z_s : .25,
>     z_c : .5,
>     epsilon_m : 76,
>     epsilon_s : 21.75,
>     epsilon_0 : 8.854187817e-12
> })
>
> grad_phi_ges = -phi_ges.gradient([x,z]).simplify()
>
> pic=grad_phi_ges.subs({
>     Q   : 1e-9,
>     d_e : 1,
>     z_s : .25,
>     z_c : .5,
>     epsilon_m : 76,
>     epsilon_s : 21.75,
>     epsilon_0 : 8.854187817e-12
> })
>
> grad_len = abs(grad_phi_ges)
> my_grad = [lambda x,z: grad_phi_ges[0].subs(x=x,z=z) if 
> grad_len.subs(x=x,z=z) < 7 else None,
>            lambda x,z: grad_phi_ges[1].subs(x=x,z=z) if 
> grad_len.subs(x=x,z=z) < 7 else None]
>
> plot_vector_field(my_grad, (x,-1,1), (z,-1,1), color='blue', 
> plot_points=22, axes_labels=['$x$ in [m]','$z$ in [m]'],typeset='latex', 
> frame=True, axes=False).save('vektorplot_gradient.png')    
>
> and when executing that last line sage goes off and does not come back.  
> when pressing Ctrl-C after a while i got this traceback. perhaps you can 
> tell me what is wrong and how i could avoid it?
>
> please find attached also the file that i source in the beginning. 
>
>
> ^C---------------------------------------------------------------------------
> RuntimeError                              Traceback (most recent call last)
> <ipython-input-1-9f045102c5a2> in <module>()
> ----> 1 load('contour-und-vektor-plot.sage')
>
> /usr/lib/python2.7/dist-packages/sage/misc/persist.pyx in 
> sage.misc.persist.load (build/cythonized/sage/misc/persist.c:2471)()
>     134 
>     135     if sage.repl.load.is_loadable_filename(filename):
> --> 136         sage.repl.load.load(filename, globals())
>     137         return
>     138 
>
> /usr/lib/python2.7/dist-packages/sage/repl/load.pyc in load(filename, 
> globals, attach)
>     261                 add_attached_file(fpath)
>     262             with open(fpath) as f:
> --> 263                 exec(preparse_file(f.read()) + "\n", globals)
>     264     elif ext == '.spyx' or ext == '.pyx':
>     265         if attach:
>
> <string> in <module>()
>
> /usr/lib/python2.7/dist-packages/sage/misc/decorators.pyc in 
> wrapper(*args, **kwds)
>     490                 options['__original_opts'] = kwds
>     491             options.update(kwds)
> --> 492             return func(*args, **options)
>     493 
>     494         #Add the options specified by @options to the signature of 
> the wrapped
>
> /usr/lib/python2.7/dist-packages/sage/plot/plot_field.pyc in 
> plot_vector_field(f_g, xrange, yrange, **options)
>     269             xpos_array.append(x)
>     270             ypos_array.append(y)
> --> 271             xvec_array.append(f(x, y))
>     272             yvec_array.append(g(x, y))
>     273 
>
> <string> in <lambda>(x, z)
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression.pyx in 
> sage.symbolic.expression.Expression.__nonzero__ 
> (build/cythonized/sage/symbolic/expression.cpp:19262)()
>    2884                 if pynac_result == relational_notimplemented and 
> self.operator()==operator.ne:
>    2885                     return not 
> (self.lhs()-self.rhs()).is_trivial_zero()
> -> 2886                 res = self.test_relation()
>    2887                 if res is True:
>    2888                     return True
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression.pyx in 
> sage.symbolic.expression.Expression.test_relation 
> (build/cythonized/sage/symbolic/expression.cpp:19878)()
>    2993         if domain is None:
>    2994             is_interval = True
> -> 2995             if self.lhs().is_algebraic() and 
> self.rhs().is_algebraic():
>    2996                 if op == equal or op == not_equal:
>    2997                     domain = QQbar
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression.pyx in 
> sage.symbolic.expression.Expression.is_algebraic 
> (build/cythonized/sage/symbolic/expression.cpp:15061)()
>    2009         """
>    2010         try:
> -> 2011             ex = sage.rings.all.QQbar(self)
>    2012         except (TypeError, ValueError, NotImplementedError):
>    2013             return False
>
> /usr/lib/python2.7/dist-packages/sage/structure/parent.pyx in 
> sage.structure.parent.Parent.__call__ 
> (build/cythonized/sage/structure/parent.c:9238)()
>     887         if mor is not None:
>     888             if no_extra_args:
> --> 889                 return mor._call_(x)
>     890             else:
>     891                 return mor._call_with_args(x, args, kwds)
>
> /usr/lib/python2.7/dist-packages/sage/structure/coerce_maps.pyx in 
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_ 
> (build/cythonized/sage/structure/coerce_maps.c:4659)()
>     160                 print(type(C), C)
>     161                 print(type(C._element_constructor), 
> C._element_constructor)
> --> 162             raise
>     163 
>     164     cpdef Element _call_with_args(self, x, args=(), kwds={}):
>
> /usr/lib/python2.7/dist-packages/sage/structure/coerce_maps.pyx in 
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_ 
> (build/cythonized/sage/structure/coerce_maps.c:4551)()
>     155         cdef Parent C = self._codomain
>     156         try:
> --> 157             return C._element_constructor(x)
>     158         except Exception:
>     159             if print_warnings:
>
> /usr/lib/python2.7/dist-packages/sage/rings/qqbar.pyc in 
> _element_constructor_(self, x)
>    1162             return AlgebraicNumber(x._descr)
>    1163         elif hasattr(x, '_algebraic_'):
> -> 1164             return x._algebraic_(QQbar)
>    1165         return AlgebraicNumber(x)
>    1166 
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression.pyx in 
> sage.symbolic.expression.Expression._algebraic_ 
> (build/cythonized/sage/symbolic/expression.cpp:11757)()
>    1510         """
>    1511         from sage.symbolic.expression_conversions import algebraic
> -> 1512         return algebraic(self, field)
>    1513 
>    1514     def __hash__(self):
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in algebraic(ex, field)
>    1140         0
>    1141     """
> -> 1142     return AlgebraicConverter(field)(ex)
>    1143 
>    1144 ##############
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in __call__(self, ex)
>     215                 div = self.get_fake_div(ex)
>     216                 return self.arithmetic(div, div.operator())
> --> 217             return self.arithmetic(ex, operator)
>     218         elif operator in relation_operators:
>     219             return self.relation(ex, operator)
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in arithmetic(self, ex, operator)
>     986                 elif operator is mul_vararg:
>     987                     operator = _operator.mul
> --> 988                 return reduce(operator, map(self, ex.operands()))
>     989         except TypeError:
>     990             pass
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in __call__(self, ex)
>     215                 div = self.get_fake_div(ex)
>     216                 return self.arithmetic(div, div.operator())
> --> 217             return self.arithmetic(ex, operator)
>     218         elif operator in relation_operators:
>     219             return self.relation(ex, operator)
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in arithmetic(self, ex, operator)
>     978                 from sage.rings.all import Rational
>     979                 base, expt = ex.operands()
> --> 980                 base = self.field(base)
>     981                 expt = Rational(expt)
>     982                 return self.field(base**expt)
>
> /usr/lib/python2.7/dist-packages/sage/structure/parent.pyx in 
> sage.structure.parent.Parent.__call__ 
> (build/cythonized/sage/structure/parent.c:9238)()
>     887         if mor is not None:
>     888             if no_extra_args:
> --> 889                 return mor._call_(x)
>     890             else:
>     891                 return mor._call_with_args(x, args, kwds)
>
> /usr/lib/python2.7/dist-packages/sage/structure/coerce_maps.pyx in 
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_ 
> (build/cythonized/sage/structure/coerce_maps.c:4659)()
>     160                 print(type(C), C)
>     161                 print(type(C._element_constructor), 
> C._element_constructor)
> --> 162             raise
>     163 
>     164     cpdef Element _call_with_args(self, x, args=(), kwds={}):
>
> /usr/lib/python2.7/dist-packages/sage/structure/coerce_maps.pyx in 
> sage.structure.coerce_maps.DefaultConvertMap_unique._call_ 
> (build/cythonized/sage/structure/coerce_maps.c:4551)()
>     155         cdef Parent C = self._codomain
>     156         try:
> --> 157             return C._element_constructor(x)
>     158         except Exception:
>     159             if print_warnings:
>
> /usr/lib/python2.7/dist-packages/sage/rings/qqbar.pyc in 
> _element_constructor_(self, x)
>    1162             return AlgebraicNumber(x._descr)
>    1163         elif hasattr(x, '_algebraic_'):
> -> 1164             return x._algebraic_(QQbar)
>    1165         return AlgebraicNumber(x)
>    1166 
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression.pyx in 
> sage.symbolic.expression.Expression._algebraic_ 
> (build/cythonized/sage/symbolic/expression.cpp:11757)()
>    1510         """
>    1511         from sage.symbolic.expression_conversions import algebraic
> -> 1512         return algebraic(self, field)
>    1513 
>    1514     def __hash__(self):
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in algebraic(ex, field)
>    1140         0
>    1141     """
> -> 1142     return AlgebraicConverter(field)(ex)
>    1143 
>    1144 ##############
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in __call__(self, ex)
>     215                 div = self.get_fake_div(ex)
>     216                 return self.arithmetic(div, div.operator())
> --> 217             return self.arithmetic(ex, operator)
>     218         elif operator in relation_operators:
>     219             return self.relation(ex, operator)
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in arithmetic(self, ex, operator)
>     986                 elif operator is mul_vararg:
>     987                     operator = _operator.mul
> --> 988                 return reduce(operator, map(self, ex.operands()))
>     989         except TypeError:
>     990             pass
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in __call__(self, ex)
>     215                 div = self.get_fake_div(ex)
>     216                 return self.arithmetic(div, div.operator())
> --> 217             return self.arithmetic(ex, operator)
>     218         elif operator in relation_operators:
>     219             return self.relation(ex, operator)
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression_conversions.pyc 
> in arithmetic(self, ex, operator)
>     993             from sage.symbolic.constants import e, pi, I
>     994             base, expt = ex.operands()
> --> 995             if base == e and expt / (pi*I) in QQ:
>     996                 return exp(expt)._algebraic_(self.field)
>     997 
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/expression.pyx in 
> sage.symbolic.expression.Expression.__nonzero__ 
> (build/cythonized/sage/symbolic/expression.cpp:19379)()
>    2897             # lot of basic Sage objects can't be put into maxima.
>    2898             from sage.symbolic.relation import test_relation_maxima
> -> 2899             return test_relation_maxima(self)
>    2900 
>    2901         self_is_zero = self._gobj.is_zero()
>
> /usr/lib/python2.7/dist-packages/sage/symbolic/relation.pyc in 
> test_relation_maxima(relation)
>     500     if relation.operator() == operator.eq: # operator is equality
>     501         try:
> --> 502             s = m.parent()._eval_line('is 
> (equal(%s,%s))'%(repr(m.lhs()),repr(m.rhs())))
>     503         except TypeError:
>     504             raise ValueError("unable to evaluate the predicate 
> '%s'" % repr(relation))
>
> /usr/lib/python2.7/dist-packages/sage/interfaces/maxima_lib.pyc in 
> _eval_line(self, line, locals, reformat, **kwds)
>     454                     line = line[ind_semi+1:]
>     455                 if statement:
> --> 456                     result = ((result + '\n') if result else '') + 
> max_to_string(maxima_eval("#$%s$"%statement))
>     457             else:
>     458                 statement = line[:ind_dollar]
>
> /usr/lib/python2.7/dist-packages/sage/libs/ecl.pyx in 
> sage.libs.ecl.EclObject.__call__ (build/cythonized/sage/libs/ecl.c:7937)()
>     818         """
>     819         lispargs = EclObject(list(args))
> --> 820         return 
> ecl_wrap(ecl_safe_apply(self.obj,(<EclObject>lispargs).obj))
>     821 
>     822     def __richcmp__(left, right, int op):
>
> /usr/lib/python2.7/dist-packages/sage/libs/ecl.pyx in 
> sage.libs.ecl.ecl_safe_apply (build/cythonized/sage/libs/ecl.c:5599)()
>     390     if ecl_nvalues > 1:
>     391         s = si_coerce_to_base_string(ecl_values(1))
> --> 392         raise RuntimeError("ECL says: {}".format(
>     393             char_to_str(ecl_base_string_pointer_safe(s))))
>     394     else:
>
> RuntimeError: ECL says: Console interrupt.
>
>

-- 
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 post to this group, send email to sage-support@googlegroups.com.
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