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

Reply via email to