Hello to all,
At the moment we need transform a symbolic expression from 'sage' to
'sympy',
for explicit functions, sage works fine :
sage: b = sin(x)
sage: type(b)
<type 'sage.symbolic.expression.Expression'>
sage: type(sin)
<class 'sage.functions.trig.Function_sin'>
sage: a=b._sympy_()
sin(x)
sage: type(a)
sin # this is strange!
and viceversa
import sympy
sage: x=sympy.symbols('x')
sage: type(x)
<class 'sympy.core.symbol.Symbol'>
sage: a=sympy.sin(x)
sage: type(a)
sin
sage: b=a._sage_()
sage: type(b)
<type 'sage.symbolic.expression.Expression'>
But when we use a symbolic function the conversion does not work:
sage: a = function('A')(x,y)
sage: type(A)
<class 'sage.symbolic.function_factory.NewSymbolicFunction'>
sage: type(a)
<type 'sage.symbolic.expression.Expression'>
sage: a._sympy_()
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-101-eeb95aeda6e6> in <module>()
----> 1 a._sympy_()
/home/mmancini/Sage-last/sage/src/sage/symbolic/expression.pyx in
sage.symbolic.expression.Expression._sympy_
(/home/mmancini/Sage-last/sage/src/build/cythonized/sage/symbolic/expression.cpp:11582)()
1441 """
1442 from sage.symbolic.expression_conversions import sympy
-> 1443 return sympy(self)
1444
1445 def _algebraic_(self, field):
/home/mmancini/Sage-last/sage/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.pyc
in __call__(self, ex)
224 return self.tuple(ex)
225 else:
--> 226 return self.composition(ex, operator)
227
228 def get_fake_div(self, ex):
/home/mmancini/Sage-last/sage/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.pyc
in composition(self, ex, operator)
765 return f_sympy(*sympy.sympify(g, evaluate=False))
766 else:
--> 767 raise NotImplementedError("SymPy function '%s' doesn't
exist" % f)
768
769 sympy = SympyConverter()
We are doing some mistakes or the conversion function
(expression_conversions.SympyConverter) is not complete ?
And in other sense (sympy => sage)
sage: f=sympy.Function('F')
sage: x=sympy.symbols('x')
sage: a=f(x)
sage: a
F(x)
sage: a.diff()
Derivative(F(x), x)
sage: type(f)
<class 'sympy.core.function.UndefinedFunction'>
but
age: a._sage_()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-124-995abf46eb43> in <module>()
----> 1 a._sage_()
/home/mmancini/Sage-last/sage/local/lib/python2.7/site-packages/sympy/core/function.pyc
in _sage_(self)
705 import sage.all as sage
706 fname = self.func.__name__
--> 707 func = getattr(sage, fname)
708 args = [arg._sage_() for arg in self.args]
709 return func(*args)
AttributeError: 'module' object has no attribute 'F'
There is a solution or have we to implement the symbolic functions
conversion ?
Any suggestion?
Thanks,
Marco
--
You received this message because you are subscribed to the Google Groups
"sage-devel" 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-devel.
For more options, visit https://groups.google.com/d/optout.