Python sageMath符号产品替换和无限失败
软件是SageMath版本9.1,主要涉及SageMath的代码以sympy为核心 该表达意图是 (1-q)…(1-q^n) n的范围从1到无穷大 首先,它表明 返回了0的正确结果 错误1 然而,代码Python sageMath符号产品替换和无限失败,python,sympy,symbolic-math,sage,Python,Sympy,Symbolic Math,Sage,软件是SageMath版本9.1,主要涉及SageMath的代码以sympy为核心 该表达意图是 (1-q)…(1-q^n) n的范围从1到无穷大 首先,它表明 返回了0的正确结果 错误1 然而,代码 product(1-a^x, x, 1, oo) 返回错误 --------------------------------------------------------------------------- ValueError
product(1-a^x, x, 1, oo)
返回错误
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-11-d7561515fdb5> in <module>()
----> 1 product(Integer(1)-a**x, x, Integer(1), oo)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/misc/functional.py in symbolic_prod(expression, *args, **kwds)
629 from .misc_c import prod as c_prod
630 if hasattr(expression, 'prod'):
--> 631 return expression.prod(*args, **kwds)
632 elif len(args) <= 1:
633 return c_prod(expression, *args)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/symbolic/expression.pyx in sage.symbolic.expression.Expression.prod (build/cythonized/sage/symbolic/expression.cpp:63909)()
12375 """
12376 from sage.calculus.calculus import symbolic_product
> 12377 return symbolic_product(self, *args, **kwds)
12378
12379 def integral(self, *args, **kwds):
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/calculus/calculus.py in symbolic_product(expression, v, a, b, algorithm, hold)
867
868 if algorithm == 'maxima':
--> 869 return maxima.sr_prod(expression,v,a,b)
870
871 elif algorithm == 'mathematica':
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/interfaces/maxima_lib.py in sr_prod(self, *args)
902 """
903 try:
--> 904 return max_to_sr(maxima_eval([[max_ratsimp],[[max_simplify_prod],([max_prod],[sr_to_max(SR(a)) for a in args])]]));
905 except RuntimeError as error:
906 s = str(error)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/interfaces/maxima_lib.py in max_to_sr(expr)
1683 op=max_op_dict[op_max]
1684 max_args=cdr(expr)
-> 1685 args=[max_to_sr(a) for a in max_args]
1686 return op(*args)
1687 elif expr.symbolp():
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/interfaces/maxima_lib.py in <listcomp>(.0)
1683 op=max_op_dict[op_max]
1684 max_args=cdr(expr)
-> 1685 args=[max_to_sr(a) for a in max_args]
1686 return op(*args)
1687 elif expr.symbolp():
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/interfaces/maxima_lib.py in max_to_sr(expr)
1684 max_args=cdr(expr)
1685 args=[max_to_sr(a) for a in max_args]
-> 1686 return op(*args)
1687 elif expr.symbolp():
1688 if not(expr in max_sym_dict):
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/rings/integer.pyx in sage.rings.integer.Integer.__pow__ (build/cythonized/sage/rings/integer.c:14994)()
2222 return (<Integer>left)._pow_(right)
2223 elif isinstance(left, Element):
-> 2224 return coercion_model.bin_op(left, right, operator.pow)
2225 # left is a non-Element: do the powering with a Python int
2226 return left ** int(right)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/coerce.pyx in sage.structure.coerce.CoercionModel.bin_op (build/cythonized/sage/structure/coerce.c:10143)()
1209 self._record_exception()
1210 else:
-> 1211 return PyObject_CallObject(op, xy)
1212
1213 if op is mul:
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/element.pyx in sage.structure.element.Element.__pow__ (build/cythonized/sage/structure/element.c:14059)()
2034 cdef int cl = classify_elements(left, right)
2035 if HAVE_SAME_PARENT(cl):
-> 2036 return (<Element>left)._pow_(right)
2037 if BOTH_ARE_ELEMENT(cl):
2038 return coercion_model.bin_op(left, right, pow)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/symbolic/expression.pyx in sage.symbolic.expression.Expression._pow_ (build/cythonized/sage/symbolic/expression.cpp:25373)()
4092 relational_operator(self._gobj))
4093 else:
-> 4094 x = g_pow(self._gobj, nexp._gobj)
4095 return new_Expression_from_GEx(self._parent, x)
4096
ValueError: power::eval(): pow(1, Infinity) is not defined.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-17-e9b5fcf66965> in <module>()
1 #help(prod)
2 #(1/eta_1).series(q,10).expand()
----> 3 (h).series(a,Integer(10)).expand()
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/symbolic/expression.pyx in sage.symbolic.expression.Expression.series (build/cythonized/sage/symbolic/expression.cpp:27193)()
4484 sig_on()
4485 try:
-> 4486 x = self._gobj.expand(0).series(symbol0._gobj, cprec, options)
4487 nex = SymbolicSeries.__new__(SymbolicSeries)
4488 nex._parent = self._parent
ValueError: power::eval(): division by zero
返回的
-(-1)^N*product(a^x - 1, x, 1, N)
-product(a^x - 1, x, 1, 10)
但是,随着替代,
h=expres1.substitute({N:10})
返回的
-(-1)^N*product(a^x - 1, x, 1, N)
-product(a^x - 1, x, 1, 10)
无法展开符号表达式h
(h).series(a,10).expand()
返回错误
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-11-d7561515fdb5> in <module>()
----> 1 product(Integer(1)-a**x, x, Integer(1), oo)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/misc/functional.py in symbolic_prod(expression, *args, **kwds)
629 from .misc_c import prod as c_prod
630 if hasattr(expression, 'prod'):
--> 631 return expression.prod(*args, **kwds)
632 elif len(args) <= 1:
633 return c_prod(expression, *args)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/symbolic/expression.pyx in sage.symbolic.expression.Expression.prod (build/cythonized/sage/symbolic/expression.cpp:63909)()
12375 """
12376 from sage.calculus.calculus import symbolic_product
> 12377 return symbolic_product(self, *args, **kwds)
12378
12379 def integral(self, *args, **kwds):
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/calculus/calculus.py in symbolic_product(expression, v, a, b, algorithm, hold)
867
868 if algorithm == 'maxima':
--> 869 return maxima.sr_prod(expression,v,a,b)
870
871 elif algorithm == 'mathematica':
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/interfaces/maxima_lib.py in sr_prod(self, *args)
902 """
903 try:
--> 904 return max_to_sr(maxima_eval([[max_ratsimp],[[max_simplify_prod],([max_prod],[sr_to_max(SR(a)) for a in args])]]));
905 except RuntimeError as error:
906 s = str(error)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/interfaces/maxima_lib.py in max_to_sr(expr)
1683 op=max_op_dict[op_max]
1684 max_args=cdr(expr)
-> 1685 args=[max_to_sr(a) for a in max_args]
1686 return op(*args)
1687 elif expr.symbolp():
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/interfaces/maxima_lib.py in <listcomp>(.0)
1683 op=max_op_dict[op_max]
1684 max_args=cdr(expr)
-> 1685 args=[max_to_sr(a) for a in max_args]
1686 return op(*args)
1687 elif expr.symbolp():
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/interfaces/maxima_lib.py in max_to_sr(expr)
1684 max_args=cdr(expr)
1685 args=[max_to_sr(a) for a in max_args]
-> 1686 return op(*args)
1687 elif expr.symbolp():
1688 if not(expr in max_sym_dict):
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/rings/integer.pyx in sage.rings.integer.Integer.__pow__ (build/cythonized/sage/rings/integer.c:14994)()
2222 return (<Integer>left)._pow_(right)
2223 elif isinstance(left, Element):
-> 2224 return coercion_model.bin_op(left, right, operator.pow)
2225 # left is a non-Element: do the powering with a Python int
2226 return left ** int(right)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/coerce.pyx in sage.structure.coerce.CoercionModel.bin_op (build/cythonized/sage/structure/coerce.c:10143)()
1209 self._record_exception()
1210 else:
-> 1211 return PyObject_CallObject(op, xy)
1212
1213 if op is mul:
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/structure/element.pyx in sage.structure.element.Element.__pow__ (build/cythonized/sage/structure/element.c:14059)()
2034 cdef int cl = classify_elements(left, right)
2035 if HAVE_SAME_PARENT(cl):
-> 2036 return (<Element>left)._pow_(right)
2037 if BOTH_ARE_ELEMENT(cl):
2038 return coercion_model.bin_op(left, right, pow)
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/symbolic/expression.pyx in sage.symbolic.expression.Expression._pow_ (build/cythonized/sage/symbolic/expression.cpp:25373)()
4092 relational_operator(self._gobj))
4093 else:
-> 4094 x = g_pow(self._gobj, nexp._gobj)
4095 return new_Expression_from_GEx(self._parent, x)
4096
ValueError: power::eval(): pow(1, Infinity) is not defined.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-17-e9b5fcf66965> in <module>()
1 #help(prod)
2 #(1/eta_1).series(q,10).expand()
----> 3 (h).series(a,Integer(10)).expand()
/opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/symbolic/expression.pyx in sage.symbolic.expression.Expression.series (build/cythonized/sage/symbolic/expression.cpp:27193)()
4484 sig_on()
4485 try:
-> 4486 x = self._gobj.expand(0).series(symbol0._gobj, cprec, options)
4487 nex = SymbolicSeries.__new__(SymbolicSeries)
4488 nex._parent = self._parent
ValueError: power::eval(): division by zero
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
1#帮助(prod)
2#(1/eta_1).series(q,10).expand()
---->3(h).级数(a,整数(10)).expand()
/sage.symbol.expression.expression.series中的opt/sagemath-9.1/local/lib/python3.7/site-packages/sage/symbol/expression.pyx(build/cythonized/sage/symbol/expression.cpp:27193)()
4484 sig_on()
4485尝试:
->4486 x=自扩展(0)系列(symbol0.\u gobj,cprec,选项)
4487 nex=SYMBOLCSERIES.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
4488 nex.\U parent=自我.\U parent
ValueError:power::eval():被零除
问题
你能告诉我上面的代码出了什么问题吗?为什么sageMath不认识无限积?为什么替代不起作用,程序不能评估功能