2010-12-15 76 views
2

J'essaie de résoudre l'intégrale de (2**(1/2)*y**(1/2)/2)**2 de 0 à 5 (également affiché here). Je l'ai utiliséIntégrales Python

func = lambda y: ( 2**(1/2) * y**(1/2)/2 )**2 and a == 0 and b == 5 
from scipy import integrate 
integrate.quad(func, a b) 

Pour une raison quelconque, je continue à obtenir la valeur de 1,25, alors que Wolfram dit qu'il devrait être 6,25? Je n'arrive pas à mettre le doigt sur l'erreur.

p.s. désolé pour le Katrie d'erreur, j'ai oublié que les utilisations de python et non & & pour logique ET


SOLVED: ce fut une erreur int/flotteur stupide. Merci tout le monde.

+0

Qu'est-ce que && a l'intention d'être? – katrielalex

+2

Quelle version de Python utilisez-vous? Dans beaucoup de versions de Python, '1/2' évaluera à' 0'. Aussi, votre lien WolframAlpha montre la réponse pour l'intégrale de 'y/2' entre 0 et 5. – dheerosaur

+0

Aussi, vous savez que la fonction que vous avez écrit ci-dessus est juste' y/2', non? Vous êtes au carré d'une racine carrée ... – katrielalex

Répondre

3

Eh bien, laissez-moi écrire votre fonction en normal notation mathématique (je ne peux pas penser en Python). Je n'aime pas **, car il devient source de confusion:

(2**(1/2)*y**(1/2)/2)**2  => 
(2^(1/2) * (1/2) * y^(1/2))^2 => 
2 * (1/4) * y     => 
y/2 

donc à intégrer, antidifferentiate (Je réfléchis à haute voix):

antidifferentiate(y/2) = y^2/4 

Par conséquent

integral('y/2', 0, 5) = 
5^2/4 - 0^2/4 = 
25/4 = 
6.25 

droit. Avez-vous essayé de remplacer 1/2 par 0.5? Il pourrait être interprété comme le quotient de deux entiers, qui est arrondi.

Essayez ceci (comme les autres ont suggéré):

func = lambda y: (2**(0.5) * y**(0.5)/2.0)**2.0 & a == 0 & b == 5 

from scipy import integrate 
integrate.quad(func, a b) # What's 'a b'? Maybe 'a, b' would work? 

Bonne chance!

+0

Le problème était juste les entiers. merci d'avoir pris le temps d'écrire tout ça! Je dois demander, êtes-vous impliqué avec Blender en quelque sorte? –

+0

Je suis assez impliqué (en tant qu'utilisateur, pas en tant que développeur). Je ressuscite encore BlenderOS, comme cela a échoué il y a des années. – Blender

+0

Aussi, pas de problème. Honneurs Les finales de calcul sont cette semaine, donc j'intègre dans mon sommeil;) – Blender

0

Eh bien, quelle est la valeur supposée être? En outre, vous devriez mettre plus de parenthèses dans votre équation. Je n'ai aucune idée de ce que (2**(1/2)*y**(1/2)/2)**2 est analysé.

+0

désolé, c'est pourquoi j'ai lié à wolframalpha, il devrait être 6,25. p.s.ajouté un peu d'espacement à OP –

+0

C'est peut-être comme ça que wolfram l'analyse, mais est-ce ainsi que python l'analyse? – Falmarri

+0

oui, python effectivement résolu pour x à partir de y = 2 * x ** 2, et il a vérifié avec wolfram –

2

Le problème est que Python voit (1/2) et l'évalue avec une division entière, ce qui donne zéro.