Редактирование: Потенциал Морзе
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 4: | Строка 4: | ||
Парный силовой потенциал взаимодействия. | Парный силовой потенциал взаимодействия. | ||
Определяется формулой: | Определяется формулой: | ||
− | + | ||
+ | <math> | ||
\varPi(r) = | \varPi(r) = | ||
D\left[e^{-2\alpha(r-a)}-2e^{-\alpha(r-a)}\right], | D\left[e^{-2\alpha(r-a)}-2e^{-\alpha(r-a)}\right], | ||
Строка 15: | Строка 16: | ||
Потенциал имеет один безразмерный параметр <math>\alpha a</math>. Сила, соответствующая потенциалу Морзе, вычисляется по формуле | Потенциал имеет один безразмерный параметр <math>\alpha a</math>. Сила, соответствующая потенциалу Морзе, вычисляется по формуле | ||
− | + | ||
+ | <math> | ||
F(r) = -\varPi'(r) = | F(r) = -\varPi'(r) = | ||
2\alpha D\left[e^{-2\alpha(r-a)}-e^{-\alpha(r-a)}\right]. | 2\alpha D\left[e^{-2\alpha(r-a)}-e^{-\alpha(r-a)}\right]. | ||
Строка 22: | Строка 24: | ||
Для потенциала Морзе жесткость связи, критическая длина связи и прочность связи, соответственно, равны | Для потенциала Морзе жесткость связи, критическая длина связи и прочность связи, соответственно, равны | ||
− | + | <math>C = \varPi''(a) = 2\alpha^2D, \qquad b = a + \frac{\ln2}{\alpha}, \qquad P = |F(b)| = \frac{\alpha D}2.</math> | |
Сравнение взаимодействия Морзе с взаимодействием [[Потенциал Леннард-Джонса|Леннард-Джонса]] приведено на интерактивных графиках ниже. Показана зависимость от расстояния потенциала <math>\varPi</math> и силы <math>F</math>. Сравнение проведено при одинаковых значениях энергии связи <math>D</math> и длины связи <math>a</math>. Перемещение слайдера позволяет проследить влияние безразмерного параметра <math>\alpha a</math>, при этом энергия связи <math>D</math> и длина связи <math>a</math> остаются неизменными. Значения критической длины связи <math>b</math> и прочности связи <math>P</math>, отмеченные на графиках, соответствуют потенциалу Леннард-Джонса. | Сравнение взаимодействия Морзе с взаимодействием [[Потенциал Леннард-Джонса|Леннард-Джонса]] приведено на интерактивных графиках ниже. Показана зависимость от расстояния потенциала <math>\varPi</math> и силы <math>F</math>. Сравнение проведено при одинаковых значениях энергии связи <math>D</math> и длины связи <math>a</math>. Перемещение слайдера позволяет проследить влияние безразмерного параметра <math>\alpha a</math>, при этом энергия связи <math>D</math> и длина связи <math>a</math> остаются неизменными. Значения критической длины связи <math>b</math> и прочности связи <math>P</math>, отмеченные на графиках, соответствуют потенциалу Леннард-Джонса. | ||
− | + | <addscript src=MLJ/> | |
− | <htmlet nocache="yes"> | + | <htmlet nocache="yes">MLJ_TM</htmlet> |
Из графиков видно, что при <math>\alpha a = 6</math> взаимодействия Морзе и Леннард-Джонса близки. В частности, в этом случае для них совпадает жесткость связи <math>C = \varPi''(a)</math>. При увеличении <math>\alpha a</math> ширина потенциальной ямы для взаимодействия Морзе уменьшается, взаимодействие становится более жестким и хрупким. Уменьшение <math>\alpha a</math> приводит к противоположным изменениям — потенциальная яма расширяется, жесткость падает. | Из графиков видно, что при <math>\alpha a = 6</math> взаимодействия Морзе и Леннард-Джонса близки. В частности, в этом случае для них совпадает жесткость связи <math>C = \varPi''(a)</math>. При увеличении <math>\alpha a</math> ширина потенциальной ямы для взаимодействия Морзе уменьшается, взаимодействие становится более жестким и хрупким. Уменьшение <math>\alpha a</math> приводит к противоположным изменениям — потенциальная яма расширяется, жесткость падает. | ||
− | + | ''Текст программы построения графиков на языке JavaScript:'' <toggledisplay status=hide showtext="Показать↓" hidetext="Скрыть↑" linkstyle="font-size:default"> | |
− | |||
Файл '''"MLJ.js"''' | Файл '''"MLJ.js"''' | ||
− | < | + | <source lang="javascript" first-line="1"> |
− | // Сравнение взаимодействий Морзе и Леннард-Джонса | + | // Сравнение взаимодействий Морзе и Леннард-Джонса |
− | // | + | // Разработчик А. М. Кривцов |
− | // | + | // 01.05.2014 - 04.05.2014 |
− | |||
// Интернет: tm.spbstu.ru/Morse | // Интернет: tm.spbstu.ru/Morse | ||
− | function | + | function MainMLJ(canvas_1, canvas_2, Slider_01, Text_01) { |
// Предварительные установки | // Предварительные установки | ||
− | + | const X_max = canvas_1.width; | |
− | + | const Y_max = canvas_1.height; | |
// Размерные параметры | // Размерные параметры | ||
− | + | const a = 1.; // длина связи | |
− | + | const D = 1.; // энергия связи | |
// Расчет параметров взаимодействия | // Расчет параметров взаимодействия | ||
− | + | const b = a * Math.pow(13./7, 1./6); // положение минимума силы Леннард-Джонса (= 1.1086834 a) | |
− | + | const b2 = b * b; | |
− | + | const P0 = 12 * D / a; // коэффициент в выражении для силы Леннард-Джонса | |
− | + | const P = 42. / 169 * P0 / b; // модуль минимума силы Леннард-Джонса | |
// Задаваемые параметры | // Задаваемые параметры | ||
− | var kappa = 6; // параметр взаимодействия Морзе | + | var kappa = 6; // безразмерный параметр взаимодействия Морзе |
+ | const fps = 50; // frames per second - число кадров в секунду (качество отображения) | ||
// Область построения графика | // Область построения графика | ||
− | + | const x_min = 0.1 * a; | |
− | + | const x_max = 2.5 * a; | |
− | + | const y_min_1 = -1.5 * D; | |
− | + | const y_max_1 = -y_min_1; | |
− | + | const y_min_2 = -1.5 * P; | |
− | + | const y_max_2 = -y_min_2; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
// Установка флажков чекбоксов | // Установка флажков чекбоксов | ||
var LJ_flag = true; | var LJ_flag = true; | ||
var Morse_flag = true; | var Morse_flag = true; | ||
− | + | // настройка слайдеров и текстовых полей | |
− | + | Slider_01.min = 2; // лучше было бы взять Slider_01.min = b, но b не кратно значению Slider_01.step, что портит слайдер | |
− | + | Slider_01.max = 18; | |
− | + | Slider_01.step = 0.1; | |
− | + | Slider_01.value = kappa; // значение ползунка должно задаваться после min, max и step | |
− | + | Text_01.value = kappa; | |
− | + | ||
+ | draw_1(); draw_2(); | ||
// функция, запускающаяся при перемещении слайдера | // функция, запускающаяся при перемещении слайдера | ||
− | this. | + | this.set_01 = function(input) |
+ | { | ||
+ | kappa = input; // input - значение на слайдере | ||
+ | draw_1(); draw_2(); | ||
+ | } | ||
// Функции, запускающиеся при изменении элементов управления | // Функции, запускающиеся при изменении элементов управления | ||
− | |||
− | |||
− | // Отображение | + | this.setCheckbox_01 = function(bool) {LJ_flag = bool; draw_1(); draw_2(); } |
+ | this.setCheckbox_02 = function(bool) {Morse_flag = bool; draw_1(); draw_2(); } | ||
+ | |||
+ | // Отображение | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
function draw_1() | function draw_1() | ||
{ | { | ||
// Расчет параметров графики | // Расчет параметров графики | ||
− | y_min = y_min_1; | + | const y_min = y_min_1; |
− | y_max = y_max_1; | + | const y_max = y_max_1; |
− | sy = Y_max / (y_max - y_min); | + | const N = X_max; // число точек по оси x |
− | Y0 = Y_max + y_min * sy; | + | const dx = x_max / N; // шаг по оси x |
+ | const sx = X_max / x_max; // масштаб по оси x | ||
+ | const sy = Y_max / (y_max - y_min); // масштаб по оси y | ||
+ | const Y0 = Y_max + y_min * sy; // положение 0 оси y в экранных координатах | ||
− | context = canvas_1.getContext("2d"); | + | var context = canvas_1.getContext("2d"); // на context происходит рисование |
− | context.clearRect(0, 0, X_max, Y_max); | + | context.clearRect(0, 0, X_max, Y_max); // очистить экран |
// Горизонтальная ось | // Горизонтальная ось | ||
Строка 149: | Строка 142: | ||
context.fillText("-D", 3, Y0 + D * sy - 5); | context.fillText("-D", 3, Y0 + D * sy - 5); | ||
− | + | // График (потенциал Леннард-Джонса) | |
− | + | context.strokeStyle = 'black'; | |
− | + | context.beginPath(); | |
+ | if (LJ_flag) | ||
+ | for (var x = x_min; x < x_max; x+=dx) | ||
+ | { | ||
+ | var y = U_LJ(x); | ||
+ | |||
+ | var X = x * sx; | ||
+ | var Y = Y0 - y * sy; | ||
+ | |||
+ | if (x == x_min) context.moveTo(X, Y); | ||
+ | else context.lineTo(X, Y); | ||
+ | } | ||
+ | context.stroke(); | ||
+ | |||
+ | // График (потенциал Морзе) | ||
+ | context.strokeStyle = 'blue'; | ||
+ | context.beginPath(); | ||
+ | if (Morse_flag) | ||
+ | for (var x = x_min; x < x_max; x+=dx) | ||
+ | { | ||
+ | var y = U_Morse(x); | ||
+ | |||
+ | var X = x * sx; | ||
+ | var Y = Y0 - y * sy; | ||
+ | |||
+ | if (x == x_min) context.moveTo(X, Y); | ||
+ | else context.lineTo(X, Y); | ||
+ | } | ||
+ | context.stroke(); | ||
} | } | ||
Строка 158: | Строка 179: | ||
// Расчет параметров графики | // Расчет параметров графики | ||
− | y_min = y_min_2; | + | const y_min = y_min_2; |
− | y_max = y_max_2; | + | const y_max = y_max_2; |
− | sy = Y_max / (y_max - y_min); | + | const N = X_max; // число точек по оси x |
− | Y0 = Y_max + y_min * sy; | + | const dx = x_max / N; // шаг по оси x |
+ | const sx = X_max / x_max; // масштаб по оси x | ||
+ | const sy = Y_max / (y_max - y_min); // масштаб по оси y | ||
+ | const Y0 = Y_max + y_min * sy; // положение 0 оси y в экранных координатах | ||
− | context = canvas_2.getContext("2d"); | + | var context = canvas_2.getContext("2d"); // на context происходит рисование |
− | context.clearRect(0, 0, X_max, Y_max); | + | context.clearRect(0, 0, X_max, Y_max); // очистить экран |
// Горизонтальная ось | // Горизонтальная ось | ||
Строка 194: | Строка 218: | ||
context.fillText("b", b * sx - 3, Y0 - 3); | context.fillText("b", b * sx - 3, Y0 - 3); | ||
context.fillText("-P", 3, Y0 + P * sy - 5); | context.fillText("-P", 3, Y0 + P * sy - 5); | ||
− | + | var dX = 0, dY = 0; | |
− | + | ||
− | + | // График (полная сила Леннард-Джонса) | |
− | + | context.strokeStyle = 'black'; | |
− | + | context.beginPath(); | |
+ | if (LJ_flag) | ||
+ | for (var x = x_min; x < x_max; x+=dx) | ||
+ | { | ||
+ | var y = F_LJ(x); | ||
+ | |||
+ | var X = x * sx; | ||
+ | var Y = Y0 - y * sy; | ||
+ | |||
+ | if (x == x_min) context.moveTo(X, Y); | ||
+ | else context.lineTo(X, Y); | ||
+ | } | ||
+ | context.stroke(); | ||
− | + | // График (полная сила Морзе) | |
− | + | context.strokeStyle = 'blue'; | |
− | + | context.beginPath(); | |
− | + | if (Morse_flag) | |
− | |||
− | |||
− | |||
− | |||
for (var x = x_min; x < x_max; x+=dx) | for (var x = x_min; x < x_max; x+=dx) | ||
− | + | { | |
− | + | var y = F_Morse(x); | |
− | + | ||
− | + | var X = x * sx; | |
+ | var Y = Y0 - y * sy; | ||
− | + | if (x == x_min) context.moveTo(X, Y); | |
− | + | else context.lineTo(X, Y); | |
− | + | } | |
− | } | + | context.stroke(); |
+ | } | ||
// Потенциал Морзе | // Потенциал Морзе | ||
Строка 254: | Строка 288: | ||
return P0 * s4 * s4 * (s4 * s2 - 1) * r; | return P0 * s4 * s4 * (s4 * s2 - 1) * r; | ||
} | } | ||
− | |||
} | } | ||
− | + | </source> | |
− | </ | ||
Файл '''"MLJ.html"''' | Файл '''"MLJ.html"''' | ||
− | < | + | <source lang="html" first-line="1"> |
<!DOCTYPE html> | <!DOCTYPE html> | ||
<html> | <html> | ||
<head> | <head> | ||
<meta charset="UTF-8" /> | <meta charset="UTF-8" /> | ||
− | <title> | + | <title>Morse & Lennard-Jones</title> |
<script src="MLJ.js"></script> | <script src="MLJ.js"></script> | ||
</head> | </head> | ||
Строка 271: | Строка 303: | ||
<canvas id="canvasGraph_2" width="800" height="300" style="border:1px solid #000000;"></canvas> | <canvas id="canvasGraph_2" width="800" height="300" style="border:1px solid #000000;"></canvas> | ||
− | <!-- | + | <!--Чекбоксы--> |
<div> | <div> | ||
Взаимодействие: | Взаимодействие: | ||
− | + | <font color="#000000" size="5"><B>—</B></font> | |
− | + | <input type="checkbox" id="checkbox_01" name="" onchange="app.setCheckbox_01(this.checked);" checked/>Леннард-Джонса, | |
<font color="#0000ff" size="5"><B>—</B></font> | <font color="#0000ff" size="5"><B>—</B></font> | ||
− | + | <input type="checkbox" id="checkbox_02" name="" onchange="app.setCheckbox_02(this.checked);" checked/>Морзе | |
− | + | </div> | |
− | + | ||
− | + | <!--слайдер--> | |
+ | <div>Безразмерный параметр потенциала Морзе: | ||
+ | <input type="range" id="Slider_01" style="width: 150px;" oninput="app.set_01(this.value); document.getElementById('Text_01').value = this.value;"> | ||
+ | <font face= "Times New Roman"><I>αa</I> = | ||
+ | <input id="Text_01" style="width: 4.2ex;" required pattern="[-+]?([0-9]*\.[0-9]+|[0-9]+)" oninput=" | ||
+ | // если введено не число - строка не пройдет валидацию по паттерну выше, и checkValidity() вернет false | ||
if (!this.checkValidity()) return; | if (!this.checkValidity()) return; | ||
− | app. | + | app.set_01(this.value); |
− | document.getElementById(' | + | document.getElementById('Slider_01').value = this.value; |
"> | "> | ||
− | + | </font></div> | |
− | + | <br> | |
− | + | ||
− | + | <script type="text/javascript">var app = new MainMLJ(document.getElementById('canvasGraph_1'), document.getElementById('canvasGraph_2'), | |
− | + | document.getElementById('Slider_01'), document.getElementById('Text_01'));</script> | |
− | |||
− | |||
− | |||
− | |||
</body> | </body> | ||
− | </html> | + | </html> |
− | </ | + | </source> |
− | </ | + | </toggledisplay> |
− | |||
== См. также == | == См. также == | ||
Строка 306: | Строка 338: | ||
[[Category: Потенциальные взаимодействия|Мо]] | [[Category: Потенциальные взаимодействия|Мо]] | ||
− |