Численный метод решения уравнения шредингера

Дипломная работа: Численное решение уравнения Шредингера средствами Java

Численное решение уравнения Шредингера средствами Java

1. Уравнение Шредингера и физический смысл его решений

1.1 Волновое уравнение Шредингера

1.2 Волновые функции в импульсном представлении

2. Методы численного решения нестационарного уравнения Шредингера

2.1 Метод конечных разностей для одномерного нестационарного уравнения Шредингера

2.2 Преобразование Фурье

2.3 Метод аппроксимации оператора эволюции (split-operatormethod)

3. Методы численного решения стационарного уравнения Шредингера

3.1 Метод Нумерова

4. Программная реализация численных методов средствами Java

4.1 Обзор языка программирования Java

4.2 Элементы программирования Java 2 используемые в работе

Список использованных источников

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

В большинстве учебных пособий по квантовой механике изложение материала основано, как правило, на анализе решений стационарного уравнений Шредингера. Однако стационарный подход не позволяет непосредственно сопоставить результаты решения квантовомеханической задачи с аналогичными классическими результатами. К тому же многие процессы, изучаемые в курсе квантовой механики (как, например, прохождение частицы через потенциальный барьер, распад квазистационарного состояния и др.) носят в принципе нестационарный характер и, следовательно, могут быть поняты в полном объеме лишь на основе решений нестационарного уравнения Шредингера. Поскольку число аналитически решаемых задач невелико, использование компьютера в процессе изучения квантовой механики является особенно актуальным.

1. Уравнение Шредингера и физический смысл его решений

1.1 Волновое уравнение Шредингера

Одним из основных уравнений квантовой механики является уравнение Шредингера, определяющее изменение состояний квантовых систем с течением времени. Оно записывается в виде

(1.1)

где Н — оператор Гамильтона системы, совпадающий с оператором энергии, если он не зависит от времени. Вид оператора определяется свойствами системы. Для нерелятивистского движения частицы массы в потенциальном поле U(r) оператор действителен и представляется суммой операторов кинетической и потенциальной энергии частицы

(1.2)

Если частица движется в электромагнитном поле, то оператор Гамильтона будет комплексным.

Хотя уравнение (1.1) является уравнением первого порядка по времени, вследствие наличия мнимой единицы оно имеет и периодические решения. Поэтому уравнение Шредингера (1.1) часто называют волновым уравнением Шредингера, а его решение называют волновой функцией, зависящей от времени. Уравнение (1.1) при известном виде оператора Н позволяет определить значение волновой функции в любой последующий момент времени, если известно это значение в начальный момент времени. Таким образом, волновое уравнение Шредингера выражает принцип причинности в квантовой механике.

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

H,(1.3)

то переход к классическому уравнению Гамильтона—Якоби для функции действия S

H

можно получить из (1.3) формальным преобразованием

,

Таким же образом уравнение (1.1) получается из (1.3) при переходе от (1.3) к операторному уравнению путем формального преобразования

, (1.4)

если (1.3) не содержит произведений координат и импульсов, либо содержит такие их произведения, которые после перехода к операторам (1.4) коммутируют между собой. Приравнивая после этого преобразования результаты действия на функцию операторов правой и левой частей полученного операторного равенства, приходим к волновому уравнению (1.1). Не следует, однако, принимать эти формальные преобразования как вывод уравнения Шредингера. Уравнение Шредингера является обобщением опытных данных. Оно не выводится в квантовой механике, так же как не выводятся уравнения Максвелла в электродинамике, принцип наименьшего действия (или уравнения Ньютона) в классической механике.

Легко убедиться, что уравнение (1.1) удовлетворяется при волновой функцией

,

описывающей свободное движение частицы с определенным значением импульса. В общем случае справедливость уравнения (1.1) доказывается согласием с опытом всех выводов, полученных с помощью этого уравнения.

Покажем, что из уравнения (1.1) следует важное равенство

,(1.5)

указывающее на сохранение нормировки волновой функции с течением времени. Умножим слева (1.1) на функцию *, a уравнение, комплексно сопряженное к (1.1), на функцию и вычтем из первого полученного уравнения второе; тогда находим

,(1.6)

Интегрируя это соотношение по всем значениям переменных и учитывая самосопряженность оператора , получаем (1.5).

Если в соотношение (1.6) подставить явное выражение оператора Гамильтона (1.2) для движения частицы в потенциальном поле, то приходим к дифференциальному уравнению (уравнение непрерывности)

, (1.7)

где является плотностью вероятности, а вектор

(1.8)

можно назвать вектором плотности тока вероятности.

Комплексную волновую функцию всегда можно представить в виде

где и — действительные функции времени и координат. Таким образом, плотность вероятности

,

а плотность тока вероятности

.(1.9)

Из (1.9) следует, что j = 0 для всех функций , у которых функция Ф не зависит от координат. В частности, j= 0 для всех действительных функций .

Решения уравнения Шредингера (1.1) в общем случае изображаются комплексными функциями. Использование комплексных функций весьма удобно, хотя и не необходимо. Вместо одной комплексной функции состояние системы можно описать двумя вещественными функциями и , удовлетворяющими двум связанным уравнениям. Например, если оператор Н — вещественный, то, подставив в (1.1) функцию и отделив вещественную и мнимую части, получим систему двух уравнений

, ,

при этом плотность вероятности и плотность тока вероятности примут вид

, . [1]

1.2 Волновые функции в импульсном представлении.

Фурье-образ волновой функции характеризует распределение импульсов в квантовом состоянии . Требуется вывести интегральное уравнение для с Фурье-образом потенциала в качестве ядра.

Решение. Между функциями и имеются два взаимно обратных соотношения.

(2.1)

(2.2)

Если соотношение (2.1) использовать в качестве определения и применить к нему операцию , то с учетом определения 3-мерной -функции,

,

