Opened 7 years ago
Last modified 5 years ago
#17505 closed enhancement
implement symbolic product — at Version 5
Reported by: | rws | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-duplicate/invalid/wontfix |
Component: | symbolics | Keywords: | |
Cc: | charpent | Merged in: | |
Authors: | Reviewers: | ||
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description (last modified by )
The symbolic product is currently broken in Sage :
- It cannot be created in Sage :
sage: var("j,p", domain="integer") sage: X,Y=function("X,Y") sage: prod(X(j),j,1,p) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-5-85e69544cbe9> in <module>() ----> 1 prod(X(j),j,Integer(1),p) /usr/local/sage-8/src/sage/misc/misc_c.pyx in sage.misc.misc_c.prod (/usr/local/sage-8/src/build/cythonized/sage/misc/misc_c.c:1596)() 69 70 ---> 71 def prod(x, z=None, Py_ssize_t recursion_cutoff=5): 72 """ 73 Return the product of the elements in the list x. TypeError: prod() takes at most 3 positional arguments (4 given) sage: product(X(j),j,1,p) --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-6-4d04d74c7489> in <module>() ----> 1 product(X(j),j,Integer(1),p) NameError: name 'product' is not defined
- Creatnig it it by casting a Maxima expression via the library interface gives nonsense :
sage: X(j).maxima_methods().prod(j,1,p) X(j)^p sage: X(j).maxima_methods().product(j,1,p) X(j)^p
(Note : similar nonsense also happens with sums :
sage: X(j).maxima_methods().sum(j,1,p) p*X(j)
)
- But something (what ?) can be created via the Maxima
pexpect
interface :sage: maxima("prod(X(j),j,1,p)").sage().log().log_expand() sum(log(X(j)), j, 1, p)
The part of the problem bound to the Maxima library interface is the object of #22920. The present ticket aims at creating a Sage function/method correctly creating a symbolic product object.
The ticket would have to decide which of (Maxima,SymPy?) would be used as default for this.
sage: import sympy sage: x = sympy.Symbol('x') sage: n = sympy.Symbol('n') sage: sympy.product(x, (x, 1, n)) factorial(n) sage: sympy.product(sin(x), (x, 1, n)) Product(sin(x), (x, 1, n))
Any Maxima implementation likely depends on #17502.
Change History (5)
comment:1 Changed 7 years ago by
- Description modified (diff)
comment:2 Changed 7 years ago by
- Milestone changed from sage-6.5 to sage-wishlist
comment:3 Changed 5 years ago by
comment:4 Changed 5 years ago by
- Cc charpent added
comment:5 Changed 5 years ago by
- Description modified (diff)
Note: See
TracTickets for help on using
tickets.
Note that if #20179 is implemented it has to be adapted when symbolic products are made available.