每当我尝试使用Sympy来集成我的函数时,它不会计算它,而只是返回乘以1.0的输入。
下面是我的代码:
import sympy as sp
a = sp.Symbol('a')
Ωm = 0.31
Ωr = 9*(10**(-5))
ΩΛ = 0.69
Ω0 = Ωm + Ωr + ΩΛ
I = sp.integrate(((Ωm*a**(-1)) + (Ωr*a**(-2)) + (ΩΛ*a**(2)) + (1-Ω0))**(-0.5),a)
print(I)这是我得到的答案:
1.0*Integral((0.69*a**2 - 8.99999999999235e-5 + 0.31/a + 9.0e-5/a**2)**(-0.5), a)我哪里错了?这是一个超出Sympy容量的积分吗?如果是这样的话,有没有人知道更好的计算积分的方法。顺便说一下,极限是0和a。
发布于 2017-10-24 04:48:28
当SymPy返回一个未计算的整数时,这意味着它不知道如何计算它。
在这种情况下,被积函数是一个代数函数,SymPy通常很难对其进行积分。
发布于 2017-10-21 05:05:25
您的代码运行良好。积分的结果是非收敛积分。您可以使用以下代码以更漂亮的形式(在jupyter中)打印它
import sympy as sp
sp.init_printing(wrap_line=False, no_global=True)
a = sp.Symbol('a')
Ωm = 0.31
Ωr = 9*(10**(-5))
ΩΛ = 0.69
Ω0 = Ωm + Ωr + ΩΛ
I = sp.integrate(((Ωm*a**(-1)) + (Ωr*a**(-2)) + (ΩΛ*a**(2)) + (1-Ω0))**(-0.5),a)
I结果


发布于 2017-10-21 05:10:44
我在wolfram alpha上运行了积分,它说它不收敛(计算需要一段时间,所以除非你有一个wolfram高级帐户,否则它可能不会完成):
尝试一个积分,你知道它收敛了。
所以尝试一下类似这样的东西
import sympy as sp
sp.init_printing(wrap_line=False, no_global=True)
a = sp.Symbol('a')
I = sp.integrate(a**3,a)你应该得到一个**4/4
https://stackoverflow.com/questions/46857132
复制相似问题