в результате, как нетрудно убедиться, получится обратное соотношение (2.2). Аналогичные соображения использованы ниже при выводе соотношения (2.8).

,(2.3)

тогда для Фурье-образа потенциала будем иметь

(2.4)

Предполагая, что волновая функция удовлетворяет уравнению Шредингера

(2.5)

Подставляя сюда вместо и соответственно выражения (2.1) и (2.3), получаем

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

.(2.6)

Это и есть искомое интегральное уравнение с Фурье-образом потенциала в качестве ядра. Конечно, интегральное уравнение (2.6) можно получить только при условии, что Фурье-образ потенциала (2.4) существует; для этого, например, потенциал должен убывать на больших расстояниях по меньшей мере как , где .

Необходимо отметить, что из условия нормировки

(2.7)

.(2.8)

Это можно показать, подставив в (2.7) выражение (2.1) для функции :

.

Если здесь сначала выполнить интегрирование по , то мы без труда получим соотношение (2.8).[2]

2. Методы численного решения нестационарного уравнения Шредингера

2.1 Метод конечных разностей для одномерного нестационарного уравнения Шредингера

В большинстве учебных пособий по квантовой механике изложение материала основано, как правило, на анализе решений стационарного уравнений Шредингера. Однако стационарный подход не позволяет непосредственно сопоставить результаты решения квантовомеханической задачи с аналогичными классическими результатами. К тому же многие процессы, изучаемые в курсе квантовой механики (как, например, прохождение частицы через потенциальный барьер, распад квазистационарного состояния и др.) носят в принципе нестационарный характер и, следовательно, могут быть поняты в полном объеме лишь на основе решений нестационарного уравнения Шредингера. Поскольку число аналитически решаемых задач невелико, использование компьютера в процессе изучения квантовой механики является особенно актуальным.

Нестационарное уравнение Шредингера, определяющее эволюцию волновой функции во времени, представляет собой дифференциальное уравнение первого порядка по времени и имеет следующий вид

(3.1)

где оператор полной энергии системы. Для одномерного случая

Общее решение уравнения (1) формально можно записать в виде

(3.2)

где — волновая функция системы в момент времени

— оператор эволюции (пропагатор).

Особенностью выражения (3.2) является то, что в показателе экспоненты стоит оператор. Определить действие оператора эволюции на волновую функцию можно, например, разложив ее по собственным функциям оператора . Так, в случае дискретного спектра выражение для волновой функции в произвольный момент времени имеет вид

(3.3)

Аналогичное выражение может быть получено и для непрерывного спектра.

Разложение (3.3) удобно использовать в тех случаях, когда решения стационарного уравнения Шредингера для конкретной задачи являются известными. Но к сожалению круг таких задач очень ограничен. Большинство современных численных методов решения уравнения (3.1) основаны на использовании различных аппроксимаций оператора эволюции . Так, например, разложение оператора эволюции в ряд Тейлора с сохранением первых двух членов дает следующую схему

,(3.4)

здесь номер шага по времени. Существенным недостатком этого алгоритма является необходимость знать волновую функцию в моменты и . Кроме того, для оценки действия оператора на функцию нужно вычислять вторую производную по координате. Простейшая конечно-разностная аппроксимация второй производной

(3.5)

дает неудовлетворительный результат. (См. программный блок 1)[3]

2.2 Преобразование Фурье

Начнем с комплексного ряда Фурье

Рассмотрим случай L.Тогда сумму можно преобразовать в интеграл следующим образом: определим и =g(y).Так как возрастает каждый раз на единицу ,то

где .

Таким образом, полученные выше формулы приобретают вид

(4.1)

Величина называется преобразованием Фурье от и наоборот. Положение множителя довольно произвольно; часто величины и определяют более симметрично:

(4.2)

Выражения (4.1) или (4.2) можно скомбинировать следующим образом:

(4.3)

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

Обычно определяют (Дирака) следующим образом:

(4.4)

Из этих уравнений следует, что

(4.5)

для любой функции , в случае если интервал интегрирования включает точку .

Проделанные выше операции над интегралами Фурье показали, что

(4.6)

Это интегральное представление функции.

Дельта – функцию можно использовать, чтобы выразить важный интеграл через преобразование Фурье (4.1) от :

(4.7)

Это равенство называется теоремой Парсеваля. Она полезна для понимания физической интерпретации преобразования Фурье для , если известен физический смысл .

Предположим, что четная функция. Тогда

Заметим теперь, что — также четная функция. Поэтому

(4.9)

Функция и ,определенные теперь только для положительных и , называются косинус — преобразованиями Фурье по отношению друг к другу.

Рассматривая преобразования Фурье нечетной функции, получаем аналогичные соотношения Фурье между синус — преобразованиями Фурье:

(4.10)

Если нужно, можно симметризовать выражения, поставив множитель перед каждым интегралом (4.7)-(4.10). [4]

2.3 Метод аппроксимации оператора эволюции (split-operator method)

Рассмотрим более подробно другой метод аппроксимации оператора эволюции, в котором отсутствуют недостатки, свойственные рассмотренной выше схеме. Здесь оператор эволюции аппроксимируется симметричным расщеплением оператора кинетической энергии (split-operator method)

(5.1)

Основная погрешность данной аппроксимации связана с некоммутативностью операторов кинетической и потенциальной энергии. Вычисление действия такого оператора на волновую функцию включает следующие шаги. Преобразованная в импульсное представление волновая функция умножается на и преобразуется обратно в координатное представление, где умножается на . Полученный результат снова преобразуется в импульсное представление, умножается на преобразуется обратно в координатное представление. На этом один шаг по времени завершается. Переход от одного представления к

другому осуществляется посредством преобразования Фурье.

В данной курсовой работе используется Гауссов волновой пакет вида , а также ступенчатый потенциал. Сначала преобразуем нашу волновую функцию из координатного представления в импульсное

,(5.2)

