Hi I'm trying to do some computations with Bessel functions using Sage. Unfortunately, they don't seem to behave like other functions. For example: to get the plot of the sine function over the interval (0,100)
plot(sin(x),(x,0,100)) works. However, plot(bessel_J(0,x),(x,0,100)) does not. Gives the following error messages: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /home/pablo/sage/sage-4.0.rc0/<ipython console> in <module>() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/functions/special.pyc in bessel_J(nu, z, algorithm, prec) 753 C = ComplexField(prec) 754 nu = C(nu) --> 755 z = C(z) 756 K = C 757 if nu == 0: /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/rings/complex_field.pyc in __call__(self, x, im) 256 if im is not None: 257 x = x, im --> 258 return Parent.__call__(self, x) 259 260 def _element_constructor_(self, x): /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/structure/parent.so in sage.structure.parent.Parent.__call__ (sage/structure/parent.c:4121)() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (sage/structure/coerce_maps.c:3064)() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps._call_ (sage/structure/coerce_maps.c:2955)() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/rings/complex_field.pyc in _element_constructor_(self, x) 280 281 try: --> 282 return x._complex_mpfr_field_( self ) 283 except AttributeError: 284 pass /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/symbolic/expression.so in sage.symbolic.expression.Expression._complex_mpfr_field_ (sage/symbolic/expression.cpp:5573)() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/symbolic/expression.so in sage.symbolic.expression.Expression._eval_self (sage/symbolic/expression.cpp:5027)() TypeError: Cannot evaluate symbolic expression to a numeric value. In a similar way, you can for example compute the derivative of the sine function by sage: f(x)=sin(x) sage: f.diff() x |--> cos(x) but if you try to define a function by f(x)=bessel_J(0,x) you get a similar error: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /home/pablo/sage/sage-4.0.rc0/<ipython console> in <module>() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/functions/special.pyc in bessel_J(nu, z, algorithm, prec) 753 C = ComplexField(prec) 754 nu = C(nu) --> 755 z = C(z) 756 K = C 757 if nu == 0: /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/rings/complex_field.pyc in __call__(self, x, im) 256 if im is not None: 257 x = x, im --> 258 return Parent.__call__(self, x) 259 260 def _element_constructor_(self, x): /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/structure/parent.so in sage.structure.parent.Parent.__call__ (sage/structure/parent.c:4121)() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (sage/structure/coerce_maps.c:3064)() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps._call_ (sage/structure/coerce_maps.c:2955)() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/rings/complex_field.pyc in _element_constructor_(self, x) 280 281 try: --> 282 return x._complex_mpfr_field_( self ) 283 except AttributeError: 284 pass /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/symbolic/expression.so in sage.symbolic.expression.Expression._complex_mpfr_field_ (sage/symbolic/expression.cpp:5573)() /home/pablo/sage/sage-4.0.rc0/local/lib/python2.5/site-packages/sage/symbolic/expression.so in sage.symbolic.expression.Expression._eval_self (sage/symbolic/expression.cpp:5027)() TypeError: Cannot evaluate symbolic expression to a numeric value. ========================================================= I think it would be important to provide some uniform interfase for all functions. regards Pablo -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org