Определение MATLAB для sinc
равно sinc(t) = sin(pi t)/(pi t)
, т.е. вы не должны умножаться на pi
в определении rhs:
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')
Также обратите внимание, что для t=0
sinc(t)=1
, тогда как у вашего rhs2
есть sin(x pi)/(x pi)
, что для x=0
возвращает NaN
, следовательно, разница в двух сигналах, поскольку второй является чистым косинусом.
Я пропустил поэлементное деление и отсутствие скобок в реализации sinc
ОП, см. ответ am304 . Обратите внимание, что даже при использовании поэлементного деления и скобок вы все равно пропустите точку на x=0
, поскольку это приведет к NaN
.