为什么scipy为结果应该为零的积分提供了一个非零的结果?

2024-06-07 05:51:09 发布

您现在位置:Python中文网/ 问答频道 /正文

给定以下函数:

d = y-a*sin(b*x-c)

我使用scipy中的nquad在a、b和c的特定边界上集成此函数:

def Iper(x,y,alb,aub,blb,bub,clb,cub):
    return nquad(lambda a,b,c: y-a*np.sin(b*x-c), [[alb,aub],[blb,bub], [clb,cub]], full_output=True)

使用以下边界:

print(Iper(5.0,3.0,
           1.5,2.0,
           4.3,4.5,
           7.5,8.0))

我得到以下结果:

(0.09107123193614816, 1.2123921401960992e-14, {'neval': 9261})

但是结果应该是(据我所知)零。绘制给定边界的结果d值会产生一个区域,该区域决不会与d的函数相交。下面是d与轴b、c和d的函数。绿色和紫色曲线是a值a = 1.5a = 2.0。八个点代表a、b、c和d的边界所包围的“盒子”区域。。。两个绘制的函数都不与此框区域相交。为什么这里有一个不等于零的积分?你知道吗

enter image description here


Tags: 函数区域def绘制scipysin边界cub
1条回答
网友
1楼 · 发布于 2024-06-07 05:51:09

我想你误解了三维多元积分的意义。它不是域和曲线交集的三维体积(这是二维多元积分的度量),而是四维超体积。你知道吗


一步一步地看这个积分,首先是关于a的积分:

http://www.wolframalpha.com/input/?i=integrate+y-a*sin(b*x-c)+with+respect+to+a+between+1.5+and+2

然后b

http://www.wolframalpha.com/input/?i=integrate+0.5+y+%2B+0.875+sin(c+-+b+x)+with+respect+to+b+between+4.3+and+4.5

然后c

http://www.wolframalpha.com/input/?i=integrate+0.1+y+%2B+(0.875+(cos(c+-+4.5+x)+-+cos(c+-+4.3+x)))%2Fx+with+respect+to+c+between+7.5+and+8

我们看到,对于给定的x和y值,积分是非零的


注意:当我评估这个时,我得到:

(0.06749972471060735, 1.031215181499445e-14, {'neval': 9261})

而不是你的答案。你知道吗

相关问题 更多 >