0

二重積分を数値的に評価しようとしています。特定の積分は複雑すぎますが、ここでは関係ありません。主なアイデアだけが必要です。

私が持っているとしましょう:

x=1;
y=1;

fun = @(theta,phi)  (x.*sin(theta) + y.*cos(phi));
result = integral2(fun,0,pi,0,2*pi)

これにより、単一の値が得られます。XとYの値の範囲に対してこれを実行したいとします。理想的には、x、yをベクトルとして使用します。

x=1:10;
y=1:10;

Matlabは次のように示します(。*行列の次元を使用した場合のエラーは一致する必要があります。)

解決策は何ですか?(理想的には、forループを使用したくありません)。

4

1 に答える 1

1

arrayfun配列を受け入れたい場合は、関数を「リフト」するために使用できます

x = 1:10;
y = 1:10;
result = arrayfun(@(x, y) integral2(@(theta,phi) x.*sin(theta) + y.*cos(phi),0,pi,0,2*pi), x, y);

また

fun = @(theta, phi, x, y) x.*sin(theta) + y.*cos(phi);
result = arrayfun(@(x, y) integral2(@(theta,phi)fun(theta,phi,x,y), 0,pi,0,2*pi), x, y);
于 2013-03-14T22:40:42.340 に答える