おはよう/午後/夕方、要素単位で直接動作しない関数を統合する
私は四次テンソル計算ボリューム積分を含むMatlabスクリプトを作成しています。 H(r、θ、φ)を積分したい関数とする。 r、θ、φの簡単な演算ではHを得ることができないと仮定する。
私の問題は、MATLABで他のコードのように、私が知っているということです。
All input functions must accept arrays and operate elementwise. The function FUN(X,Y,Z)
must accept arrays X, Y, Z of the same size and return an array of corresponding values.
これは、MATLABからintegral3 functionの実装からです。
私はこの単純な機能をしようとした場合:
fun = @(X,Y,Z) X.*Y.*Z
私は、そこには問題が全くありませんし、私はそれを上に統合する場合は、[0,1]×[0,1]×[0,1]正しい結果を得る:
integral3(fun,0,1,0,1,0,1)
戻り値は0.125です。
問題は、私が言ったように、私はHを得るために、ベクターを用いて、簡単な計算を実行することができないと私は多かれ少なかれ、このようなことを行うことを余儀なくしていますということです。
function [result] = fun(x,y,z)
sz = length(x);
result = zeros(1,sz);
for i=1:sz
result(i) = x(i)*y(i)*z(i);
end
end
この関数は、その上で動作します私が先に紹介したものと全く同じ結果を返します。しかし、私はintegral3使用しようとすると、私はこのエラーを取得:
Error using integral2Calc>integral2t/tensor (line 241)
Integrand output size does not match the input size
しかし、それは明らかに、私は具体的に、入力の大き作られた私の関数の定義から見ることができます。
私は何が間違っているのか分かりません。この種の構文を使用するよりも、この機能を計算するための他の解決方法はありません。あなたの時間と助けを
おかげでたくさん:)
@drhagenの回答に追加するものはありませんが、この美しく書かれた質問に感謝したいだけです! – Toghe