2016-09-14 95 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

相关问题