Смекни!
smekni.com

Численное решение уравнения Шредингера средствами Java (стр. 7 из 7)

//rePsyX0 = rePsyX2t;

//imPsyX0 = imPsyX2t;

return ImPsyP0;

}

double[] imPsyP0 = new double[N+1];{

imPsyP0 = imPsyP0();}

/**

*

* Произведение действительной части функции Psy и первой составляющей оператора расщепления

*/

double[] rePsyPt2(){

double RePsyPt2[]= new double[N+1];

for (int j=0; j<N+1; j++){

RePsyPt2[j] = rePsyP0[j]*Math.cos(p[j]*p[j]*DT/2) + imPsyP0[j]*Math.sin(p[j]*p[j]*DT/2);

}return RePsyPt2;

}

double[] rePsyPt2 = new double[N+1];{

rePsyPt2 = rePsyPt2();}

/**

*

* Произведение мнимой части функции Psy и первой составляющей оператора расщепления

*/

double[] imPsyPt2(){

double ImPsyPt2[]= new double[N+1];

for (int j=0; j<N+1; j++){

ImPsyPt2[j] = imPsyP0[j]*Math.cos(p[j]*p[j]*DT/2) - rePsyP0[j]*Math.sin(p[j]*p[j]*DT/2)*0;

}return ImPsyPt2;

}

double[] imPsyPt2 = new double[N+1];{

imPsyPt2 = imPsyPt2();}

/**

*

* Второе преобразование Фурье и вычисление действительной части функции Psy

*/

double[] rePsyX1t2(){

double RePsyX1t2[]= new double[N+1];

for (int j=0; j<N+1; j++){

double S = 0;

for (int s=0; s<N+1; s++){

S += rePsyPt2[s]*Math.cos(p[s]*x[j]) - imPsyPt2[s]*Math.sin(p[s]*x[j]);

}

RePsyX1t2[j] = hp*S/Math.sqrt(2*Math.PI);

}return RePsyX1t2;

}

double[] rePsyX1t2 = new double[N+1];{

rePsyX1t2 = rePsyX1t2();}

/**

*

* Второе преобразование Фурье и вычисление мнимой части функции Psy

*/

double[] imPsyX1t2(){

double ImPsyX1t2[]= new double[N+1];

for (int j=0; j<N+1; j++){

double S = 0;

for (int s=0; s<N+1; s++){

S += imPsyPt2[s]*Math.cos(p[s]*x[j]) + rePsyPt2[s]*Math.sin(p[s]*x[j]);

}

ImPsyX1t2[j] = hp*S/Math.sqrt(2*Math.PI);

}return ImPsyX1t2;

}

double[] imPsyX1t2 = new double[N+1];{

imPsyX1t2 = imPsyX1t2();}

/**

*

* Произведение действительной части функции Psy и второй составляющей оператора расщепления

*/

double[] rePsyX1t2V(){

double RePsyX1t2V[]= new double[N+1];

for (int j=0; j<N+1; j++){

RePsyX1t2V[j] = rePsyX1t2[j]*Math.cos(w[j]*DT) + imPsyX1t2[j]*Math.sin(w[j]*DT);

}return RePsyX1t2V;

}

double[] rePsyX1t2V = new double[N+1];{

rePsyX1t2V = rePsyX1t2V();}

/**

*

* Произведение мнимой части функции Psy и второй составляющей оператора расщепления

*/

double[] imPsyX1t2V(){

double ImPsyX1t2V[]= new double[N+1];

for (int j=0; j<N+1; j++){

ImPsyX1t2V[j] = imPsyX1t2[j]*Math.cos(w[j]*DT) - rePsyX1t2[j]*Math.sin(w[j]*DT);

}return ImPsyX1t2V;

}

double[] imPsyX1t2V = new double[N+1];{

imPsyX1t2V = imPsyX1t2V();}

/**

*

* Третье преобразование Фурье и вычисление действительной части функции Psy

*/

double[] rePsyP1t(){

double RePsyP1t[]= new double[N+1];

for (int j=0; j<N+1; j++){

double S = 0;

for (int s=0; s<N+1; s++){

S += rePsyX1t2V[s]*Math.cos(p[j]*x[s]) + imPsyX1t2V[s]*Math.sin(p[j]*x[s]);

}

RePsyP1t[j] = hx*S/Math.sqrt(2*Math.PI);

}return RePsyP1t;

}