затем умножим полученный результат на . На этом завершается половина временного шага. Полученный результат снова преобразуется в координатное представление

(5.3)

и умножается на . После чего вновь преобразуется в импульсное представление

(5.4)

и умножается на . Завершается шаг по времени еще одним преобразованием полученной волновой функции в координатное представление

.(5.5)

Один шаг по времени завершен.

В данной работе этот метод реализован в среде Java, ниже приведены программный блок и полученные графики поведения волновой функции в различные моменты времени.

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

С методической точки зрения ценность нестационарного подхода состоит в существенно большей наглядности и информативности результатов, по сравнению с результатами решения стационарного уравнения Шредингера. Круг задач, которые могут быть рассмотрены на основе решения нестационарного уравнения Шредингера очень разнообразен.

Для иллюстрации вышесказанного рассмотрим задачу о движении частицы в поле потенциального барьера. Хотя стационарный подход позволяет определить коэффициенты прохождения и отражения частицы он, однако, не позволяет рассмотреть реальную пространственно-временную картину движения частицы через потенциальный барьер, которая является существенно нестационарной. Рассмотрение задачи на основе решения нестационарного уравнения Шредингера позволяет не только сопоставить классический и квантовый подход к проблеме, но и получить ответы на ряд вопросов, представляющих значительный практический интерес (например, длительность процесса туннелирования, скорости прошедших и отраженных частиц и т.д.). Ниже мы приводим результаты решения нестационарного уравнения Шредингера для данной задачи. Начальное состояние частицы задано в виде пакета гауссовой формы, движущегося в направлении области действия потенциала. На графиках представлена временная картина туннелирования такого пакета через потенциальный барьер прямоугольной формы в виде «мгновенных снимков» волнового пакета в разные моменты времени. Как видно, при попадании пакета в область действия потенциала его форма нарушается в результате формирования отраженного волнового пакета и его интерференции с падающим на препятствие пакетом. Через некоторое время формируются два пакета: отраженный и прошедший через препятствие. Движение падающего и отраженного пакета можно сопоставить с движение классической частицы, положение которой совпадает с максимумом в распределении вероятности. В случае протяженного потенциала отраженный пакет «отстает» от отраженной от барьера классической частицы. Физически это связано с тем, что пакет частично проникает в классически запрещенную область, в то время как в классике отражение происходит строго в точке скачка потенциала. Образование же прошедшего пакета представляет собой сугубо квантовый эффект не имеющий классических аналогий.[3]

3. Методы численного решения стационарного уравнения Шредингера

3.1 Метод Нумерова

Рассмотрим решения одномерного стационарного уравнения Шредингера (3.1) частицы, движущейся в одномерном потенциале U(x).

(3.1)

Будем при этом полагать, что его форма имеет потенциала, представленного на рис.1: в точках xmin , xmax потенциал становится бесконечно большим. Это означает, что в точках xmin , xmax расположены вертикальные стенки, а между ними находится яма конечной глубины.

Для удобства дальнейшего решения запишем уравнение Шредингера (3.1) в виде:

(3.2)

(3.3)

С математической точки зрения задача состоит в отыскании собственных функций оператора, отвечающим граничным условиям

(3.4)

и соответствующих собственных значений энергии E.

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

