Python 积分
我正在尝试计算从 0
到 5
的积分,公式是 (2**(1/2)*y**(1/2)/2)**2
(你可以在这里查看)。我一直在使用
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?我找不到错误出在哪里。
附注:抱歉,katrie,我忘了 Python 用的是而不是 && 来表示逻辑与。
解决了: 这其实是个简单的整数/浮点数错误。谢谢大家。
3 个回答
0
那么这个值应该是什么呢?另外,你的公式里应该加更多的括号。我完全不知道 (2**(1/2)*y**(1/2)/2)**2
这个表达式到底是怎么计算出来的。
2
问题在于,Python把(1/2)
当作整数来计算,所以结果是零。
3
好吧,让我用普通的数学符号来写你的函数(我不太会用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?
祝你好运!