МИФИ_Вычметоды КФ
.pdf
2.Поиск и сортировка. Математические проблемы при построении базисных функций
Вопросы поиска и сортировки возникают при численном моделировании квантовых задач при формировании базисных функций системы, а также при построении матриц операторов в выбранном базисе. Проще всего эту проблему понять на простом математическом примере.
Рассмотрим систему из трех ящиков и двух одинаковых шаров, помещенных в эти ящики. Очевидно, что всего в системе будет 6 возможных состояний (рис. 2.1). Назовем эти состояния базисом системы.
Рис. 2.1. Базис для системы из трех ящиков и двух шаров
Если бы шары были разными, например один черный, а другой – белый, то ситуации, при которой во втором и третьем ящике находится по одному шару, отвечают два возможных варианта размещения (рис. 2.2, слева). Если же шары – одинаковые, т.е. неразличимые, то вариант всего один (рис. 2.2, справа).
21
Рис. 2.2. Различимые (слева) и неразличимые (справа) шары
Пусть теперь есть некоторое устройство A, которое работает следующим образом: оно перекладывает один шар из третьего ящика во второй. Посмотрим, как будет выглядеть матрица, отражающая работу этого устройства, в базисе, изображенном на рис. 2.1.
Матрица А будет состоять из матричных элементов Aij , при этом
индекс столбца j соответствует номеру исходного состояния, а индекс строки i – состоянию, которое получится из состояния j после того, как на него подействует А. Например, если взять в качестве исходного состояния состояние 1 (т.е. индекс j будет равен 1), в котором оба шара находятся в третьем ящике, то после перекладывания одного из шаров во второй ящик получится такое состояние (рис. 2.3):
Рис. 2.3. Под действием устройства А первое состояние переходит во второе
Видно, что получилось какое-то другое состояние, отличное от состояния 1. Для того, чтобы определить значение индекса i, необходимо найти, на каком месте в базисе находится это состояние. В этот момент и возникает проблема поиска полученного состояния в исходном базисе. Посмотрев на рис. 2.1 видим, что состояние, которое получилось из состояния 1 – это состояние 2. Значит,
1, если i = 2; Ai1 = 0, если i ≠ 2,
так как под воздействием А состояние 1 переходит в состояние 2 и ни в какое другое, и первый столбец матрицы А будет таким:
22
... ... ... ...
1 ... ... ... ...
0 ... ... ... ...
A =
0 ... ... ... ...
0 ... ... ... ...
0 ... ... ... ...0
...
...
...... .
...
...
Столбцы 3, 5 и 6 в матрице А будут нулевыми, так как в этих состояниях третий ящик пуст, и перекладывать нечего.
Аналогично, состояние 2 под действием А переходит в состояние 3, а состояние 4 – в состояние 5, и окончательный вид матрицы А следующий:
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
1 |
0 |
0 |
0 |
0 |
0 |
|
|
|
||||||
|
0 |
1 0 0 0 0 |
|
||||
A = |
. |
||||||
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
1 |
0 |
0 |
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
||||||
После того, как получена |
матрица, |
|
отражающая действие |
||||
устройства А, с ней можно обращаться, как с обычной матрицей. Например, для того, чтобы узнать, что произойдет с состояниями базиса, если на них дважды подействовать устройством А, достаточно возвести матрицу А в квадрат:
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
||||||
|
1 0 |
0 |
0 |
0 |
0 |
|
, |
|
A2 = |
|
|||||||
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
||||||
это означает, что двукратное действие А приводит к переходу состояния 1 в состояние 3, а все остальные матричные элементы
23
равны нулю, так как только в состоянии 1 имеются 2 шара в третьем ящике.
Заметим, что далее, при изучении моделей сильной связи, будет понятна физическая интерпретация действия А как оператора квантового перехода частицы с третьего узла пространственной решетки на второй.
Таким образом, введен некоторый оператор в базисе, показанном на рис. 2.1, и построили в этом базисе матрицу, соответствующую этому оператору, действуя оператором на базисные функции.
При моделировании квантовых систем часто приходится формировать матрицы линейных операторов в базисах, состоящих из очень большого количества состояний, поэтому, если процедура поиска нужного состояния в базисе не организована эффективным образом, процесс формирования матриц может занять длительное время.
Процедура поиска нужного состояния будет эффективной и быстрой лишь в том случае, если состояния, входящие в базис, пронумерованы не беспорядочно, а в соответствии с определенной схемой. Например, состояниям, показанным на рис. 2.1, можно поставить в соответствие числа, каждый разряд которых будет отвечать количеству шаров в соответствующем ящике (рис. 2.4).
Рис. 2.4. Соответствие базисных состояний и чисел, упорядоченных по возрастанию
24
Видно, что числа, соответствующие состояниям базиса, упорядочены по возрастанию, поэтому организовать эффективную процедуру поиска нужного состояния в таком базисе не составит труда. Для этой цели подойдет, например, быстрый и простой в реализации метод деления отрезка пополам, хорошо известный из численных методов.
Далее при формировании базисов для конкретных моделей сильнокоррелированных систем будут рассмотрены методы построения уже сортированных массивов базисных функций.
В зависимости от конкретной задачи сортировку состояний можно осуществлять в соответствии с различными критериями. Как правило, при численном моделировании доступны эффективные встроенные процедуры поиска, однако иногда возникают ситуации, когда приходиться осуществлять сортировку "вручную", без использования встроенных функций. Далее в этой главе будут рассмотрены несколько основных типов сортировки.
1. Сортировка вставками.
При этом способе сортировки элементы неупорядоченного массива просматриваются по одному, и каждый следующий элемент вставляется в подходящее место среди ранее упорядоченных (рис. 2.5).
Рис. 2.5. Сортировка вставками.
Серым фоном показаны упорядоченные элементы
Временные затраты при сортировке вставками составляют порядка N2 операций, где N – число элементов в неупорядоченном массиве. Этот способ сортировки является неэкономным.
2. Сортировка выбором.
При этом способе сортировки сначала из неупорядоченного массива выбирается наименьший (или наибольший) элемент и каким-либо образом отделяется от
25
остальных, затем выбирается наименьший (наибольший) элемент из оставшихся и т.д. (рис. 2.6).
Этот способ сортировки, как и метод вставок, требует порядка N2 операций.
Рис. 2.6. Сортировка выбором. Серым фоном показаны упорядоченные элементы
3. Сортировка обменами.
При сортировке обменами два элемента меняются местами, если они расположены не по порядку (рис. 2.7), этот процесс повторяется до тех пор, пока не будут перебраны все возможные пары элементов.
Рис. 2.7. Сортировка обменами. Серым фоном показаны упорядоченные элементы.
Влевом столбце показаны номера элементов, которые сравниваются на текущем шаге
Временные затраты при этом способе сортировки составляют порядка N2 /2
операций, этот метод является более экономным по сравнению с предыдущими и часто используется в стандартных математических пакетах. Блок-схема алгоритма показана на рис. 2.8; в этом алгоритме, помимо сортировки элементов исходного массива key, создается также массив указателей ind на упорядоченные элементы массива key.
26
Представленные выше методы сортировки будут выполнять сортировку за разумное время при числе элементов порядка сотни. При большем количестве элементов время сортировки будет замедляться, и необходимы более эффективные методы.
Одним из вариантов ускорения алгоритмов сортировки является идея производить перемещения не между отдельными элементами, а сразу между блоками из нескольких десятков или сотен элементов.
Приведем один из вариантов такой оптимальной сортировки. Разделим весь неупорядоченный массив из N элементов на кластеры – блоки из k ≈ 3
N < N
элементов (при таком размере кластера скорость описанного ниже способа сортировки будет максимальной). Количество кластеров в полном массиве также
будет порядка k, причем в последнем кластере будет k′ < k элементов, где k′ – остаток от целочисленного деления N на k (рис. 2.9). Внутри каждого из кластеров проводится обычная сортировка (например, методом обменов), что займет порядка
k2 |
|
операций. |
|
k |
|
|
|
|
2 |
|
|
|
|
|
|
Рис. 2.8. Блок-схема алгоритма сортировки обменами
27
Рис. 2.9. Подготовка неупорядоченного массива для оптимальной сортировки:
1)исходный массив из 10 элементов;
2)массив разделен на блоки по 3 элемента, при этом в последнем блоке оказался 1 элемент;
3)внутри каждого блока проведена сортировка элементов
Далее просматриваем минимальные элементы в каждом кластере (так как все кластеры к этому моменту уже упорядочены, то минимальным элементом в каждом кластере будет первый элемент) и выбираем наименьший из них. Этот процесс займет порядка k операций. Выбранный элемент заносим в новый массив, в котором будут накапливаться упорядоченные элементы, и удаляем его из кластера, где он находился (рис. 2.10). При этом следует следить за числом элементов в каждом кластере и не рассматривать кластеры, из которых все элементы перешли в упорядоченный массив. Заполнение всего упорядоченного массива займет порядка
k2 операций, т.е. будет даже быстрее первоначальной сортировки, и в итоге весь алгоритм потребует порядка k3 ~ N3 / 2 операций.
Рис. 2.10. Оптимальная сортировка. На каждом шаге алгоритма выбирается минимальный элемент среди минимальных элементов каждого из блоков, этот элемент заносится в новый массив и убирается из исходного блока
Представленный метод не является самым оптимальным. Существуют подходы, доводящие время сортировки до ~ Nlog2 N операций.
28
Задачи
2.1.Реализовать алгоритмы сортировки одномерных массивов произвольных чисел:
1)методом выбора;
2)методом вставки;
3)методом обмена;
4)оптимизированным методом.
Провести сортировку 500, 1000, 2000, 4000, 8000, … чисел каждым из методов и построить на одном графике зависимость времени сортировки от количества элементов в массиве для каждого метода. С какого количества элементов оптимизированный метод становится более эффективным?
2.2. Имеется массив из N различных упорядоченных по возрастанию чисел. Реализовать программу поиска номера заданного элемента в массиве:
1)прямым перебором;
2)методом деления отрезка пополам.
Построить графики зависимости времени поиска от длины массива N для каждого из методов. Сравнить эффективность двух алгоритмов.
2.3. Имеется массив из N различных упорядоченных по возрастанию целых чисел. Построить и реализовать алгоритм поиска номера заданного элемента в массиве методом деления отрезка пополам, проводя поиск по разрядам.
29
3. Квантовые одночастичные задачи
Рассмотрим квантово-механическую задачу о движении частицы в потенциальном поле. Как уже отмечалось в разд. 1.1, квадрат
модуля волновой функции |
r |
2 |
для такой системы определяет |
ψ(r,t) |
|
плотность вероятности обнаружить частицу в момент времени t в точке пространства с радиусом-вектором rr . Временная эволюция функции ψ(rr,t) описывается нестационарным уравнением
Шредингера
ih |
∂ψ(rr,t) |
= − |
h2 |
ψ(rr,t) + U(rr,t)ψ(rr,t) , |
(3.1) |
|
∂t |
2m |
|||||
|
|
|
|
r
где m – масса частицы, U(r,t) – внешнее потенциальное поле.
Для независящего от времени потенциала решения уравнения (3.1) можно искать в виде
r |
r |
− iEt |
(3.2) |
ψ(r,t) = φ(r)e |
h . |
||
Частица, находящаяся в состоянии, описываемом волновой функцией (3.2), имеет конкретное значение энергии E. Подставив (3.2) в (3.1), получаем стационарное уравнение Шредингера:
|
h2 |
r |
|
|
r r |
r |
|
− |
|
φ(r) + U(r)φ(r) |
= Eφ(r) |
(3.3) |
|||
2m |
|||||||
или |
|
Hφ(rr) = Eφ(rr) , |
|
|
|||
|
|
|
(3.4) |
||||
где |
|
|
|
|
|
|
|
|
|
|
h |
2 |
r |
|
(3.5) |
|
H = − |
|
+ U(r) – |
||||
|
2m |
||||||
|
|
|
|
|
|
||
оператор энергии (гамильтониан) системы. |
|
||||||
Пусть оператор H |
имеет |
n |
|
собственных функций |
φn и n |
||
соответствующих им собственных значений энергии En . Число n может быть конечным или бесконечным; значения En могут быть
дискретными (дискретный спектр) или непрерывными (непрерывный спектр), некоторые значения En могут совпадать
30
