Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка по ФОКИ

.pdf
Скачиваний:
13
Добавлен:
21.05.2015
Размер:
453.2 Кб
Скачать

функции, полученные интегрированием «вперед» и «назад», также существенно отличаются. Используя таким образом вычисленные волновые функции, можно сформулировать критерий, позволяющий уточнить собственное значение с наперед заданной точностью и, следовательно, найти для него и соответствующую волновую функцию. Рассмотрим алгоритм, реализующий эту идею.

Зададим на интервале [a, b] сетку из N узлов с постоянным шагом h = (b − a)/(N − 1) :

xn = a + (n − 1)h, n = 1, 2, 3, . . . , N.

(14)

Граничные условия (10) приобретают вид

ψ1 = ψN = 0.

(15)

где использовано обозначение ψn ≡ ψ(xn) . Задачи Коши для дифференциального уравнения (11) будем решать методом Нумерова (см. Приложение 2). В рамках этого метода значение функции в узле сетки находят, используя ее значения либо в двух предшествующих узлах (интегрирование «вперед»):

ψn+1 = [2(1 − 5 c qnn − (1 + c qn−1n−1] (1 + c qn+1)−1, (16)

либо в двух последующих узлах (интегрирование «назад»):

ψn−1 = [2(1 − 5 c qnn − (1 + c qn+1n+1] (1 + c qn−1)−1, (17)

Здесь c = h2/12 , qn = q(E, xn) . При использовании формулы (16) необходимо знать ψ1 и ψ2 , а формулы (17) - ψN−1 и ψN . Значения ψ1 и ψN нам известны (15), а ψ2 и ψN−1 - нет. Однако, если N достаточно велико, то для простоты можно считать, что ψ2 = d1 , ψN−1 = d2 , где, d1 , d2 - малые числа (в силу непрерывности волновой функции). Как показывает практика, величины d1 , d2 могут варьироваться в довольно широких пределах. Заметим, что абсолютные значения этих величин не имеют принципиального значения (в разумных пределах), так как волновая функция в дальнейшем будет нормироваться.

Как уже упоминалось выше, для точного собственного значения оператора Гамильтона процедуры интегрирования «вперед» и «назад» при

11

подходящем выборе d1 , d2 должны приводить к одинаковым результатам (с точностью до постоянного множителя и ошибок округления). Также очевидно, что при неравенстве E собственному значению, эти процедуры дают различные функции, отношение которых в различных узлах сетки не равно постоянной величине. Для оценки близости E к собственному значению будем вычислять разность производных волновых функций, полученных интегрированием «вперед» и «назад», в некотором внутреннем узле сетки xm

f =

>(x)

 

<(x)

.

(18)

dx

dx

 

xM

xM

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь ψ> , ψ< – волновые функции, полученные интегрированием «вперед» и «назад» соответственно; xm – узел сшивки производных. Естественно, перед вычислением (18) необходимо масштабировать функции ψ> и ψ< так, чтобы ψ>(xm) = ψ<(xm) . Такое масштабирование будем называть математической нормировкой. Вычисление f позволяет организовать процедуру поиска собственного значения методом бисекции (см. блок-схему на рис. (5)). Допустим, что необходимо найти энергию и волновую функцию основного состояния. Выберем нулевое приближение к энергии основного состояния следующим образом: E(0) = Umin+δ , где δ малая величина ( δ > 0 ), и вычислим соответствующее f(0) по формуле (18). Затем будем увеличивать энергию с шагом E до тех пор, пока величины f на двух соседних шагах i и i−1 не будут иметь различные знаки. Если шаг E был меньше, чем разность энергий соседних уровней (собственных значений) в актуальном диапазоне изменения E , то можно быть уверенным, что искомое собственное значение[E(i−1), E(i)] . Далее для уточнения собственного значения с наперед заданной точностью ǫ используется метод бисекции.

Для расчета производных в формуле (18) можно воспользоваться какой-либо подходящей численной процедурой; например, по формуле

 

=

ψ(xm − 2h) − ψ(xm + 2h) + 8[ψ(xm + h)] − ψ(xm − h)]

. (19)

dx

12h

xM

 

 

 

 

 

 

 

12

ВВОД

E = E(0); f (0); i = 0

i = i + 1

E(I) = E(I−1) + E

да

нет

f (I) · f (I−1) < 0

МЕТОД

БИСЕКЦИИ

ВЫВОД

Рис. 5. Блок-схема процедуры поиска собственного значения.

1.1.3. Компьютерная программа

Ниже представлена программа численного решения одномерного стационарного уравнения Шредингера для электрона в прямоугольной потенциальной яме с шириной 4 а. е. длины и с бесконечными стенками; дно ямы находится на оси ординат при -1 а. е. энергии (см. рис. 3) на языке СКМ Mathematica. Сравнение полученных по этой программе данных с результатами, найденными по аналитическим формулам (8) и (9), позволяет оценить корректность алгоритма, описанного в предыдущем параграфе. Использовались атомные единицы Хартри (см.

13

Приложение 1).

1Clear["Global‘*"];

2Off[General::spell];

3 Off[General::spell1];

4L = 2.;

5 A = -L; B = +L;

6n = 161;

7 h = N[(B - A)/(n - 1)];

8c = h^2/12.;

9 Umin = -1.;

10 W = 3.;

11 U[x_Real] := If[Abs[x] < L, Umin, W];

12q[e_Real, x_Real] := 2*(e - U[x]);

13Psi = Fi = X = F = Psi2 = Table[0., {n}];

14r = (n - 1)/2 + 15;

15d1 = d2 = 10.^(-9);

16Deriv[Y_List, h_Real, m_Integer] :=

17(Y[[m - 2]] - Y[[m + 2]] +

188*(Y[[m + 1]] - Y[[m - 1]]))/(12.*h);

19Num[e_Real, d1_Real, d2_Real, r_Integer, n_Integer] := 20 Module[{i, k, big, coef, p1, p2, f1, f2, f, x},

21If[n != Length[Psi] || n != Length[Fi] ||

22n != Length[X], {Print["ERROR in Num: n=", n];

23Return[{13., Psi, Fi, X}]}];

24For[i = 1, i <= n, i = i + 1,

25X[[i]] = x = A + h*(i - 1); F[[i]] = c*q[e, N[x]]];

26Psi[[1]] = Fi[[n]] = 0.;

27Psi[[2]] = d1; Fi[[n - 1]] = d2;

28For[i = 2, i < n, i = i + 1,

29p1 = 2*(1 - 5*F[[i]])*Psi[[i]];

30 p2 = (1 + F[[i - 1]])*Psi[[i - 1]];

31 Psi[[i + 1]] = (p1 - p2)/(1 + F[[i + 1]])];

32For[i = n - 1, i > 1, i = i - 1,

33f1 = 2*(1 - 5*F[[i]])*Fi[[i]];

34f2 = (1 + F[[i + 1]])*Fi[[i + 1]];

35Fi[[i - 1]] = (f1 - f2)/(1 + F[[i - 1]])];

36p1 = Abs[Max[Psi]]; p2 = Abs[Min[Psi]];

37big = If[p1 > p2, p1, p2];

38For[i = 1, i <= n,

39i = i + 1, Psi[[i]] = Psi[[i]]/big];

14

40 coef = Psi[[r]]/Fi[[r]];

41 For[i = 1, i <= n, i = i + 1,

42Fi[[i]] = coef*Fi[[i]]];

43f = Deriv[Psi, h, r] - Deriv[Fi, h, r];

44Return[N[f]]];

45Energy = Input["Energy=?"];

46e = N[Energy];

47f = Num[e, d1, d2, r, n];

48AA = A - 1; BB = B + 1;

49Gr0 = Plot[U[z], {z, A - 0.1, B + 0.1},

50PlotStyle -> {AbsoluteThickness[2], RGBColor[0, 0, 1]}, 51 PlotRange -> {-1.1, 2.9}, DisplayFunction -> Identity];

52Point1[i_Integer] := {X[[i]], Psi[[i]]};

53H1 = Array[Point1, n];

54Style1 = {AbsoluteThickness[2], RGBColor[1, 0, 0]};

55Gr1 = ListPlot[H1, {Frame -> True, PlotStyle -> Style1,

56PlotJoined -> True}, DisplayFunction -> Identity];

57Point2[i_Integer] := {X[[i]], Fi[[i]]};

58H2 = Array[Point2, n];

59Style2 = {AbsoluteThickness[2], RGBColor[0, 0.7, 1]}; 60 Gr2 = ListPlot[H2, {Frame -> True, PlotStyle -> Style2, 61 PlotJoined -> True}, DisplayFunction -> Identity];

62Gr3 = Graphics[{RGBColor[0, 1, 0], Disk[{X[[r]], Psi[[r]]},

630.07]}, DisplayFunction -> Identity];

64Show[{Gr0, Gr1, Gr2, Gr3}, PlotRange -> {-1.1, 2.9},

65AspectRatio -> Automatic, Frame -> True,

66GridLines -> Automatic, FrameTicks -> Automatic,

67PlotLabel -> "Wave functions Psi, Fi and potential",

68FrameLabel -> {"X", "U(X),Psi(X),Fi(X)"},

69DefaultFont -> {"Arial", 14}, Background ->

70 RGBColor[1, 1, 1], DisplayFunction -> $DisplayFunction];

71

t = "-----------------------------------------

";

72

t1 = "

";

73ue = PaddedForm[e, {10, 9}];

74uf = PaddedForm[f, {10, 9}];

75Print[t];

76Print[t1, "e=", ue];

77Print[t1, "f=", uf];

78Print[t];

15

В первой строке программы стираются значения всех идентификаторов. Инструкции в строках 1 и 2 подавляют вывод предупреждений о наличии идентификаторов с похожими именами (следует использовать только после отладки). В строках 4 – 10 задаются численные значения ключевых параметров задачи. Идентификаторы L и Umin обозначают полуширину и минимальную энергию потенциальной ямы; n и h – количество узлов расчетной сетки и её шаг. Идентификатор W представляет собой максимальное значение энергии на графике (в расчетах не используется). В строках 11, 12 запрограммированы функции U(x) и q(E, x) . В строке 13 генерируются необходимые для реализации списки длиной n , элементы которых содержат нули. Значение идентификатора r (строка 14) содержит номер узла сшивки. В 15-строке присваиваются значения параметрам d1 и d2 , которые необходимы для при использовании метода Нумерова (формулы (16) и (17)). Обратим внимание, что d1 и d2 присвоены значения одного знака. Это необходимо при расчете квантовых состояний, имеющих чётное число узлов внутри интервала [a, b] (в том числе и основного состояния - ноль узлов). В противном случае, строго говоря, величины d1 и d2 должны иметь противоположные знаки. Функция вычисления производной в заданном узле расчетной сетки по формуле (19) находится в строках 16 – 18. Функция Num , вычисляющая для заданной энергии функции ψ>(x) , ψ<(x) в узлах сетки и f , запрограммирована в строках 19 – 44. В учебных целях в представленном листинге не используется метод бисекции, так как ввод энергии с клавиатуры (строка 45) лучше позволяет понять алгоритм решения задачи. В последующих строках программы осуществляется вывод численного значения f для введенного e (напомним, что в СКМ Mathematica по умолчанию « E » является основанием натурального логарифма), а также графики.

Приведем результаты работы программы для двух значений энергии. Для e = −0.89 а. е. получаем f = 0.640026056 и график, представленный на рис. 6(a). Из этого графика следует, что функции ψ>(x) и ψ<(x) очень сильно отличаются, разность производных f также весьма значительна. То есть, данное значение e весьма далеко от точного

16

(a)

(b)

Рис. 6. Волновые функции, полученные интегрированием «вперед» и «назад» для: a) e = −0.89 а. е.; b) e = −0.6915749 а. е.

собственного значения. Заметим, что на этом же графике изображена потенциальная яма. Это сделано для наглядности. Ясно, что U(x)

иволновые функции имеют различные размерности – следует иметь это в виду. Далее, при e = −0.6915749 а. е. разность производных f = 1.551988378 · 10−7 , функции ψ>(x) и ψ<(x) на рис. 6(b) сливаются. Это значение энергии вычислено по точной аналитической формуле (8)

инапечатано с 7-ю значащими цифрами после десятичной точки (напомним, что в СКМ Mathematica десятичные дроби имеют мантиссу с 15 знаками); ниже представлен соответствующий код:

1 Ek[k_Integer] := N[Umin + Pi^2*(k^2/(8*L^2))];

2 tt = "-----------------------------

";

3tau = " E, a.u."; tev = " E, eV";

4Print[tt];

5 Print["k", " ", tau, " ", tev];

6Print[tt];

7For[k = 1, k <= 5, k = k + 1, Ea = Ek[k];

8ua = PaddedForm[Ea, {12, 7}]; Ev = 27.212*Ea;

9 uv = PaddedForm[Ev, {12, 7}]; Print[k, ua, uv]];

10 Print[tt];

Результат выполнения этого кода:

17

-----------------------------

k E, a.u. E, eV

-----------------------------

1

-0.6915749

-18.8191352

2

0.2337006

6.3594594

3

1.7758262

48.3237836

4

3.9348022

107.0738375

5

6.7106284

182.6096211

-----------------------------

Функция на рис. 6(b), согласно осцилляционной теореме, является волновой функцией основного состояния. Заметим, что прямое сравнение полученной функции с аналитической зависимостью (9) некорректно, так как не выполнена квантово-механическая нормировка, то есть, интеграл (7) не равен единице. Выполнить квантово-механическую нормировку рассчитанной волновой функции предоставляется читателю.

1.1.4. Условия задач.

Ниже предлагаются задачи по модификации и практическому использованию программы из параграфа 1.1.3.

Задача №1. Дополнить программу квантово-механической нормировкой волновых функций и выполнить сравнение вычисленных ψk(x) с аналитическими результатами (9) для основного и первых 4-х возбужденных состояний.

Задача №2. Модифицировать программу, вставив в неё процедуру уточнения собственного значения методом бисекции (см. блок-схему на рис. 5) и финальную квантово-механическую нормировку волновой функции.

Задача №3. Электрон находится в потенциальном поле U(x) = V0·v(x) , где

v(x) =

∞,

 

 

 

 

 

 

x / (−L, +L);

 

 

x

+

L /

(2 ·

L

,

x

(−

L,

+

L

,

 

−1 + (

 

)

)

 

 

 

)

 

18

˚

V0 = 20 эВ, L = 2 A. Найти энергии, нормированные волновые функции и плотности вероятности для основного и 1-го возбужденного состояний. Вычислить средние значения x и x2 в этих состояниях. Проверить ортогональность полученных волновых функций.

Задача №4. Электрон находится в потенциальном поле U(x) = V0·v(x) , где

v(x) =

∞,

 

 

x / (−L, +L);

 

.

25 ·

x2

− 1

, x

(−

L,

+

L

,

 

0

 

 

 

)

 

˚

V0 = 10 эВ, L = 2 A. Найти энергии, нормированные волновые функции и плотности вероятности для основного и 2-го возбужденного состояний. Вычислить, с какой вероятностью частицу можно обнаружить в этих состояниях на интервале [−L, −L/2] . Найти средние значения импульса и квадрата импульса в данных состояниях.

Задача №5. Электрон находится в потенциальном поле U(x) = V0 ·

v(x) , где

∞,

 

 

 

 

 

 

 

 

 

v(x) =

sin

πx

 

,

x / (−L, +L);

 

 

 

 

x

 

(

L, +L),

 

 

L

 

 

 

 

˚

 

 

 

 

 

 

 

 

 

 

 

 

 

энергии и нормированные волновые функ-

V0 = 15 эВ, L = 2 A. Найти

 

 

 

 

 

 

 

 

 

ции для основного и 3-го возбужденного состояний, а также плотности вероятности и средние значения кинетической и потенциальной энергий для этих состояний.

Задача №6. Электрон находится в потенциальном поле U(x) = V0·v(x) ,

где

∞,

 

 

 

 

 

 

 

v(x) =

 

 

x / (−L, +L);

 

 

sin

πx

,

x

 

(

L, +L),

 

 

˚

 

L

 

 

 

 

V0 = 5 эВ, L = 2 A. Найти энергии, нормированные волновые функции и плотности вероятности для основного и 2-го возбужденного состояний. Используя полученные данные, проверить непосредственным вычислением справедливость соотношения неопределенностей Гейзенберга.

19

Задача №7. Электрон находится в потенциальном поле U(x) = V0·v(x) , где

v(x) =

∞,

 

x / (−L, +L);

 

 

x/L

2,

x

(−

L,

+

L

,

 

−(

)

 

 

 

)

 

˚

V0 = 1 эВ, L = 2 A. Найти энергии, нормированные волновые функции и плотности вероятности для основного и 3-го возбужденного состояний. Найти средние значения h(Δx)2i , h(Δpx)2i и их произведения в данных состояниях.

Задача №8. Электрон находится в потенциальном поле U(x) = V0·v(x) ,

где

∞,

 

 

 

 

 

 

 

 

 

 

 

v(x) =

 

 

 

 

 

x / (−L, +L);

 

 

exp

 

x2

 

,

x

 

L,

 

L

,

˚ −1 +

 

(−5

 

)

 

 

(−

 

+

)

 

V0 = 25 эВ, L = 5 A. Найти энергии, нормированные волновые функции и плотности вероятности для основного, 1-го и 2-го возбужденного состояний, а также средние значения импульса, кинетической энергии

˚ ˚

и вероятность обнаружения частицы в интервале [ - 0.4 A, + 0.4 A ] в этих состояниях.

Задача №9. Электрон находится в потенциальном поле U(x) = V0·v(x) , где

 

∞,

x / (−L, +L);

 

v(x) =

 

1,

x (

L, L/2)

(0, +L);

 

 

 

 

 

 

 

 

 

 

 

 

0,

 

x (−L/2, 0),

 

 

 

 

 

 

 

˚

V0 = 15 эВ, L = 2 A. Найти энергии, нормированные волновые функции и плотности вероятности для основного и 1-го возбужденного состояний. Используя волновые функции, найти средние значения кинетической энергии в этих состояниях и сравнить результаты с приближенной оценкой hT i ≈ ~2/(8ma2) , где a - линейный размер области, в которой движется частица, а m – её масса.

20