//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.