用python sympy 求定积分,代码如下:
E=210000
from sympy import *
x=symbols('x')
T_2=(125-x)/50*(21-18)+18
Radius_2=T_2/40*10.5*0.5
I_2=((89-Radius_2*2)*T_2**3/12)+((T_2-Radius_2*2)**3*Radius_2/12)+(3.1415926536*(Radius_2*2)**4/64)
δ_2=float(integrate((x**2)/(E*I_2),(x,75,125)))
运行后电脑显示如下:
Traceback (most recent call last):
File "G:\caculation.py", line 84, in <module>
δ_2=float(integrate((x**2)/(E*I_2),(x,X_2,X_3)))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\integrals.py", line 1545, in integrate
return integral.doit(**doit_flags)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\integrals.py", line 482, in doit
did = self.xreplace(reps).doit(**hints)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\integrals.py", line 593, in doit
antideriv = self._eval_integral(
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\integrals.py", line 929, in _eval_integral
result, i = risch_integrate(f, x, separate_integral=True,
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\risch.py", line 1757, in risch_integrate
ans = integrate(fa.as_expr()/fd.as_expr(), DE.x, risch=False)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\integrals.py", line 1545, in integrate
return integral.doit(**doit_flags)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\integrals.py", line 593, in doit
antideriv = self._eval_integral(
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\integrals.py", line 1015, in _eval_integral
parts.append(coeff * ratint(g, x))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\rationaltools.py", line 51, in ratint
g, h = ratint_ratpart(p, q, x)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\integrals\rationaltools.py", line 146, in ratint_ratpart
u, v, _ = g.cofactors(g.diff())
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\polys\polytools.py", line 2846, in cofactors
h, cff, cfg = F.cofactors(G)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\polys\polyclasses.py", line 677, in cofactors
h, cff, cfg = dmp_inner_gcd(F, G, lev, dom)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\polys\euclidtools.py", line 1582, in dmp_inner_gcd
return dup_inner_gcd(f, g, K)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\polys\euclidtools.py", line 1514, in dup_inner_gcd
return dup_ff_prs_gcd(f, g, K)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\polys\euclidtools.py", line 1032, in dup_ff_prs_gcd
cff = dup_quo(f, h, K)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\polys\densearith.py", line 1579, in dup_quo
return dup_div(f, g, K)[0]
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\polys\densearith.py", line 1535, in dup_div
return dup_ff_div(f, g, K)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\sympy\polys\densearith.py", line 1458, in dup_ff_div
raise PolynomialDivisionFailed(f, g, K)
sympy.polys.polyerrors.PolynomialDivisionFailed: couldn't reduce degree in a polynomial division algorithm when dividing [EX(2.23619108242795e-7*E), EX(0.00122184751598725*E), EX(-1.80020279144187*E), EX(799.418707575197*E), EX(-115682.870492365*E)] by [EX(1.00000000000000)]. This can happen when it's not possible to detect zero in the coefficient domain. The domain of computation is EX. You may want to use a different simplification algorithm. Note that in general it's not possible to guarantee to detect zero in this domain.
这是什么原因? |