2017-10-20 11 views
1

Chaque fois que j'essaie d'utiliser Sympy pour intégrer ma fonction, il ne l'évalue pas mais renvoie simplement mon entrée multipliée par 1.0.Sympy Integration renvoie 1.0 * Integral (..)

Voici mon code:

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) 

Voici la réponse que j'obtiens:

1.0*Integral((0.69*a**2 - 8.99999999999235e-5 + 0.31/a + 9.0e-5/a**2)**(-0.5), a) 

Où vais-je tort? Est-ce une partie intégrante de la capacité de Sympy? Si oui, quelqu'un sait-il de meilleures façons d'évaluer cette intégrale. Les limites sont 0 et a d'ailleurs.

Répondre

-1

Votre code fonctionne correctement. Le résultat de l'intégration est une intégrale non convergente. Vous pouvez l'imprimer plus belle forme (en jupyter) avec le code suivant

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 

résultats

enter image description here

-1

j'ai couru l'intégrale sur wolfram alpha et il dit qu'il ne converge pas (le calcul prend un certain temps, donc à moins que vous ayez un compte premium wolfram, il pourrait ne pas être complet):

Essayez une intégrale que vous connaissez converge.

donc essayer quelque chose comme

import sympy as sp 

sp.init_printing(wrap_line=False, no_global=True) 
a = sp.Symbol('a') 

I = sp.integrate(a**3,a) 

Vous devriez obtenir un ** 4/4

1

Lorsque sympy retourne une intégrale non évaluée, ce qui signifie qu'il ne sait pas comment le calculer.

Dans ce cas, l'intégrande est une fonction algébrique, ce que SymPy a souvent du mal à intégrer.