对于我的研究,我想用Sympy计算Python中的积分。最终我想更改一些参数,看看它如何影响结果但是为了测试我的代码,我首先要做一个基本的计算。不幸的是使用以下功能:
sp.integrate(Z, (x, -sp.oo, sp.oo))
使用:
Z = -9.274e-12*(x** 2*(y** 2 + 1)*(-20.0*x** 2 + 15.0*y** 2 + 15.0) + (-0.666666666666667*x** 2 + 0.333333333333333*y** 2 + 0.333333333333333)*(35.0*x** 4 - 30.0*x** 2*(x** 2 + y** 2 + 1) + 3.0*(x** 2 + y** 2 + 1)** 2))*tanh(0.672028985507246*sqrt((1.0*x** 2*(y** 2 + 1) + (-0.666666666666667*x** 2 + 0.333333333333333*y** 2 + 0.333333333333333)** 2)/(x** 2 + y** 2 + 1)** 5))/(sqrt((1.0*x** 2*(y** 2 + 1) + (-0.666666666666667*x** 2 + 0.333333333333333*y** 2 + 0.333333333333333)** 2)/(x** 2 + y** 2 + 1)** 5)*(x** 2 + y** 2 + 1)** 7)
我收到以下错误:
PolynomialDivisionFailed: couldn't reduce degree in a polynomial
division algorithm when dividing [0.444444444444444,
0.555555555555556*y** 2 + 0.555555555555556, 0.111111111111111*y** 4 + 0.222222222222222*y** 2 + 0.111111111111111] by [-5.08052634253563e-5*y** 18 - 0.000457247370828057*y** 16 -
0.00182898948331216*y** 14 - 0.00426764212772879*y** 12 - 0.00640146319159407*y** 10 - 0.00640146319159407*y** 8 - 0.00426764212772879*y** 6 - 0.00182898948331216*y** 4 - 0.000457247370828057*y** 2 - 5.08052634253563e-5, -5.08052634253074e-5*y** 20 - 0.000508052634253037*y** 18 - 0.00228623685413862*y** 16 - 0.00609663161103645*y** 14 - 0.0106691053193141*y** 12 - 0.0128029263831771*y** 10 - 0.0106691053193141*y** 8 - 0.00609663161103645*y** 6 - 0.00228623685413862*y** 4 - 0.000508052634253037*y** 2 - 5.08052634253074e-5]. This can happen when it's not possible to detect zero in the coefficient domain. The domain of computation is
RR[y]. Zero detection is guaranteed in this coefficient domain. This
may indicate a bug in SymPy or the domain is user defined and doesn't
implement zero detection properly.
通过调查这个错误,我认为这是Sympy中的一个错误,但是其他人有时会找到一个工作来让他们的计算仍在计算。有人知道如何计算我的计算吗?
答案 0 :(得分:0)
有几件事:
1)为了计算,请采用基于python的另一个程序(例如http://www.sagemath.org/index.html)。现在它很好但后来你将面临重新计算等问题。数学程序为此提供了一个设计的UI。
2)有时它通过给出 x / y 风格的数字来帮助同情,因为......非常准确的1/3 =! 0.333333333333333(第16位)
3)如果2不是解决方案,你可以解决(外行人的风格): 考虑在a和b的边界内进行数值积分,而不是减少a-tow并在循环中增加b thords oo。绘制结果并外推到无穷大......但是,这个问题应该可以解决。我不知道这个问题有问题......(我很乐意监督错误)