我正在尝试评估八度音阶的二重积分
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)
其中最后四个输入参数是 x
和 y
的积分限制。您还可以使用其他输入参数指定不同的公差和积分器函数,但在这种情况下默认值可以正常工作。我用这个方法得到了你期待的答案。
对于 single-line 操作,您可以使用
跳过创建被积函数
dblquad( @(x,y) (y-x)./(x+y).^3 , 0 , 2 , 0 , 1 )
所以我需要计算八度的二重积分[![问题][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)
其中最后四个输入参数是 x
和 y
的积分限制。您还可以使用其他输入参数指定不同的公差和积分器函数,但在这种情况下默认值可以正常工作。我用这个方法得到了你期待的答案。
对于 single-line 操作,您可以使用
跳过创建被积函数dblquad( @(x,y) (y-x)./(x+y).^3 , 0 , 2 , 0 , 1 )