Традиционно для решении задачи о нахождении собственных значений уравнения Шредингера используется метод пристрелки. Идея метода пристрелки состоит в следующем. Допустим, в качестве искомого значения ищется одно из связанных состояний, поэтому в качестве пробного начального значения энергии выбираем отрицательное собственное значение. Проинтегрируем уравнение Шредингера каким-либо известным численным методом на интервале . По ходу интегрирования от в сторону больших значений сначала вычисляется решение , экспоненциально нарастающее в пределах классически запрещенной области. После перехода через точку поворота , ограничивающую слева область движения разрешенную классической механикой, решение уравнения становится осциллирующим. Если продолжить интегрирование далее за правую точку поворота , то решение становится численно неустойчивым. Это обусловлено тем, что даже при точном выборе собственного значения, для которого выполняется условие , решение в области всегда может содержать некоторую примесь экспоненциально растущего решения, не имеющего физического содержания. Отмеченное обстоятельство является общим правилом: интегрирование по направлению вовнутрь области, запрещенной классической механикой, будет неточным. Следовательно, для каждого значения энергии более разумно вычислить еще одно решение , интегрируя уравнение (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 не является исключением.

Internet помог катапультировать Java на передний край программирования, aJava, в свою очередь, имел глубокое влияние на Internet. Этому есть простое объяснение: Java разворачивает вселенную объектов, которые могут свободно перемещаться в киберпространстве. В сети две очень широких категории объектов передаются между сервером и вашим персональным компьютером — пассивная информация и динамические, активные программы. Например, когда вы читаете вашу электронную почту, то рассматриваете пассивные данные. Даже, когда вы загружаете программу, ее код — это все еще только пассивные данные до тех пор, пока вы их не начнете выполнять. Однако на ваш компьютер может быть передан объект второго типа — динамическая, самовыполняющаяся программа. Такая программа — активный агент на компьютере клиента, все же инициализируется сервером. Например, сервер мог бы предоставить (клиенту) программу, чтобы должным образом отображать данные, посылаемые клиенту.

С толь же желательными, как и динамические, являются сетевые программы. Они также порождают серьезные проблемы в области защиты и мобильности. До. Java, киберпространство было эффективно закрыто для половины объектов, которые теперь живут там. Кроме того, Java имеет дело с захватывающе новой формой программ — апплетами.

Java можно использовать, чтобы создать два типа программ — приложения и апплеты. Приложение — это программа, которая выполняется на вашем компьютере с помощью его операционной системы. То есть, приложение, с озданное с помощью Java, более или менее подобно приложению, созданному с использованием С или C++. При создании приложения Java не намного отличается от любого другого машинного языка. Более важной является способность Java создавать апплеты. Апплет — это приложение, разработанное для передачи по Internet и выполняемое совместимым с JavaWeb-браузером. Апплет — это, фактически, крошечная программа Java, динамически загружаемая через сеть, подобная изображению, звуковому файлу, или видеоклипу. Важное отличие заключается в том, что апплет является интеллектуальной программой, а не просто мультипликацией (анимацией) или media-файлом. Другими словами, апплет — это программа, которая может реагировать на ввод пользователя и динамически изменять, а не просто выполнять ту же самую мультипликацию или звук много раз.

Многоплатформная среда Web предъявляет экстраординарные требования к программе, потому что та должна выполниться надежно в самых разнообразных системах. Поэтому способности создавать устойчивые программы был дан высокий приоритет в проекте Java. Чтобы обеспечить надежность, Java ограничивает вас в нескольких ключевых областях, вынуждая рано находить ошибки при разработке программы. В то же самое время, Java освобождает от необходимости волноваться относительно многих из наиболее общих причин ошибок программирования. Поскольку Java — язык со строгой типизацией, он проверяет ваш код во время компиляции. Однако он также проверяет ваш код и во время выполнения. В действительности, множество трудно прослеживаемых ошибок, которые часто обнаруживаются в трудно воспроизводимых ситуациях во временя выполнения, просто невозможно создать в Java. Знание того, что программа, которую вы написали, будет вести себя предсказуемым образом при разных условиях, является ключевым свойством Java.

Чтобы лучше понимать, насколько устойчив Java, рассмотрим две из главных причин отказа программы: ошибки управления памятью и неуправляемые исключительные состояния (т. е. ошибки во время выполнения). Управление памятью может быть трудной и утомительной задачей в традиционных средах программирования. Например, на C/C++ программист должен вручную распределять и освобождать всю динамическую память. Это иногда ведет к проблемам, потому что программисты или забывают освобождать память, которая была предварительно распределена, или, хуже, пытаются освободить некоторую память, которую другая часть их кода все еще использует. Java фактически устраняет эти проблемы, управляя распределением и освобождением памяти. (Фактически, освобождение полностью автоматическое, потому что Java обеспечивает сборку «мусора» для неиспользованных объектов.) Исключительные состояния в традиционных средах часто возникают в ситуациях типа деления на нуль или «файл, не найден», и они должны управляться неуклюжими и трудно читаемыми конструкциями. Java помогает и в этой области, обеспечивая объектно-ориентированную обработку особых ситуаций. В хорошо написанной Java-программе все ошибки времени выполнения могут — и должны — управляться вашей программой.

Java был спроектирован так, чтобы выполнить реальное требование — создавать интерактивные сетевые программы. Чтобы выполнить это, Java поддерживает многопоточное программирование, которое позволяет вам писать программы, выполняющие одновременно несколько операций. Исполняющая система Java подходит с изящным и все же искушенным решением к синхронизации мультипроцесса, что дает возможность создавать гладко работающие интерактивные системы. Удобный в работе подход Java к многопоточности позволяет вам поразмыслить над спецификой поведения вашей программы, а не заботиться о многозадачной подсистеме.

Программы Java несут в себе существенное количество информации времени выполнения, которая используется, чтобы проверять и разрешать доступ к объектам в период работы программы. Это дает возможность динамически связывать код в безопасной и целесообразной манере, и имеет решающее значение для устойчивости среды апплета, в которой маленькие фрагменты байт-кода могут динамически обновляться исполнительной системой.

Все компьютерные программы состоят из двух элементов: кода и данных. Любая программа может быть концептуально организована либо вокруг ее кода, либо вокруг ее данных. Иначе говоря, некоторые программы концентрируют свою запись вокруг того, «что делается с данными» 1 , а другие — вокруг того, «на что этот процесс влияет» 2 . Существуют две парадигмы (основополагающих подхода), которые управляют конструированием программ. Первый подход называет программу моделью, которая ориентирована на процесс (process-orientedmodel). При этом подходе программу определяют последовательности операторов ее кода. Модель, ориентированную на процесс, можно представлять как кодовое воздействие на данные (codeactingondata). Процедурные языки, такие как С, успешно эксплуатируют такую модель. Однако, при этом подходе возникают проблемы, когда возрастает размер и сложность программ. Второй подход, названный объектно-ориентированным программированием, был задуман для управления возрастающей сложностью программ. Объектно-ориентированное программирование организует программу вокруг своих данных (т. е. вокруг объектов) и набора хорошо определенных интерфейсов (взаимодействий) с этими данными. Объектно-ориентированную программу можно характеризовать как управляемый данными доступ к коду (datacontrollingaccesstocode). Как вы увидите далее, переключая управление на данные, можно получить некоторые организационные преимущества. Опыт показывает, что отсутствие стандартных базовых библиотек для языка С++ чрезвычайно затрудняет работу с ним. В силу того, что любое нетривиальное приложение требует наличия некоторого набора базовых классов, разработчикам приходится пользоваться различными несовместимыми между собой библиотеками или писать свой собственный вариант такого набора. Все это затрудняет как разработку, так и дальнейшую поддержку приложений, затрудняет стыковку приложений, написанных разными людьми. Полная система Java включает в себя готовый набор библиотек, который можно разбить на следующие пакеты:

· java.lang — базовый набор типов, отраженных в самом языке. Этот пакет обязательно входит в состав любого приложения. Содержит описания классов Object и Class, а также поддержку многопотоковости, исключительных ситуаций, оболочку для базовых типов, а также некоторые фундаментальные классы.

· java.io — потоки и файлы произвольного доступа. Аналог библиотеки стандартного ввода-вывода системы UNIX. Поддержка сетевого доступа (sockets, telnet, URL) содержится в пакете java.net.

· java.util — классы-контейнеры (Dictionary, HashTable, Stack) и некоторые другие утилиты. Кодирование и декодирование. Классы Date и Time.

· java.awt — Abstract Windowing Toolkit, архитектурно-независимый оконный интерфейс, позволяющий запускать интерактивные оконные Java-приложения на любой платформе. Содержит базовые компоненты интерфейса, такие как события, цвета, фонты, а также основные оконные элементы — кнопки, scrollbars и т.д.. [6]

4.2 Элементы программирования Java 2 используемые в работе

При реализации метода аппроксимации оператора эволюции средствами языка программирования Java 2, использовались основные элементы объектно-ориентированного программирования, позволяющие разбить программу на более мелкие структурные части, для дальнейшего совершенствования и настраивания ее под различные физические задачи. Использование технологии AWT позволило создать графический интерфейс, наиболее удобный и понятный различному кругу пользователей. В данной работе использовался модуль JSci.math предназначенный для проведения вычислений в специализированных физических и математических задачах. В качестве среды разработки данного программно приложения использовался Eclipse 3.2.

Анимированный апплет позволяет получить наглядное решение нестационарного уравнения Шредингера в различные моменты времени с различными потенциалами. Также выполненный апплет может быть размещен на Internet-сервере и являться частью jsp-странички, что позволит использовать результаты его вычислений различным пользователям сети Internet, используя Internet-браузер для просмотра данной странички.

Численное решение нелинейного уравнения Шредингера в радиально-симметричном случае Текст научной статьи по специальности « Физика»

Аннотация научной статьи по физике, автор научной работы — Дегтярев А. А., Деркач А. Е.

Для решения уравнения Шредингера, описывающего распространение электромагнитной волны в нелинейной среде, используется консервативная разностная схема с итерационным уточнением, которая имеет квадратичный порядок точности по направлению распространения волны и близкий к квадратичному по радиальной переменной. Результаты, полученные с помощью вычислительных экспериментов, полностью подтверждают теоретические исследования. Важной особенностью данного метода является возможность моделирования процесса распространения волны на расстояние порядка десятков метров в нелинейной среде.

Похожие темы научных работ по физике , автор научной работы — Дегтярев А. А., Деркач А. Е.

Текст научной работы на тему «Численное решение нелинейного уравнения Шредингера в радиально-симметричном случае»

ЧИСЛЕННОЕ РЕШЕНИЕ НЕЛИНЕЙНОГО УРАВНЕНИЯ ШРЕДИНГЕРА В РАДИАЛЬНО-СИММЕТРИЧНОМ СЛУЧАЕ

А.А. Дегтярев, А.Е Деркач.

Самарский государственный аэрокосмический университет

Для решения уравнения Шредингера, описывающего распространение электромагнитной волны в нелинейной среде, используется консервативная разностная схема с итерационным уточнением, которая имеет квадратичный порядок точности по направлению распространения волны и близкий к квадратичному по радиальной переменной. Результаты, полученные с помощью вычислительных экспериментов, полностью подтверждают теоретические исследования. Важной особенностью данного метода является возможность моделирования процесса распространения волны на расстояние порядка десятков метров в нелинейной среде.

Как известно [1], нелинейное уравнение Шредингера является частным случаем волнового уравнения в параболическом приближении и с учетом эффекта самовоздействия. Эффект самовоздействия проявляется при распространении оптического излучения в средах с кубичной нелинейностью (поляризация пропорциональна напряженности электрического поля в третьей степени).

С учетом этого эффекта уравнение Шредингера в радиально-симметричном случае запишется как [2]

dz Ikn, 0 Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

2.1. Результаты экспериментальных исследований линейного уравнения

Пучок, описываемый формулой (6), является стационарным, так как и (г,= и (г,0)2, то есть распределение интенсивности в плоскости ОХУ не зависит от расстояния г. Это распределение изображено на рис. 1.

Рис. 1. Распределение интенсивности волны в линейной среде.

На рис. 2-3 приведены результаты численного решения линейного уравнения Шредингера на различных расстояниях от входа в среду.1

В расчетах были использованы следующие значения параметров: Я=50 мкм;

Х=0,63 мкм, причем Х=2л/к; П0=1.

Рис. 2. Распределение интенсивности волны на расстоянии Ь от входа в среду (Ь = 1м, пг = 1000, пг = 100).

Рис.3. Распределение интенсивности волны на расстоянии Ь от входа в среду (Ь = 10м, пг = 1000, пг = 100).

Как видно из приведенных графиков результат численного решения уравнения Шредингера полностью совпадает с результатом аналитического решения. Это подтверждает правильность выбора консервативной разностной схемы (5) для вычислительных экспериментов с уравнением Шредингера.

3.2. Численное решение нелинейного уравнения Шредингера

На рис.4-6 приведены результаты численного решения нелинейного уравнения Шредингера со

Х=0,63 мкм, причем Х=2л/к;

В дальнейшем использованы следующие обозначения: пг — количество интервалов разбиений по радиусу; пг — количество интервалов разбиений по оси 2. Белым цветом изображается график решения линейного уравнения (3), а серым цветом — график численного решения уравнения Шредингера (1)-(2).

пнл 2=0,001, причем пнл >0.

В работе [1] показано, что при пнл >0 происхо-пучка на расстоянии

от входа в нелинейную среду.

Самодефокусировка пучка На рис. 7-10 приведены результаты численного решения нелинейного уравнения Шредингера со следующими параметрами: R = 50 мкм;

X = 0,63 мкм, причем X=2n/k; п0=1;

пнл 2=0,001, причем пнл Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3.1. Результаты численного решения линейного уравнения Шредингера

Для вычислительных экспериментов выберем, например, моду Гаусса-Лагерра с номером s=10 Тогда из (18) и (14) получаем, что

Для того чтобы обеспечить выполнение граничного условия, выберем аргумент многочлена Лагерра, равный десятому нулю функции.

После подстановки (11) и (10) в (8) получаем

д2 X 4r dX 1 dX +

0 X = 0 Надоели баннеры? Вы всегда можете отключить рекламу.

Гидродинамика Шрёдингера на пальцах

В этой статье в качестве эксперимента я постараюсь максимально доступно рассказать, как работает новый метод расчёта гидродинамики, основанный на решении уравнения Шрёдингера.

Всем привет. В этой статье я хотел бы рассказать о новом методе расчёта гидродинамики, основанном на решении уравнения Шрёдингера вместо уравнений, типично используемых для гидродинамики вроде Навье-Стокса. Сам метод очень подробно и полно раскрыт в диссертации Albert Chern’а, названной «Fluid Dynamics with Incompressible Schrödinger Flow». Однако, статья Chern’а кому-то может показаться написанной на не самом доступном языке, поэтому своей статьёй я бы хотел в первую очередь если не объяснить в деталях, как работает этот метод, то хотя бы объяснить, какими интересными свойствами он обладает, и что же именно скрывается за его математикой. Попутно я кратко расскажу о том, как устроены классические методы расчёта гидродинаимики и как новый подход от них отличается. В качестве эксперимента я бы хотел попробовать написать статью так, чтобы каждый, кто отдалённо интересуется программированием физики, нашёл в ней что-то интересное, понятное, и новое для себя — от начинающего программиста до бывалых расчётчиков.

Вступление

Почему это важно? В первую очередь потому, что это обозначает глубинное родство квантовомеханических и гидродинамических систем. В диссертации того паренька больше сотни страниц уделено тому, как это вообще так получилось. С участием явления сверхтекучести, которая является загадочным связующим звеном, так как проявляет очевидные свойства идеальной жидкости, являющиеся исключительно следствием квантовой механики. Я же в этой статье далее я рассмотрю только некоторые из параллелей, которые из этого, простите, вытекают.

Следующее очень важное следствие эквивалентности уравнения Шрёдингера и Навье-Стокса — это что решение одного из них эквивалентно решению другого. Так вот уравнение Навье-Стокса — нелиненое, его очень неудобно и неэффективно в общем случае решать, в то время как уравнение Шрёдингера — линеное и его решать гораздо проще. Чтобы составить представление, насколько же неудобным по сей день считается уравнение Навье-Стокса, могу сообщить, что существует целый международный фонд грантов для исследователей, которым хоть какую-то базу под них подстроит, так как(цитата):

Even basic properties of the solutions to Navier–Stokes have never been proven.

Уравнение Шрёдингера же, хоть и описывает мутную квантовую физику, поддаётся решению гораздо легче и эффективнее. Короче, я могу очень долго гудеть про то, как это невероятно и офигенно, но давайте уже перейдём к чему-то более конкретному.

Решение классической гидродинамики на пальцах

Что вообще такое — уравнение гидродинамики? Что такое уравнение Навье-Стокса и как его понять? С ответом на этот вопрос гораздо лучше меня справились миллионы авторов статей по этому делу, например, классическая статья от нвидии, по которой многие начинали: https://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch38.html Однако, я попробую написать очень сжато и на пальцах, что это всё значит и что с этим обычно делают.
Уравнение Навье-Стокса описывает закон, которому обязана подчиняться скорость каждой точки пространства, заполненного равномерной несжимаемой жидкостью. Представьте себе, например, бассейн с водой, в котором выделили некоторый куб, достаточно далеко от стенок, поверхности и дна, в котором нет ничего кроме воды. Вода в нём может как угодно течь, но не может ни образовывать пузырей, ни с чем-то сталкиваться (мы для простоты опустим эти эффекты). Тогда само уравнение Навье-Стокса описывает закон, которому будет подчиняться скорость каждой точки воды в этом кубе:

\(\frac<\partial \vec u><\partial t>=-(\vec u \cdot \vec \nabla)\vec u-\frac<1><\rho>\vec \nabla p + \nu <\vec \nabla>^2 \vec u + \vec F\)
\(\vec \nabla \vec u = 0\)

прежде чем вообще смотреть на это уравнение, предлагаю сразу из него выбросить ненужное — то, что нам всё равно не пригодится для понимания и только место занимает. Это член, отвечающий за диффузию \(\nu <\vec \nabla>^2 \vec u\) (у идеальной жидкости один фиг диффузии нет), и за внешнюю силу \(\vec F\) (так как мы обойдёмся без неё). Остаётся система:
\(\frac<\partial \vec u><\partial t>=-(\vec u \cdot \vec \nabla)\vec u-\frac<1><\rho>\vec \nabla p\)
\(\vec \nabla \vec u = 0\)
Здесь перевёрнутый треугольник называется оператором Набла, который обозначает дифференцирование. Причём смысл этого оператора меняется в зависимости от того, где именно он стоит (например, перед вектором или скаляром). Я постараюсь объяснить смысл каждого его вхождения по порядку. На пальцах смысл всей формулы в следующем. \(\vec u(\vec x)\) — это значение скорости жидкости, которое определяется в каждой точке пространства \(\vec x\) . Уравнение описывает закономерности, которым обязана подчиняться эта величина, если она описывает поведение несжимаемой жидкости. Работает хоть для двумерного, хоть для трёхмерного случая. В левой части первого уравнения стоит \(\frac<\partial \vec u(\vec x)><\partial t>\) — это величина называется производной по времени и показывает, как быстро и куда(это вектор) изменится скорость в точке \(\vec x\) в момент времени \(t\) .

Нулевой вектор производной по времени обозначает, что скорость в этой точке сейчас не меняется, а, например, вектор (10, 0)[м/c 2 ] обозначает, что за следующую секунду скорость вырастет на 10[м/с] по оси x(если сама производная не поменяется).

Слагаемое вида \(-(\vec v \cdot \vec \nabla)\vec u\) называется адвекцией и говорит, что поле скоростей \(\vec u\) в этой точке утекает в направлении \(\vec v\) . В нашем же случае \(\vec u = \vec v\) , то есть поле скоростей сносит само себя. Это, кстати, и называется нелинейностью и из-за этого возникает миллион проблем при решении этого уравнения.

В принципе, смысл этого члена достаточно интуитивно можно представить именно как утекание каждой точки воды по вектору её скорости. Однако, в общем случае производная векторного поля \(\vec u\) по направлению \(\vec v\) обозначается как \((\vec v \cdot \vec \nabla)\vec u\) и обозначает, как меняется функция \(\vec u\) в направлении \(\vec v\) для этой точки.

Слагаемое же \(-\frac<1><\rho>\vec \nabla p\) является ускорением, которое получает жидкость в точке из-за градиента давления.

Оператор \(\vec \nabla\) , действующий на скалярное поле(например, давление), называется градиентом. Если слева от некоторой точки давление больше, чем справа, то градиент в ней будет направлен вправо и будет увлекать за собой жидкость в этом направлении. Например, ветер всегда дует в направлении, обратном градиенту давления воздуха (отсюда и минус). Электрический ток течёт в направлении градиента электрического потенциала:
\(E=\vec \nabla \phi\)

Второе уравнение \(\vec \nabla \vec u = 0\) называется уравнение непрерывности, а оператор \(\vec \nabla\) здесь действует на вектор и называется дивергенцией.

Оператор дифференцирования, действующий на вектор, называется дивергенцией. Дивергенция, равная нулю, говорит, что для каждого маленького кубика сколько в него жидкости втекает, столько и вытекает. А так как любой объём можно разбить на маленькие кубики, то свойство будет справедливо и для объёма любой формы. Это свойство называют также условием несжимаемости, так как если бы в какой-то объём втекало больше жидкости, чем вытекало, это бы означало, что жидкость в объёме накапливается, сжимаясь. Другой случай применения дивергенции, который может помочь её представить — это теорема Гаусса:
\(\vec \nabla E=\rho\)
Эта теорема говорит, что напряжённость электрического поля, которая «вытекает» из некоторого объёма, всегда вызвана электрическим зарядом плотности \(\rho\) внутри этого объёма. Если в объёме заряда нет, то и дивергенция нулевая.

То есть, одним предложением уравнение Навье-Стокса можно описать так: темп изменения скорости определяется течением и градиентом давления, но жидкость при этом не может сжиматься.

Классическое решения уравнения Навье-Стокса

Посмотрим теперь, как это уравнение можно программно решить. Для этого можно использовать подход, который называется расщеплением — разбить сложный физический процесс, состоящий из нескольких элементарных, на отдельные чередующиеся стадии и считать, что на каждой стадии работает только один элементарный процесс, а остальные выключены. Как ни странно, можно доказать (см. статью выше), что это — на самом деле математически обоснованная стратегия. Поэтому будем считать, что состояние скоростей для каждой точки в текущий момент времени \(\vec u(\vec x, t)\) нам известно. А для расчёта состояния в следующий момент времени \(t+dt\) , разобьём сложный процесс гидродинамической эволюции на простые стадии:
1) снесём поле скоростей по течению. это может немного «сжать» жидкость.
2) найдём такое давление, чтобы жидкость «расжалась».
Первый шаг называется адвекцией, второй — проекцией.

