Python 积分

2 投票
3 回答
1784 浏览
提问于 2025-04-16 08:33

我正在尝试计算从 05 的积分,公式是 (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?

祝你好运!

撰写回答