double[] rePsyP1t = new double[N+1];{

rePsyP1t = rePsyP1t();}

/**

*

* Третье преобразование Фурье и вычисление мнимой части функции Psy

*/

double[] imPsyP1t(){

double ImPsyP1t[]= new double[N+1];

for (int j=0; j<N+1; j++){

double S = 0;

for (int s=0; s<N+1; s++){

S += imPsyX1t2V[s]*Math.cos(p[j]*x[s]) - rePsyX1t2V[s]*Math.sin(p[j]*x[s]);

}

ImPsyP1t[j] = hx*S/Math.sqrt(2*Math.PI);

}return ImPsyP1t;

}

double[] imPsyP1t = new double[N+1];{

imPsyP1t = imPsyP1t();}

/**

*

* Произведение действительной части функции Psy и третьей составляющей оператора расщепления

*/

double[] rePsyP1te(){

double RePsyP1te[]= new double[N+1];

for (int j=0; j<N+1; j++){

RePsyP1te[j] = rePsyP1t[j]*Math.cos(p[j]*p[j]*DT/2) + imPsyP1t[j]*Math.sin(p[j]*p[j]*DT/2);

}return RePsyP1te;

}

double[] rePsyP1te = new double[N+1];{

rePsyP1te = rePsyP1te();}

/**

*

* Произведение мнимой части функции Psy и третьей составляющей оператора расщепления

*/

double[] imPsyP1te(){

double ImPsyP1te[]= new double[N+1];

for (int j=0; j<N+1; j++){

ImPsyP1te[j] = imPsyP1t[j]*Math.cos(p[j]*p[j]*DT/2) - rePsyP1t[j]*Math.sin(p[j]*p[j]*DT/2);

}return ImPsyP1te;

}

double[] imPsyP1te = new double[N+1];{

imPsyP1te = imPsyP1te();}

/**

*

* Четвертое преобразование Фурье и вычисление действительной части функции Psy

*/

double[] rePsyX2t(){

double RePsyX2t[]= new double[N+1];

for (int j=0; j<N+1; j++){

double S = 0;

for (int s=0; s<N+1; s++){

S += rePsyP1te[s]*Math.cos(p[s]*x[j]) - imPsyP1te[s]*Math.sin(p[s]*x[j]);

}

RePsyX2t[j] = hp*S/Math.sqrt(2*Math.PI);

}return RePsyX2t;

}

double[] rePsyX2t = new double[N+1];{

rePsyX2t = rePsyX2t();}

/**

*

* Четвертое преобразование Фурье и вычисление мнимой части функции Psy

*/

double[] imPsyX2t(){

double ImPsyX2t[]= new double[N+1];

for (int j=0; j<N+1; j++){

double S = 0;

for (int s=0; s<N+1; s++){

S += imPsyP1te[s]*Math.cos(p[s]*x[j]) + rePsyP1te[s]*Math.sin(p[s]*x[j]);

}

ImPsyX2t[j] = hp*S/Math.sqrt(2*Math.PI);

}return ImPsyX2t;

}

double[] imPsyX2t = new double[N+1];{

imPsyX2t = imPsyX2t();}

/**

*

* Вычисление вероятности в момент DT

*/

double[] psyX2t(){

double[] L = new double[N+1];

double[] K = new double[N+1];

double[] PsyX2t = new double[N+1];

L = rePsyX2t;

K = imPsyX2t;

for (int j = 0; j < N+1; j++){

PsyX2t[j] = L[j]*L[j] + K[j]*K[j];

}return PsyX2t;

}

}

Графики поведения волновых функций

Прямоугольный потенциальный барьер


Барьер гауссова функция



Заключение

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

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


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

1. А.С. Давыдов. Квантовая механика//М.,: "Наука", 1973г., 704 с

2. З. Флюгге. Задачи по квантовой механике//М.: "Мир", Т.1, 1974г., 343 с

3. Е.А. Волкова, А.М. Попов, А.Т. Рахимов, "Квантовая механика на персональном компьютере"//Москва.: "УРСС", 1995.

4. Дж. Мэтьюз, Р. Уокер "Математические методы физики".

4. С.В. Поршнев Моделирование квантовых систем //www.exponenta.ru

6. П.Ноутон, Г.Шилдт Java 2 Наиболее полное руководство//С-Петербург: "БХВ-Петербург" 2007.