我试图求解(2**(1/2)*y**(1/2)/2)**2从0到5的积分(也显示了这里)。我一直在用
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?我似乎不能指摘这个错误。
附注:对不起,卡特里耶,我忘了python使用和不使用&&用于逻辑和
解决了:,这是一个愚蠢的int/float错误。谢谢大家。
发布于 2010-12-15 04:36:21
好吧,让我用普通的数学表示法来写你的函数(我不能用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?祝好运!
发布于 2010-12-15 04:56:40
问题是Python看到(1/2)并用整数除法计算它,得到零。
发布于 2010-12-15 04:14:14
那么它的价值应该是多少?另外,你应该在你的方程中加上更多的括号。我不知道(2**(1/2)*y**(1/2)/2)**2被解析成什么样子。
https://stackoverflow.com/questions/4446611
复制相似问题