Дипломная работа: Численное решение уравнения Шредингера средствами Java
Традиционно для решении
задачи о нахождении собственных значений уравнения Шредингера используется
метод пристрелки. Идея метода пристрелки состоит в следующем. Допустим, в
качестве искомого значения ищется одно из связанных состояний, поэтому в
качестве пробного начального значения энергии выбираем отрицательное
собственное значение. Проинтегрируем уравнение Шредингера каким-либо известным
численным методом на интервале . По
ходу интегрирования от в сторону больших
значений сначала вычисляется
решение , экспоненциально
нарастающее в пределах классически запрещенной области. После перехода через
точку поворота , ограничивающую
слева область движения разрешенную классической механикой, решение уравнения
становится осциллирующим. Если продолжить интегрирование далее за правую точку
поворота , то решение становится
численно неустойчивым. Это обусловлено тем, что даже при точном выборе
собственного значения, для которого выполняется условие , решение в области всегда может содержать
некоторую примесь экспоненциально растущего решения, не имеющего физического
содержания. Отмеченное обстоятельство является общим правилом: интегрирование
по направлению вовнутрь области, запрещенной классической механикой, будет
неточным. Следовательно, для каждого значения энергии более разумно вычислить
еще одно решение , интегрируя
уравнение (3.1) от в сторону
уменьшения . Критерием совпадения данного значения
энергии является совпадение значений функций и
в некоторой промежуточной
точке . Обычно в качестве данной
точки выбирают левую точку поворота . Так
как функции , являются решениями
однородного уравнения (3.1), их всегда можно нормировать так, чтобы в точке выполнялось условие . Помимо совпадения
значений функций в точке для
обеспечения гладкости сшивки решений потребуем совпадения значений их
производных 
(3.5)
Используя в (17)
простейшие левую и правую конечно-разностные аппроксимации производных функций , в точке , находим эквивалентное
условие гладкости сшивки решений:
(3.6)
Число является масштабирующим
множителем, который выбирается из условия Если
точки поворота отсутствуют, т.е. E>0, то в качестве можно выбрать любую
точку отрезка . Для
потенциалов, имеющих более двух точек поворота и, соответственно, три или более
однородных решений, общее решение получается сшивкой отдельных кусков. В
описанном ниже документе, для интегрирования дифференциального уравнения
второго порядка мы используем метод Нумерова. Для получения вычислительной
схемы аппроксимируем вторую производную трехточечной разностной формулой:
(3.7)
Из уравнения (3.1) имеем
(3.8)
Подставив (3.7) в (3.8) и
перегруппировав члены, получаем
(3.9)
Разрешив (3.9)
относительно или , найдем рекуррентные
формулы для интегрирования уравнения (3.1) вперед или назад по c локальной погрешностью . Отметим, что погрешность
данного метода оказывается на порядок выше, чем погрешность метода Рунге-Кутта
четвертого порядка. Кроме того данный алгоритм более эффективен, потому что
значение функции вычисляются
только в узлах сетки. Для нахождения численного решения оказывается удобным
провести обезразмеривание уравнения (3.1), используя в качестве единиц
измерения расстояния - ширину
потенциальной ямы, в качестве единиц измерения энергии - модуль минимального
значения потенциала . В выбранных
единицах измерения уравнение (3.1) имеет вид
(3.10)
где
(3.11)
Таким образом,
вычислительный алгоритм для нахождения собственных функций и собственных
значений уравнения Шредингера реализуется следующей последовательностью
действий:
1. Задать выражение, описывающее безразмерный потенциал .
2. Задать значение .
3. Задать пространственную сетку, на которой проводится
интегрирование уравнения (3.1).
4. Задать , .
5. Задать начальное
значение энергии .
6. Задать конечное
значение энергии .
7. Задать шаг изменения
энергии .
8. Проинтегрировать
уравнение (3.1) для значения энергии слева
направо на отрезке .
9. Проинтегрировать
уравнение (3.1) для значения энергии справа
налево на отрезке .
10. Вычислить значения
переменной для значения энергии .
11. Увеличить текущее
значение энергии на : .
12. Проинтегрировать
уравнение (3.1) для значения энергии слева
направо на отрезке .
13. Проинтегрировать
уравнение (3.1) для значения энергии справа
налево на отрезке .
14. Вычислить значения
переменной для значения энергии .
15. Сравнить знаки , 
16. Если и , увеличить текущее
значение энергии на и повторить
действия, описанные в пп. 8-17.
17. Если , уточнить методом линейной
интерполяции.
18. Если , повторить действия,
описанные в пп. 8-18.
19. Если , закончить вычисления.[5]
4. Программная реализация
численных методов средствами Java
4.1 Обзор языка
программирования Java
Java связан с C++, который является
прямым потомком С. Многое в характере Java унаследовано от этих двух языков. От С Java получил его синтаксис. На многие из
объектно-ориентированных свойств Java повлиял
C++. Некоторые из определяющих характеристик Java происходят от его предшественников. Кроме того,
создание Java глубоко внедрилось в процессы
усовершенствования и адаптации, которые проявились в языках машинного
программирования в течение последних трех десятилетий. Каждое новшество в
проекте языка управлялось потребностью решить фундаментальную проблему, с
которой не справились предшествующие языки. Java не является исключением.
Страницы: 1, 2, 3, 4, 5, 6, 7 |