積分変数をベクトルと​して与える際の重積分​を行う際の関数とIn​tegral2の扱い​方

조회 수: 3 (최근 30일)
Mutsumi Yoshino
Mutsumi Yoshino 2021년 7월 7일
댓글: Mutsumi Yoshino 2021년 7월 7일
のように与えた場合の,x1, x2についての積分になります.
fun = @(x, y) [x y] * [1 2; 3 4] * [x; y]
q = integral2(fun, 0, 1, 0, 1) %積分範囲はa=c=0, b=d=1として記述
を行うと,以下のようなエラーになります.
エラー: *
内部行列の次元は一致しなければなりません。
エラー: LiveEditorEvaluationHelperESectionEval>@(x1,x2)[x1,x2]*[1,2;3,4]*[x1;x2]
エラー: integral2Calc>integral2t/tensor (line 228)
Z = FUN(X,Y); NFE = NFE + 1;
エラー: integral2Calc>integral2t (line 55)
[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);
エラー: integral2Calc (line 9)
[q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);
エラー: integral2 (line 106)
Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);
式を展開し,
fun = @(x1, x2) x1.^2 + 4 .*x2 .^2 + 5 .* x1 .* x2
q = integral2(fun, 0, 1, 0, 1)
>>
ans =
2.916666666666940
のようにすれば問題なく積分が可能なのですが,より複雑な式の積分を行いたいので,どのように関数を定義してあげればベクトルのまま積分関数(integralなど)に入力することが可能か教えていただきたいです.

채택된 답변

Hernia Baby
Hernia Baby 2021년 7월 7일
integral2は行列の非積分関数には適用できないみたいです。
integralであれば'ArrayValue'オプションをtrueにすることでできそうです。
ということでintegralでやってみました。
clc,clear;
fun = @(x, y) [x y] * [1 2; 3 4] * [x; y];
q = integral(@(y) integral(@(x) fun(x,y),0,1,'ArrayValued',true),0,1,'ArrayValued',true);
format long
q
q =
2.916666666666667
  댓글 수: 1
Mutsumi Yoshino
Mutsumi Yoshino 2021년 7월 7일
過去の質問を追いきれていませんでした.教えていただきありがとうございました.
また,解決策も提示していただき,ありがとうございました.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 ソルバー出力と反復表示에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!