2016-09-14 5 views
0

私はこの関数をMATLABでプロットしようとしていますが、正しいプロットを与えることはできません。matlabがこの関数の右グラフをプロットできない理由

function

θ= 0、およびM = 1.5、我々は2本の根が手であり得ることができます(0 <β< =π/ 2): β1=アークサイン(2/3)= 0.7297 、β2=π/ 2である。 私のMATLABコードはこれです:

m = 1.5; 
z = 0; 
b = 0.1:0.001:pi/2; 
f = 2*cot(b)*((m^2*(sin(b).^2)-1)/(m^2*(1.4+cos(2*b))+2))-tan(z); 
plot(b,f) 

プロットはこれです:

plot1

あなたがfのすべての値(β)を見ることができβ=π/ 2を除く0未満です。それは私たちが手にしたものではありません。 はその後、我々が使用している場合:私は10の評判を持っていないので、あなたがfの値を見ることができ、プロット(β)から

m = 1.5; 
z = 0; 
b = 1:0.001:pi/2; 
f = 2*cot(b)*((m^2*(sin(b).^2)-1)/(m^2*(1.4+cos(2*b))+2))-tan(z); 
plot(b,f) 

は0よりも大きくなっている(私は私が唯一の画像を投稿することができごめんなさい。 ..)。

MATLABが正しいグラフをプロットできないのはなぜですか?私はいくつかの間違いを犯しましたか?ありがとう。

答えて

0

問題は、要素ごとの操作の代わりに行列操作を使用することと関係しています。あなたの表現の一部:

(m^2*(sin(b).^2)-1)/(m^2*(1.4+cos(2*b))+2) 

は、単一の番号-0.0062代わりのベクトルに評価されます。これは、./の代わりに/を使用し、2*cot(b).*の代わりに2*cot(b)*を使用するため、Matlabはエラーを認識できなかったためです。上記の場所で2個のドットを加えた後、問題を解決しているようだ:

m = 1.5; 
z = 0; 
b = 0.1:0.001:pi/2; 
f = 2*cot(b).*((m^2*(sin(b).^2)-1)./(m^2*(1.4+cos(2*b))+2))-tan(z); 
plot(b,f),grid on 

そして結果:

enter image description here

希望

+0

おかげで多くのことができます!それは感覚を作る!そして、これは、私がezplotに使う関数に '。* 'がないので、なぜエズプロットが正しいプロットを与えるのかについても説明します。 – Tony

関連する問題