我正在尝试评估八度音阶的二重积分

I am trying to evaluate double integral on octave

所以我需要计算八度的二重积分[![问题][1]][1]

>> x1 = 1;
>> x2 = 0;
>> y1 = 2;
>> y2 = 0;
>> f = @(x,y) (y-x)./((x+y).^3);
>> integral2(f,x2,x1,y2,y1);

我输入了上面的代码,但出现错误:“已达到最大子图块数,准确度可能较低”,并给出 NAN 作为答案。任何解决方案? 这是我需要评估的积分:https://i.stack.imgur.com/Xv5AM.png

这可能是因为函数的计算值为 0,0 returns NaN。

问题来了,您希望如何处理 0,0?

上限似乎为零,因此您可以尝试将其排除到数值精度。

以下:

a = integral2(f,x2+eps,x1,y2+eps,y1, 'method', 'iterated');

对我有用,但对这个结果的解释取决于你...

您可以为您的被积函数定义一个函数f

f = @(x,y) (y-x)./(x+y).^3

注意 element-wise ./.^ 函数以避免矩阵运算。现在使用 dblquad 函数:

dblquad(f,0,2,0,1)

其中最后四个输入参数是 xy 的积分限制。您还可以使用其他输入参数指定不同的公差和积分器函数,但在这种情况下默认值可以正常工作。我用这个方法得到了你期待的答案。

对于 single-line 操作,您可以使用

跳过创建被积函数

dblquad( @(x,y) (y-x)./(x+y).^3 , 0 , 2 , 0 , 1 )