2016-08-22 17 views
2

内部関数がxとyの両方に依存する二重積分を計算する必要があります(yに積分し、限界の1つはxに依存します)。 xに残ります。私はintegral2が原因で第二の機能の形で使用することができないと思うMATLAB:二重数値積分(非常に特殊なケース)

[email protected](x,y) x.^2+y; %inner function to be integrated on y 

[email protected](x) sqrt(x).*integral(@(y)f1(x,y),x,3); %second function, to be integrated on x 

V = integral(@(x)f2(x),0,2) %final calculation 

...

PS:これは、コードの例です。私は象徴的な機能を使用したくない

PPS:私はこのような場合は、要件をふまえに簡単な計算によって解決することができ、それが唯一の些細なケースですが、私は何をする必要があることの方法より複雑であることを

おかげ

+0

これはまさにあなたが象徴的に解決したいと思うようなものです。なぜそれをしたくないのですか? –

+0

@DennisJaheruddin私もそれを象徴的に解決しようとしましたが、統合する必要がある関数は既知のプリミティブを持っていないので、matlabは解決できません...私が間違っているかどうか教えてください – user3758182

+0

あなたのコードとグーグルエラーが私にこれを与えたhttp://jp.mathworks.com/matlabcentral/answers/77733-integrating-over-integral-error-a-and-b-must-be-floating-point-scalars、私はあなたの –

答えて

3
を知っています

integral2()を作成中にMathworksはこの問題を予期していました(結局のところ、依存する境界はあまり一般的ではありません)ので、このケースも処理する方法があります。私は扱いやすい別の関数を選択しましたが、それは簡単に検証できますが、あまり気にしないと思います。

[email protected](x,y) (x.*y)/2; %inner function to be integrated on y 
fy = @(x) 3-x; % Lower bound 
V = integral2(f1,0,2,fy,3) %final calculation 

より "ドキュメント・ページ"(MATLAB端子でdoc integral2)に関する情報、またはhere

編集:あなたは

integral(g(x) * integral(x^2*y, y=f(x), y=y1), x=a, x=b) 

f1 = integral(x^2*y, y=f(x), y=y1)として積分を持っている場合はf2 = g(x)*f1 = integral(g(x)*x^2*y, y=f(x), y=y1)のように簡略化することができます。

+0

あなたの例は私が尋ねたものとはかなり異なっています。私の2番目の関数(私がf2を意味する)がどのように定義されているかを見てみましょう: 'sqrt(x)* integral(...)'。私は両方の変数に式全体を統合したくないのですが、わかりましたか?しかし、ありがとう、私は解決策があることを願っています... – user3758182

+0

@ user3758182いいえ、あなたは明確ではありません。 patrikがここで述べることは、あなたの質問の最初の行に書かれていることとまったく同じです。今あなたは何か他のことを言っている。唯一のことは、ここでのpatrikは別の例を使用していることです。 – Bernhard

+0

@Bernhard私が言うことを言いたいのは、xとyの両方に依存する関数をyに統合する必要があるということです(限界値の1つはxです)。次に、この積分にsqrt(x)を乗算し、xの積分を計算する必要があります。 xとyの両方に統合される関数が「より大きい」、コードを見れば明らかになると思いますが、Patrikは私の必要性に合わない別の例を使用しています – user3758182

関連する問題