【问题标题】:why matlab can not plot a right graph for this function为什么matlab不能为这个函数绘制正确的图
【发布时间】:2016-09-14 12:17:10
【问题描述】:

我正在尝试在 MATLAB 中绘制此函数,但无法给出正确的绘图。

当 θ = 0,M = 1.5 时,我们可以手动得到两个根(0

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 无法绘制正确的图形,我是不是犯了一些错误?谢谢。

【问题讨论】:

    标签: matlab plot


    【解决方案1】:

    您的问题与使用矩阵运算而不是元素运算有关。你表达的一部分:

    (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 的函数没有 .*
    猜你喜欢
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2016-07-12
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多