Адвекция

Адвекция, или течение, можно приближённо посчитать достаточно легко — если известно, что в точке \(\vec x\) , в момент времени \(t\) скорость равна \(\vec u(\vec x, t)\) , то в момент времени \(t+dt\) скорость в неё притечёт жидкость из точки \(\vec x — \vec u(x, t)\cdot dt\) .
\(\vec u^*(\vec x, t+dt)=\vec u(\vec x — \vec u(\vec x, t), t)\)
То есть мы получили промежуточное значение скорости, котороже уже утекло по течению, но теперь в нём нарушено условие непрерывности.

Это особенно удобно программируется на GPU, так как это можно посчитать, если хранить скорость в текстуре и её обновлять, просто читая тексели со смещением \(- \vec u(x, t)\cdot dt\) и используя стандартную аппаратную линейную интерполяцию.

Проекция

Проекция берёт скорость, для которой нарушено условие непрерывности \(\vec u^*\) и ищет такое давление, которое её «выправит» до нормальной скорости \(\vec u\) . Умные мужики доказали, что такое поле можно найти единственным образом и оно всегда будет градиентом некоторого скалярного поля (давления, в нашем случае):
\(\vec u(\vec x, t+dt)=\vec u^*(\vec x, t+dt) + \vec \nabla p\)
Помножим обе стороны этого равенства на оператор дифференцирования:
\(\vec \nabla \vec u(\vec x, t+dt)=\vec \nabla \vec u^*(\vec x, t+dt) + \vec \nabla^2 p\)
«ПОГОДИ-КА СУСЕЛ, ЭТО ЕЩЁ ЧТО» — можете меня спросить вы. Всё по порядку, но на самом деле отсюда для общего понимания достаточно знать, что если \(\vec u^*(\vec x)\) известно(а оно известно), то отсюда можно найти давление \(p(\vec x)\) . Если вспомнить, что в нашем случае дивергенция скорости равна нулю, то остаётся вот такое выражение.
\(\vec \nabla^2 p=-\vec \nabla u^*\)

