2017-01-08 3 views
0

私はMatlabで以下の式の等高線プロットを作成しようとしています。Matlabのベクトルと数値を含む1つの式にどのような演算を使用しますか?

theta=[(k+0.5)^2+t^2]^(-1/2)-[(k-0.5)^2+t^2]^(-1/2). 

これは最初の表現方法です。

k=linspace(-1,1,20); 
t=linspace(-0.5,0.5,20); 
[K,T]=meshgrid(k,t); 
Z=((K+0.5)^2+T.^2)^-0.5 -((K-0.5)^2+T.^2)^-0.5; 
contour(K,T,Z, 'ShowText', 'on') 

エラーメッセージ「入力引数が現実でなければなりません。」が表示されます。私は4行目で方程式を間違って表現したと仮定します。私はベクトルと数字の両方がある(K + 0.5)^ 2 + T.^2のような式のためにどんなタイプの演算を使うべきか混乱しています。 Matlabの構文でどのように表現すればよいですか? 質問が本当に基本的な場合は謝罪してください。全くの初心者。

答えて

1

Zには複素数値(虚数成分はゼロでない)が含まれているため、間違いがあります。

本当の問題は、しかし、あなたがZのあなたの定義の中でいくつかの場所でmatrix power (^)ではなくelement-wise power (.^)を使用しているということです。

Zを計算するというあなたの表現は、実際には次のようになります。

Z = ((K + 0.5).^2 + T.^2).^-0.5 - ((K - 0.5).^2 + T.^2).^-0.5; 

enter image description here

関連する問題