首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sympy Integration返回1.0*Integral(..)

Sympy Integration返回1.0*Integral(..)
EN

Stack Overflow用户
提问于 2017-10-21 04:49:50
回答 3查看 487关注 0票数 2

每当我尝试使用Sympy来集成我的函数时,它不会计算它,而只是返回乘以1.0的输入。

下面是我的代码:

代码语言:javascript
复制
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)

这是我得到的答案:

代码语言:javascript
复制
1.0*Integral((0.69*a**2 - 8.99999999999235e-5 + 0.31/a + 9.0e-5/a**2)**(-0.5), a)

我哪里错了?这是一个超出Sympy容量的积分吗?如果是这样的话,有没有人知道更好的计算积分的方法。顺便说一下,极限是0和a。

EN

回答 3

Stack Overflow用户

发布于 2017-10-24 04:48:28

当SymPy返回一个未计算的整数时,这意味着它不知道如何计算它。

在这种情况下,被积函数是一个代数函数,SymPy通常很难对其进行积分。

票数 1
EN

Stack Overflow用户

发布于 2017-10-21 05:05:25

您的代码运行良好。积分的结果是非收敛积分。您可以使用以下代码以更漂亮的形式(在jupyter中)打印它

代码语言:javascript
复制
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

结果

票数 -1
EN

Stack Overflow用户

发布于 2017-10-21 05:10:44

我在wolfram alpha上运行了积分,它说它不收敛(计算需要一段时间,所以除非你有一个wolfram高级帐户,否则它可能不会完成):

尝试一个积分,你知道它收敛了。

所以尝试一下类似这样的东西

代码语言:javascript
复制
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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46857132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档