В правой части этого равенства стоит дивергенция скорости, которую можно легко приблизительно посчитать, если известна скорость \(\vec u^*\) (а она известна). В левой части стоит штука, которая называется лапласианом давления.

Лапласиан — это оператор дифференцирования (ещё называется оператор набла) в квадрате, то есть применённый дважды к скалярному полю. Первый раз применяем оператор дифференцирования — получаем градиент. Второй раз — получаем дивергенцию. Таким образом оператор лапласа — это дивергенция градиента скалярного поля. Его можно представить как изменение потока скорости через маленький кубик, которое будет вызвано давлением в точке. Ещё одна аналогия — как поменяется дивергенция электрического поля в объёмчике, если в него положить заряд плотностью \(\rho\) (опять же, теорема Гаусса):
\(\vec nabla \vec E = \rho\) , \(\vec nabla \phi=\vec E\) => \(\vec nabla^2 \vec phi = \rho\)

Уравнение вида «лапласиан чего-то неизвестного равен чему-то известному» называется уравнением Пуассона. Что бы это ни значило, существует стандартный итеративный алгоритм, который позволяет его решить, то есть найти такое давление, чтобы его лапласиан был равен чему угодно. «Что угодно» мы знаем — это дивергенция промежуточной скорости, поэтому считаем по ней давление. Далее для давления считаем градиент и вычитаем результат из промежуточной скорости, чтобы получить окончательную скорость для следующего шага по времени:
\(\vec u=\vec u^* + \vec \nabla p\)

