Python积分

时间:2010-12-15 04:10:56

标签: python lambda integration scipy integrate

我正在尝试解决(2**(1/2)*y**(1/2)/2)**205的积分(也显示为here)。我一直在使用

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)

出于某种原因,我持续获得1.25的值,而wolfram说它应该是6.25?我似乎无法指出错误。

P.S。抱歉错误katrie,我忘了python使用而不是&&用于逻辑AND


解决: 这是一个愚蠢的int / float错误。谢谢大家。

3 个答案:

答案 0 :(得分:3)

好吧,让我用 normal 数学符号编写你的函数(我不能用Python思考)。我不喜欢**,因为它让人感到困惑:

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

所以整合,反分化(我只是在大声思考):

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

因此

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

右。您是否尝试将1/2替换为0.5?它可以被解释为两个整数的商,它被四舍五入。

试试这个(正如其他人所建议的那样):

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?
祝你好运!

答案 1 :(得分:2)

问题在于Python看到(1/2)并使用整数除法对其进行求值,得到零。

答案 2 :(得分:0)

那应该是什么价值?此外,你应该在你的等式中加上更多的括号。我不知道(2**(1/2)*y**(1/2)/2)**2被解析出来是什么。