这是代码:
for Y=0:0.01:N,
eta(round(1+Y*100))=((i*alpha*lambda)^(1/3))*Y+eta0;
V2(round(1+Y*100))=((i*alpha*lambda)^(-2/3))*q*integral2(@(n) airy(n),eta0,eta,eta0,eta);
end
发生了什么事?
Error using profiles>@(n)airy(n)
Too many input arguments.
答案 0 :(得分:0)
您不希望计算z = f(x, y)
平面下的音量,这是integral2
的目标。您想要计算积分的积分:
integral(@(n) integral(@(x) airy(x), xMin, n), xMin, xMax, 'ArrayValued', true)
请注意,我们需要为外部积分添加'ArrayValued' = true
,因为内部积分不允许对其上限进行矢量化评估。
使用integral2
:
integral2(@(x, y) airy(y), xMin, xMax, xMin, @(x) x)
您可以按如下方式解释:内积分是通过在y
轴上积分到y = x
来计算的,外积分是通过积分y
积分的结果来计算的
验证提供的方法
可以使用以下测试函数验证该方法:
airy = @(n) n; % linear test function
xMin = 0;
xMax = 10;
第二个积分是:n^3/6 = 166.6667
,这确实是两种方法的结果。