Шаги адвекции и проекции повторяем до посинения, рассчитывая всё дальше и дальше эволюцию поля течений по времени. Для визуализации можно, например, напускать частиц, которые могу сноситься этим полем скоростей. Результат выглядит так:

Важно понять, что в этом видосе, равно как и во всех остальных гифках этой статьи, жидкость на самом деле находится в большом кубе (границы которого не показаны), а не только там, где видны частицы. Частицы только уносятся полем скоростей, как, например, частицы дыма уносятся полем скоростей воздухе. Сами частицы никакой роли в физике процесса не играют и только позволяют относительно наглядно его продемонстрировать. Частицы обычно добавляются заранее туда, где ожидаются какие-то интересные турбулентности.

Важные особенности классического подхода

«Всё здорово, сусел, но в названии статьи ты написал что-то там про Шрёдингера! Он вообще где? Зачем нам это всё?» — спросите вы. Вопрос резонный. Но всю крутость подхода со Шрёдингером можно осознать, только если иметь представление о слабых сторонах классического солвера, который мы рассмотрели в предыдущей главе. В чём же они заключаются? Давайте об этом поговорим.

Основа любого расчётного метода — это то, как в нём представлены моделируемые данные. В рассмотренном нами подходе мы храним значение скорости для каждой точки. Например, в текселях двумерной или трёхмерной текстуры. Этот способ здорово работает, если требуется описать ровное поле течений, в котором нет особенностей (так называются завихрения и разные другие неоднородности). Неоднородностей обычно нет в вязких жидкостях вроде мёда или майонеза, поэтому метод очень здорово подходит, чтобы моделировать майонез. Но более текучие среды (например, вода, воздух и дым) отличаются тем, что в них существенную роль играют злополучные турбулентные течения — мелкие завихрения, имеющие очень сложную и нерегулярную структуру, даже образующие фракталы, которые очень неудобно описывать просто их значениями в каждой точке текстуры/массива. Если попытаться их моделировать, то все мелкие особенности быстро смазываются и расплываются, что соответствует поведению вязкой жидкости. Такое поведение называется численной вязкостью — это вязкость жидкости, которая появляется не потому что она является частью уравнения, которое мы решаем, а это паразитная вязкость, всплывающая как паразитное следствие нашего метода решения. Более того, напомню, что первое, что мы сделали, не успев взглянуть на уравнение Навье-Стокса — выкинули из него вязкость, так в ней недостатка точно не будет.

