所以我试图为三重积分编写一个函数,它最终取决于变量q,它是积分的最终极限,还有一个变量b,它有助于参数化函数。但是,这段代码不起作用,我不完全确定该怎么做。我认为它可能涉及做一些事情来将b的值传递给嵌套函数,但我在matlab上很新,任何帮助都是值得赞赏的。
function [r] = test1(q,u)
b = u;
r = quad(@(k)Inner(k),-0.5.*(1-b)-b-1,q);
function [w] = Inner(k)
w = zeros(1);
for i = 1 : length(k);
w(i) = quad(@(n)InnerIntegral(n,b).*unifpdf(k(i)-n,-1,1),0,k(i)-1,k(i)+1);
end;
function [y] = InnerIntegral(n)
y = zeros(1);
for i = 1 : length(n);
y(i) = quad(@(m)unifpdf(n(i)-m, -b, b).*unifpdf(m,-0.5.*b,0.5.*b), n(i)-b,n(i)+b);
end;
end
end
end
答案 0 :(得分:1)
查看编辑器右侧的小橙色刻度。在我的副本中,悬停在一个上面说“外部循环索引'i'设置在子函数内。”
我不知道此函数的输入或预期输出应该是什么,但您应该尽量避免混淆MATLAB。它有奇怪的范围规则。在第二个嵌套函数中使用另一个变量,可能是j
而不是i
。