代码之家  ›  专栏  ›  技术社区  ›  Ziezi sethi

为什么绘制这个方程不能生成正确的曲线?

  •  4
  • Ziezi sethi  · 技术社区  · 6 年前

    其目的是绘制以下方程式:P*sin(x)/x+cos(x),对于P=1.6和x in[0,5],忽略绿色填充区域,其应如下所示:

    enter image description here

    但是,根据以下代码:

    x = 0 : 0.01 : 5;     % ka/pi, where k-wavevector, a-lattice spacing.
    
    P = 1.6;              % 2*m*U_0 / hbar^2.
    rhs =  P * sinc(x*pi) + cos(x*pi);
    rhs2 = P * ( sin(x*pi) / x*pi) + cos(x*pi);
    
    plot(x, rhs, '--b', x, rhs2, 'b', x, -1*ones(size(x)), 'r', x, 1*ones(size(x)), 'r')
    axis([0 5 -3 3])
    xlabel('ka/pi')
    legend('P*sinc(x) + cos(x)', '(2mU_0b)/(hbar^2) * sin(ka)/ka + cos(ka)', 'y = -1', 'y = 1')
    

    我现在得到的是:

    enter image description here

    我做错什么了?


    2 回复  |  直到 6 年前
        1
  •  5
  •   Adriaan Decoder    6 年前

    sinc sinc(t) = sin(pi t)/(pi t) pi

    x = 0 : 0.01 : 5;     % ka/pi, where k-wavevector, a-lattice spacing.
    
    P = 1.6;              % 2*m*U_0 / hbar^2.
    rhs =  P * sinc(x)+ cos(x*pi);
    rhs2 = P * (sin(x*pi) / x*pi) + cos(x*pi);
    
    plot(x, rhs, 'b', x, rhs2, '--b', x, -1*ones(size(x)), 'r', x, 1*ones(size(x)), 'r')
    axis([0 5 -3 3])
    xlabel('ka/\pi')
    legend('P*sinc(x) + cos(x)', '(2mU_0b)/(hbar^2) * sin(ka)/ka + cos(ka)', 'y = -1', 'y = 1')
    

    enter image description here

    还要注意的是 t=0 sinc(t)=1 ,而你的 rhs2 sin(x pi)/(x pi) x=0 退货 NaN ,因此两个信号的差值,因为第二个信号是纯余弦。


    我错过了元素划分和行动计划中缺少括号 信诺 实施,见 am304's answer x=0 ,因为那会导致

        2
  •  5
  •   am304    6 年前

    代码中有两个错误:

    • sinc 功能。
    • 第二个问题是,在实现自己版本的

    ./ :

    x = 0 : 0.01 : 5;     % ka/pi, where k-wavevector, a-lattice spacing.
    
    P = 1.6;              % 2*m*U_0 / hbar^2.
    rhs =  P * sinc(x)+ cos(x*pi);
    rhs2 = P * (sin(x*pi) ./ (x*pi)) + cos(x*pi);
    
    plot(x, rhs, 'b', x, rhs2, '--b', x, -1*ones(size(x)), 'r', x, 1*ones(size(x)), 'r')
    axis([0 5 -3 3])
    xlabel('ka/pi')
    legend('P*sinc(x) + cos(x)', '(2mU_0b)/(hbar^2) * sin(ka)/ka + cos(ka)', 'y = -1', 'y = 1')
    

    结果是:

    enter image description here