2017-03-29 2 views
0

私の目的関数(myfunction、以下参照)の二重積分を、関数組み込みintegral2を使って評価したいと思います。目的関数の二重積分

このスクリプトを実行しようとしました。 myfunctionは、次の関数である

f = @(r,theta) myfunction(r,theta); 
integral2(f,0,2,0,2*pi); 

function fkt=myfunction(r,theta) 
x=r.*cos(theta); 
y=r.*sin(theta); 
los(:,1)=x; 
los(:,2)=y; 
norm = (sum(sqrt(los(:,1).^2 + los(:,2).^2))); 
fkt=norm*r; 
end 

私は極座標で積分を作っています、その理由FKT =規範* R

>> untitled2 
Subscripted assignment dimension mismatch. 

Error in myfunction (line 8) 
los(:,1)=x; 

私が把握することはできません、問題が何であるか:

Matlabのは私に次のエラーメッセージが表示されます。

答えて

0

向上させることができる2つのものがある:x行なので、割り当てが失敗している間

  1. los未定義
  2. los(:,1)ある列です。

これを修正するには、losを定義して、割り当てを変更します。例えば:

los = NaN(numel(r), 2); 
los(:,1) = x'; 
los(:,2) = y'; 

しかし、なぜあなたは変数losが必要なのでしょうか?ちょうどそれを削除し、エラーが消えてしまいます:ロサンゼルス(:、1)= X」が、それは私に同じエラーメッセージが表示されます私が見

function fkt=myfunction(r,theta) 
x=r.*cos(theta); 
y=r.*sin(theta); 
norm = (sum(sqrt(x.^2 + y.^2))); 
fkt=norm*r; 
end 

ベスト、

+0

'los'を定義する必要はありません。 matlabでは暗黙的に定義されています。また、xは行列なので、あなたの例はうまくいきません。 – yar

+0

ありがとうRatbert。私は2番目の解決策を試して、次のようにしました:>> untitled2 {警告:同じ入力値が異なるサイズの入力行列を持つ2つの別々の呼び出しで供給されたとき、Integrand関数の出力が必要な許容値に一致しませんでした。関数が適切にベクトル化されていることを確認してください。 integral2Calcでintegral2Calc> integral2t(ライン55) においてintegral2Calc> integral2t /テンソル(ライン247) において > integral2において(ライン9) untitled2において(ライン106) (ライン5)} –

+0

Iは第一の溶液を試し(losを定義する)、私は次のエラーがあります:添え字付きのディメンションの不一致。 myfunctionのエラー(行5) los(:、1)= x '; –

0

xは行列で、これを列ベクトルに代入しようとします。

+0

を...私は次のことを試してみました。 –

+0

私は答えを編集しました。 MATLABのデバッグ機能を使ってデータを調べてみましょう。 – yar

+0

申し訳ありません....私はプログラミングの初心者です。あなたは詳しく説明できますか? –

関連する問題