每当我尝试使用 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。
当 SymPy 返回未计算的积分时,意味着它不知道如何计算它。
在这种情况下,被积函数是一个代数函数,SymPy 通常很难对其进行积分。
我在 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