А вот избавиться от вязкости гораздо труднее, чем случайно её посчитать. Один из способов — это измельчать расчётную сетку. Чтобы таким методом получить что-то хоть как-то похожее на дым, понадобится сетка минимум 1024x1024x1024, то есть как минимум гигабайт памяти, если хранить по 1 байту на узел. А хранить захочется как минимум трёхкомпонентную скорость, то есть, скорее всего, 32 гигабайта в сумме. Это не только не разумно с точки зрения затрат памяти, это ещё и очень медленно. Другой способ — это представлять скорость не её направлением в каждой точке, а как сумму маленьких элементарных вихрей. Этот метод называется также методом дискретных вихрей. В нём вообще всё не так просто с процессами порождения новых вихрей и удаления старых, с поддержанием нужной плотности (так как вихри друг друга уносят, как частицы) и ещё миллион проблем, можете сами почитать, если интересно. Другой подход основан на том, что в реальных течениях вихри имеют свойство образовывать вращающиеся нити. Представьте медленно движущийся жгут, вокруг которого быстро вращается жидкость. Если такой жгут замыкается в кольцо, получается тороидальный вихрь, образующий знакомое кольцо дыма:

Существуют подходы, которые вместо хранения величины скорости в точках, хранят именно параметры таких жгутов. Но такие методы полагаются на топологию, поэтому в них необходимо считать, как жгуты взаимодействуют, сливаются, распадаются и вообще происходящее быстро теряет простоту и наглядность.

Однако, у классического метода есть одно очень важное положительное свойство — в нём вообще нет параметров. Обратите внимание, что для расчёта используется только скорость и больше вообще ничего — ни вязкости, ни даже плотности. В уравнении Навье-Стокса без вязкости есть плотность, но её можно «спрятать» в нормировку давления, поэтому можно сказать, что в исходном уравнении параметров также нет. Забегая вперёд, замему, что в солвере на уравнении Шрёдинге будет параметр. Загадочный.

На следующей странице мы рассмотрим, как же применить уравнения Шрёдингера, чтобы смоделировать тот же самый процесс, и какой в этом профит. Будет много картинок.


источники:

http://cyberleninka.ru/article/n/chislennoe-reshenie-nelineynogo-uravneniya-shredingera-v-radialno-simmetrichnom-sluchae

http://gamedev.ru/code/articles/shrodinger_hydrodynamics

Название: Численное решение уравнения Шредингера средствами Java
Раздел: Рефераты по физике
Тип: дипломная работа Добавлен 07:28:23 13 января 2011 Похожие работы
Просмотров: 4081 Комментариев: 20 Оценило: 3 человек Средний балл: 5 Оценка: неизвестно Скачать