我开始学习同情心。我使用sympy尝试了一个集成问题,我得到了这个例外:
File "/home/me/anaconda3/lib/python3.6/site-
packages/sympy/polys/domains/domain.py",
line 146,
in convert raise CoercionFailed("can't convert %s of type %s to %s" %
(element, type(element), self))
sympy.polys.polyerrors.CoercionFailed: can't convert (_x4*a + a)**0.5 of
type
<class 'sympy.core.power.Pow'> to RR(a,f,n,A,B)
[_A0,_A1,_A2,_A3,_A4,_A5,_A6,_A7,_A8,_A9,_A10,_A11,
_A12,_A13,_A14,_A15,_A16,_A17
...
raise ValueError("expected an expression convertible to a polynomial in %s,
got %s" % (self, expr))
ValueError: expected an expression convertible to a polynomial in
Polynomial ring in
完整的信息很长。我有可能做错事吗?因为我刚开始学习同情。这是我用的代码
from sympy import *
import traceback
import logging
logging.basicConfig(filename='sympy_err.log')
x, A, B, f, e, c, d, a, b, n = symbols('x A B f e c d a b n', real=True)
try:
integrate((d*sin(f*x+e))**n*(a+a*sin(f*x+e))**(5/2)*(A+B*sin(f*x+e)),x)
except Exception as e:
logging.error(traceback.format_exc())
预期的抗衍生物是
-((2*a^3*(2*B*(115 + 203*n + 104*n^2 + 16*n^3) + A*
(301 + 478*n + 224*n^2 + 32*n^3))*
Cos[e + f*x]*Hypergeometric2F1[1/2, -n, 3/2, 1 - Sin[e + f*x]]*
(d*Sin[e + f*x])^n)/
Sin[e + f*x]^n/(f*(3 + 2*n)*(5 + 2*n)*(7 + 2*n)*
Sqrt[a + a*Sin[e + f*x]])) -
(2*a^3*(2*B*(35 + 23*n + 4*n^2) + A*(77 + 50*n + 8*n^2))*
Cos[e + f*x]*
(d*Sin[e + f*x])^(1 + n))/(d*f*(3 + 2*n)*(5 + 2*n)*(7 + 2*n)*
Sqrt[a + a*Sin[e + f*x]]) -
(2*a^2*(2*B*(5 + n) + A*(7 + 2*n))*Cos[e + f*x]*
(d*Sin[e + f*x])^(1 + n)*
Sqrt[a + a*Sin[e + f*x]])/(d*f*(5 + 2*n)*
(7 + 2*n)) - (2*a*B*Cos[e + f*x]*(d*Sin[e + f*x])^(1 + n)*
(a + a*Sin[e + f*x])^(3/2))/(d*f*(7 + 2*n))
我的问题是:我是否正在通过上述问题抓住异常?因为我不知道会有什么例外。如果同情者无法解决积分,抛出异常,这是预期的吗?
我正在使用Linux,刚刚在Linux上安装了最新的Anaconda 64bit。
code>conda list sympy
# packages in environment at /home/me/anaconda3:
#
sympy 1.0 py36_0
答案 0 :(得分:1)
您看到的异常应被视为SymPy中的错误。
但是请注意,表达式中的5/2
正在被Python评估为浮点数,这使得SymPy更难以使用它。在SymPy中使用合理的权力而不是浮点数通常是个好主意。所以正确的版本是integrate((d*sin(f*x+e))**n*(a+a*sin(f*x+e))**Rational(5, 2)*(A+B*sin(f*x+e)),x)
。然而,SymPy目前依赖于这个积分(不要打扰它完成;它不会找到答案)。
所以缺点是:您看到的异常是一个错误,SymPy目前无法计算积分。