1

したがって、最終的に積分の最終限界である変数 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
4

1 に答える 1

1

エディタの右側にある小さなオレンジ色の目盛りを見てください。私のコピーでは、カーソルを合わせると、「外側のループ インデックス 'i' が子関数内に設定されています」と表示されます。

この関数の入力または予想される出力がどうなるかはわかりませんが、MATLAB を混乱させないようにする必要があります。奇妙なスコープ規則があります。おそらくjの代わりに、2 番目のネストされた関数で別の変数を使用しますi

于 2012-04-24T01:58:44.737 に答える