为什么matlab不能绘制这个函数的右图
问题描述:
我想在MATLAB中绘制这个函数,但它不能给出正确的绘图。为什么matlab不能绘制这个函数的右图
在θ= 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)
情节是这样的:
可以看到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不能绘制正确的图形,我犯了一些错误?谢谢。
答
你的问题与使用矩阵操作而不是元素操作有关。部分表达式:
(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
而结果:
希望帮助
非常感谢!它使感官!这也解释了为什么ezplot可以给出正确的情节,因为我用于ezplot的函数没有'。*'。 – Tony