2016-09-14 32 views
0

我想在MATLAB中繪製這個函數,但它不能給出正確的繪圖。爲什麼matlab不能繪製這個函數的右圖

function

在θ= 0,M = 1.5,就可以得到有兩個根用手(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(β)的所有值都小於0,除了β=π/ 2。這不是我們手工拿到的。 然後如果我們使用:

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) 

從圖中可以看到F(β)的值都大於0(對不起,我只能發佈一個形象,因爲我沒有10美譽。 ..)。

爲什麼MATLAB不能繪製正確的圖形,我犯了一些錯誤?謝謝。

回答

0

你的問題與使用矩陣操作而不是元素操作有關。部分表達式:

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

評估爲單個數字-0.0062而不是矢量。這是因爲您使用/而不是./,並且Matlab無法注意到該錯誤,因爲您使用的是2*cot(b)*而不是2*cot(b).*。之後另外兩個點在上述地方似乎解決了問題:

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可以給出正確的情節,因爲我用於ezplot的函數沒有'。*'。 – Tony