Text
                    УЧЕБНОЕ ПОСОБИЕ
>1

СПЕЦИАЛЬНОСТЬ
ДЛЯ ВЫСШИХ УЧЕБНЫХ ЗАВЕДЕНИЙ
КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ
ФИЗИЧЕСКИХ ПРОЦЕССОВ В ПАКЕТЕ
iopraiMMi-fce С.В.Поршнев

ББК32.8 П 60 Поршнев С. В. П60 Компьютерное моделирование физических процессов в пакете MATLAB. - М.: Горячая линия - Телеком, 2003. - 592 с., ил. ISBN 5-93517-128-7. Книга посвящена обучению основам компьютерного моделирования физических процессов. Каждая глава содержит теоретический материал, описание математических методов, используемых при решении соответст- вующих задач, и задачи для самостоятельного решения. В качестве базо- вого программного продукта используется пакет MATLAB. Для студентов вузов, обучающихся по специальностям математика, информатика, физика, может быть полезна для преподавателей соответст- вующих дисциплин, специалистов. ББК32.8 Адрес издательства в Интернет WWW.TECHBOOK.RLJ e-mail: radios__hl @mtumet. ru Учебное издание Поршнев Сергей Владимирович Компьютерное моделирование физических процессов в пакете MATLAB Учебное пособие Корректор В. С. Морозова Обложка художника В. Г. Ситникова ДР № 071825 от 16 марта 1999 г. Подписано в печать 14.04.04. Формат 60x84/16. Усл. псч. л. 37.5. Тираж 2000 экз. Изд. № 128 Зак. 1576. Отпечатано с готовых диапозитивов в ООО ПФ «Полиграфист». 160001, г. Вологда, ул. Челюскинцев, 3, тел.: (8172) 72-55-31, 72-60-72 ISBN 5-93517-128-7 © Поршнев С. В.. 2003 © Оформление издательства «Горячая линия-1 еле ком», 2003
Глава 1 МОДЕЛИРОВАНИЕ ОТНОСИТЕЛЬНЫХ ДВИЖЕНИЙ В КЛАССИЧЕСКОЙ МЕХАНИКЕ 1.1. Введение В классической механике, для описания механических явлений, в качестве первого шага необходимо выбрать ту или иную систему отсчета. В различных системах отсчета законы движения имеют, вообще говоря, различный вид. Если взять произвольную систему отсчета, то может оказаться, что законы движения даже простых явлений будут выглядеть весьма сложно. Для нахождения траекторий относительных движений в классической механике используется предположение об абсолютности времени во всех системах отсчета (как инерциальных, так и неинерциальных). Используя данное предположение, рассмотрим движение одной и той же точки в двух различных системах отсчета К и К'9 из которых вторая движется относи- тельно первой с произвольной скоростью P(f)= (R(t) - радиус-вектор, описывающий ^положение точки начала системы координат /^'относительно системы отсчета К), Будем описывать движение точки в системе К'радиу- сом-вектором 5 направленным из начала координат системы А'в теку- щее положение точки. Тогда движение рассматриваемой точки относитель- но системы отсчета К описывается радиусом-вектором г(г) г(г)=г'(г)+^), (1.1) а относительная скорость v(r) v(r)=?(z) = ^(r)+^), (1.2) где ?'(/) -скоростьточки относительно системы отсчета^(г)-скорость движения системы отчета А'относительно системы отсчета А (рис. 1.1). Таким образом, для нахождения закона движения точки в произвольной системе отсчета А необходимо: 1) задать закон движения точки относительно системы отсчета А'(функ- цию г'(г));
Компьютерное моделирование физических процессов в пакете MATLAB 2) задать закон движения системы отсчета /Соотносительно системы от- счета К (функцию £(z)); 3) определить закон движения точки относительно системы отсчета К в соответствии с (1.1). Рис. 1.1. К постановке задачи об описании относительных движений Возможна другая постановка данной задачи, в которой по известному закону движения материальной точки f(z) относительно некоторой систе- мы отсчета К и по известному закону движения системы отсчета Л"'относи- тельно системы отсчета К R[t) требуется найти закон движения материаль- ной точки в системе отсчета К' Очевидно, что решение задачи в такой постановке дается следующими формулами: г'(г)=г(г)-/г0, (1.з) = (1.4) Несмотря на то, что решение задачи о нахождении траектории относи- тельного движения исчерпывается формулами (1.1) - (1.4), построение кон- кретных траекторий движения без использования ПК может вызвать опре- деленные трудности, а в ряде случаев привести к неправильным результа- там. Ниже мы рассмотрим две поучительные, на наш взгляд, задачи, соответствующие обеим постановкам, и продемонстрируем в ходе их реше- ния возможности, заложенные в пакет MATLAB для построения графиков функций, зависящих от Одной переменной. 1.2. Построение орбиты Луны в гелиоцентрической системе отсчета С точки зрения кинематического подхода эта задача соответствует пер- вой постановке задачи об относительном движении. В гелиоцентрической системе отсчета (система К) Земля движется по окружности радиуса /?] = = 1.496 108 км (период обращения 7\ = 3.156107 с). Луна в свою очередь
/. Моделирование относительных движений в классической механике движется вокруг Земли (система К') по окружности радиуса /?2 = 3.844-105 км (период обращения Т2 = 2.36-106 с. Как известно [1,2], при движении ма- териальной точки по окружности радиуса R с постоянной угловой скоро- стью со координаты радиуса-вектора, проведенного из начала координат к текущему положению точки, меняются по закону Я(П = /?cos(cvr /?sin(cvz + #>o)j (1.5) где <ро - начальная фаза, характеризующая положение частицы в момент времени t = 0, которую в дальнейшем мы будем полагать равной нулю. За- меняя в (1.5) R на R2 и подставляя в (1.1), получаем зависимость радиуса- вектора Луны в гелиоцентрической системе координат от времени: R2 cos Г 2л- + 2?, COS (lx ' —t R2 sin I 1^2 J + 2?! sin ЪгJ ) ) (1.6) Выражение (1.6) задает орбиту Луны (у = у(х(г))) в параметрической форме, где параметром является время. Предваряя дальнейшее чтение пара- графа, где орбита Луны построена с использованием пакета MATLAB, ре- комендуем качественно оценить ее вид. Для построения искомой орбиты в пакете MATLAB в режиме непосред- ственного вычисления необходимо передать пакету следующую последова- тельность команд. (В пакете MATLAB часть строки, следующая за знаком % является комментарием и при самостоятельном вводе команд может быть опущена.) » Rl=1.496*10A8; % задание численного значения радиуса % орбиты Земли » Т1=3.156*10А7; % задание численного значения периода % обращения Земли вокруг Солнца » R2=3.844*10A5; % задание численного значения радиуса % орбиты Луны » Т2=2.360*10А6; % задание численного значения периода % обращения Земли вокруг Солнца » t=0:Tl/1000:Tl; % задание дискретной переменной, изменяющейся % от 0 до Т1 с шагом Т1/1000 5
Компьютерное моделирование физических процессов в пакете MATLAB % вычисление координат радиуса-вектора Земли » Xz=Rl*cos(2*pi*t/Tl); » Yz=Rl*sin(2*pi*t/Tl); % вычисление координат радиуса-вектора Луны в системе координат, % связанной с Землей » Xm=Rl*cos(2*pi*t/T2); » Ym=R|*sin(2*pi*t/T2); % вычисление координат радиуса-вектора Луны в гелиоцентрической % системе координат » Xotn=Xz+Xm; » Yotn=Yz+Ym; » p!ot(Xont,Yont); % построение орбиты Луны в гелиоцентрической % системе координат (рис. 1.2.) Ffe ЕА Им 1ПМП То* нф П Ч А Л Z J90 Рис. 1.2. Орбита Луны в гелиоцентрической системе координат (Подробное описание интерфейса окна Figure №. 1 приведено в Приложении 2) Для отображения на одном графике орбит Земли и Луны в гелиоцентри- ческой системе координат следует вместо команды plot(Xotn, Yont) ввести команду plot(Xotn,Yont,Xz,Yz). Фрагмент траекторий Земли и Луны в ге- лиоцентрической системе координат представлен на рис. 1.3. Соответствует ли вид орбиты, представленной на рис. 1.2 и 1.3, орбит, ранее построенной, качественно? 6
1. Моделирование относительных движений в классической механике 1 495 1 49 1 485 1 48 1.475 1.47 1 465 1.46 1.455 1 45 1.445 -1.5 -1 -0.5 0 05 2 Рис. 1.3. Фрагмент траекторий движения Земли (1) и Луны (2) в гелиоцентрической системе координат Для получения информации о всех активных переменных, находящихся в памяти компьютера (рабочей области) в данный момент, используется ко- манда whos. На рис. 1.4. показана информация, выведенная данной коман- дой на монитор компьютера, после выполнения. » whos Name Size Bytes Class R1 lxl 8 double array R2 1x1 8 double array Т1 1x1 8 double array Т2 1x1 8 double array Хт 1x1001 8008 double array Xctn 1x1001 8008 double array Xz 1x1001 8008 double array Ym 1x1001 8008 double array Yait 1x1001 8008 double array Yz 1x1001 8008 double array ans 0x0 0 char array t 1x1001 8008 double array Grand total is 7011 elements using 56088 bytes Рис. 1.4. Получение информации об активных переменных, находящихся в памяти компьютера после выполнения описанной последовательности команд 7
Компьютерное моделирование физических процессов в пакете MATLAB f dx{t)y ~dT dy(t) < dt > — вектор скорости Луны относительно Земли. Для визуализации искомой зависимости необходимо выполнить сле- дующую последовательность команд: » Rl=1.496*10A8; % задание численного значения радиуса % орбиты Земли » Т1=3.156*10А7; % задание численного значения периода % обращения Земли вокруг Солнца » R2=3.844*10A5; % задание численного значения радиуса % орбиты Луны » Т2=2.360*10А6; % задание численного значения периода обращения % Земли вокруг Земли » dt=Tl/2000; » t=O:dT:Tl; % задание дискретной переменной, изменяющейся от О % доТ1 с шагом Т1/1000 % вычисление координат радиуса-вектора Земли » Xz=Rl*cos(2*pi*t/Tl); » Yz=Rl*sin(2*pi*t/Tl); % вычисление координат радиуса-вектора Луны в системе координат, % связанной с Землей » Хт=Н^со8(2*р1*1/Т2); » Ym=Rt*sin(2*pi*t/T2); % вычисление координат радиуса-вектора Луны в гелиоцентрической % системе координат » Xotn=Xz+Xm; » Yotn=Yz+Ym; % вычисление значений проекций скорости движения Земли на % соответствующие координатные оси в гелиоцентрической % системе координат » Vx=diff(Xz)/dt; » Vy=diff(Yz)/dt; % вычисление значений проекций скорости движения Луны 9с на соответствующие координатные оси в % системе координат, связанной с Землей » vx=diff(Xm)/dt; » vy=diff(Ym)/dt; 9с вычисление значений функции, задаваемой выражением (1.7) 10 i
1. Моделирование относительных движений в классической механике » V=(Vx.A2+VyA2).A0.5-(Vx.*vx+Vy.*vy)J(Vx.A2+Vy.A2).A0.5; » tl=O:dt:Tl-dt; % построение траектории движения Луны и траектории движения % Земли в гелиоцентрической системе координат » subplot(2,l,l); plot(Xm,Ym); % построение графика функции, задаваемой выражением (1.7) » subplot(2,l,2); plot(tl,V); Результаты выполнения приведенной последовательности команд пред- ставлены на рис. 1.6. (R2 =3,844-107 км), рис. 1.7. (R2 =3,844-Ю5 км). Анализ зависимостей vomH(t), представленных на рис. 1.6 и 1.7, позволя- ет объяснить причину отличий орбит. Функция D(t) при R2 =3,844-105 км всегда положительна, т. е. Луна всегда движется в направлении движения Земли и петли не образуются. При R2 = 3,844-107 км величина D(t) прини- мает отрицательные значения, т. е. существуют моменты времени, в кото- рые Луна движется в направлении, противоположном направлению движе- ния Земли, а потому орбита имеет петли. Рис. 1.6. Траектория движения Луны в гелиоцентрической системе координат при R2 =3,844-107 ки (верхняя зависимость), зависимость мгновенных значений разности между модулем скорости Земли и проекцией скорости движения Луны на направление скорости движения Земли 11
Компьютерное моделирование физических процессов в пакете MATLAB Отметим, что постоянные в пакете MATLAB трактуются как матрицы размерности 1x1. Для сохранения значений переменных, находящихся в ра- бочей области, используется команда save имя_файла или функция 8ауе(имя_файла). Для загрузки ранее проведенного сеанса работы с паке- том MATLAB используется команда 1оав(имя_файла) или функция 1оав(имя_файла). Команда save имеет несколько различных форм: save имя_файла - записываются все переменные рабочей области в файле имя_файла с расширением .mat; save имя_файла X - записывается только значение переменной X; save имя_файла X Y Z — записываются только значения переменных X, Y и Z. После записи команды save также можно указывать ключи, уточняющие формат записи файлов: - mat - двоичный МАТ-формат, используемый по умолчанию; - ascii - ASCII формат единичной точности (8 цифр); - ascii -double - ASCII формат двойной точности (16 цифр); - ascii -double -tabs - ASCII формат двойной точности с разделителем и метками табуляции; V 4 - запись МАТ-файла в стандарте версии MATLAB 4.0; - append — добавление в существующий МАТ-файл. Приведенный выше протокол команд можно сохранить в виде файла на диске для последующего анализа решения или использования как осно- вы программы сценария, используемой при решении подобных задач, ко- мандой diary имя файла или функцией diary (имя_файла). Например, для записи в файл Moon.m протокола приведенных выше команд необходи- мо ввести следующую команду: » diary Moon.m % открытие файла для сохранения протокола. Затем каждая последовательно выполненная команда будет заноситься в файл Moon.m. Для приостановки записи выполняемых команд в файл ис- пользуется команда diary off. Отметим, что данная команда также записы- вается в файл Moon.m. Начиная с версии MATLAB 6.0 и выше, данный на- бор команд можно выполнить автоматически, набрав в командной строке имя файла Moon и нажав клавишу <Enter>. Созданный нами документ позволяет расширить задачу и посмотреть, какой будет орбита Луны при различных значениях радиуса и периода об- ращения. Например, на рис. 1.5 представлена орбита Луны в гелиоцензри- ческой системе координат при г = 3,844-107 км. 8
1. Моделирование относительных движений в классической механике Рис. 1.5. Орбита Луны в гелиоцентрической системе координат при г = 3,844 -107 км Сравнивая орбиты Луны, представленные на рис. 1.4 и рис. 1.5, обнару- живаем их существенные отличия. Для объяснения причины этих отличий , необходимо сравнить линейные скорости движения Луны в первом и во втором случае и линейную скорость движения Земли. Так как направление линейной скорости движения Земли относительно Солнца, как и направле- ние линейной скорости движения Луны относительно Земли, меняются во времени, оставаясь постоянными по величине, в качестве количественной характеристики соотношения линейных скоростей движения Луны в Земли в гелиоцентрической системе координат следует выбрать разность между модулем линейной скорости движения Земли и проекцией линейной скоро- сти Луны на направление вектора линейной скорости Земли <Ь7> 'dX(t)' dt Ч dt , где 17(?) = - вектор скорости движения Земли относительно Солнца, 9
Компьютерное моделирование физических процессов в пакете MATLAB Рис. 1.7. Траектория движения Луны в гелиоцентрической системе координат при R2 =3,844-105 км (верхняя зависимость), зависимость мгновенных значений разности между модулем скорости Земли и проекцией скорости движения Луны на направление скорости движения Земли Задача 1.1 1. Определите предельное значение радиуса орбиты Луны, при котором не происходит появление петель. Как выглядит орбита Луны в гелиоцен- трической системе координат в этом случае? 2. Зафиксируйте радиус орбиты Луны и постройте орбиту Луны при раз- личных значениях периода обращения. Что можно сказать о размере петель в этом случае? 3. В заключение сделаем ряд замечаний по поводу некоторых операторов и функций, использованных в данном разделе. Обратите внимание на способ задания дискретных переменных (векторов) t, tl. Здесь мы использовали знак :, являющийся одним из важнейших синтаксических знаков пакета MATLAB. Этот знак, поставленный между двумя числами, задает век- тор, компоненты которого принимают значения от меньшего числа до большего с шагом 1. Например, оператор х = 0:9 задает целочисленный вектор х = [0,1,2,3,4,5,6,7,8,9]. Отметим, что в MATLAB также допуска- ется явное задание вектора с помощью квадратных скобок. Если шаг изме- нения дискретной переменной отличается от единиц, то при ее определе- нии следует указывать значение шага, аналогично тому, как это было сделано выше в программах, приведенных в настоящем разделе. 12
1. Моделирование относительных движений в классической механике 4. Так как пакет MATLAB является пакетом, изначально ориентированным на матричные вычисления, основные объекты, с которыми оперирует пакет, являются векторами и матрицами. При обращении к функции, например, у = cos(x), где х — вектор, значение которого определено вы- ше, MATLAB проводит вычисления для каждого элемента вектора ар- гумента и присваивает их соответствующим компонентам вновь соз- даваемого вектора. 5. Для построения двух графиков на одном чертеже были использованы ко- манда (2,1,1), subplot(2,l,2), позволившие разбить графическое окно на две отдельные части. В общем случае команда-обращение к данной ко- манде имеет следующий вид: subplot(m,n,p) или subplot(m п р). Здесь значение т —указывает, на сколько частей разбивается окно по верти- кали, п —указывает, на сколько частей окно разбивается по горизонта- ли, р — порядковый номер подокна, считая слева направо и сверху вниз. Команда subplot( ) используется как для создания нового подокна, так и для перехода от одного подокна к другому. После вызова данной коман- ды появляется команда plot( ) график и/или графики в соответствую- щем подокне. 6. Технология создания интерфейса пользователя, позволяющего упростить процедуру вычислений, описана в Приложении 3. 1.3. Построение орбиты Марса в системе отсчета, связанной с Землей С точки зрения кинематического подхода эта задача соответствует вто- рой постановке задачи об относительном движении. В гелиоцентрической системе отсчета (система К) Земля движется по окружности радиуса Д = 1.496-108 км, период обращения Т} = 365.24 суток, Марс двигается по эл- липсу, большая полуось которого ам - 2.28-108 км, период обращения Мар- са Тм= 689.98 суток, эксцентриситет орбиты е = 0.093 [3]. Движение Земли описывается радиусом-вектором R(t), задаваемым выражением (1.5). В свя- зи с тем, что орбита Марса является эллипсом, зависимости x=x(z), y=y(f) от времени задаются параметрически [4]: x(£) = aM(cos£-e), О-8) у(£) = ам JF-e2sin£ , (1.9) z(^)=^-(^-e-sin^). (1.10) 2-тг 13
Компьютерное моделирование физических процессов в пакете МА TLAB Полному обороту по эллипсу соответствует изменение параметра от 0 до 2л:. Для построения орбиты Марса необходимо вычислить в одни и те же моменты времени координаты радиусов-векторов, описывающих положе- ние Земли и Марса в гелиоцентрической системе отсчета, затем в соответ- ствии с (1.3) вычислить координаты Марса в системе отсчета, связанной с Землей. Запишем эту последовательность действий более четко в виде вы- числительного алгоритма. 1. Задание интервала изменения параметра L,. 2. Разбиение интервала изменения параметра на N последовательных интервалов. 3. Вычисление для каждого значения переменной £, соответствующих зна- чений времени и координат орбиты Марса х, у согласно (1.10), (1.8), (1.9). 4. Для каждого значения времени вычисление координат Земли в соот- ветствии с (1.5). 5. Вычисление для каждого значения времени координат орбиты Марса в системе отсчета, связанной с Землей. 6. Построение орбиты Марса в системе отсчета, связанной с Землей. Для построения искомой орбиты в пакете MATLAB в режиме непосред- ственного вычисления необходимо выполнить следующую последователь- ность команд. » Rl=1.496*10A8; % задание радиуса орбиты Земли » Т1=365.24; % задание периода обращения Земли вокруг Солнца % в сутках » Аш=2.28*10Л8; % задание радиуса орбиты Марса » Тт=689.98; % задание периода обращения Марса вокруг Солнца % в сутках » Е=0.093; % эксцентриситет орбиты Марса » Np=1000; % число точек на один оборот вокруг Солнца Марса » dksi=(2*pi)/Np; % вычисление шага А <5 изменения переменной £ » ksi=0:dksi:2*pi; % вычисление значений координат вектора % вычисление значений координат вектора 7} = г(^, ) (формула (1.10)) » T=Tm/(2*pi)*(ksi-E*sin(ksi)); % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось оХ (формула (1.8)) » Xm=Am*(cos(ksi)-E); % % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось oY (формула (1.9)) » Ym=Am*((l-E.A2).A0.5)*sin(ksi); 14
/. Моделирование относительных движений в классической механике % вычисление мгновенных значений проекции радиуса-вектора Земли на ось оХ » Xz=Rl*cos(2*pi*T/Tl); % вычисление мгновенных значений проекции радиуса-вектора Земли % на ось oY » Yz=Rl*sin(2*pi*T/Tl); » plot(Xz,Yz,Xm,Ym) Результаты выполнения приведенной последовательности команд пред- ставлены на рис. 1.8. Рис. 1.8. Орбиты Марса и Земли в гелиоцентрической системе координат Для построения орбиты Марса в системе координат, связанной с Землей, необходимо выполнить следующую последовательность команд: » Rl=1.496*10A8; % задание радиуса орбиты Земли » Т1=365.24; % задание периода обращения Земли вокруг Солнца % в сутках » Ат=2.28*10Л8; % задание радиуса орбиты Марса » Тт=689.98; % задание периода обращения Марса вокруг Солнца % в сутках » Е=0.093; % эксцентриситет орбиты Марса 15
Компьютерное моделирование физических процессов в пакете MATLAB » Np=1000; % число точек на один оборот вокруг Солнца Марса » К=9; % число оборотов Марса вокруг Солнца » dksi=(2*pi)/Np*K; % вычисление шага изменения переменной £ » ksi=0:dksi:2*pi; % вычисление значений координат вектора % вычисление значений координат вектора 7} (формула (1.10)) » T=Tm/(2*pi)*(ksi-E*sin(ksi)); % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось оХ (формула (1.8)) » Xm=Am*(cos(ksi)-E); % % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось oY (формула (1.9)) » Ym=Am*((l-E.A2).A0.5)*sin(ksi); % вычисление мгновенных значений проекции радиуса-вектора Земли % на ось оХ » Xz=Rl*cos(2*pi*T/Tl); % вычисление мгновенных значений проекции радиуса-вектора Земли % на ось oY » Yz=Rl*sin(2*pi*T/Tl); % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось оХ в системе координат, связанной с Землей » Xotn=Xm-Xz; % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось oY в системе координат, связанной с Землей » Yotn=Ym-Yz; » plot(Xotn,Yotn,.... % визуализация орбиты Марса Xotn(l),Yotn(l),... % визуализация начального положения Марса 'ks',... % режим рисования одних маркеров 'MarkerEdgeColor','b',... % задание цвета границы маркера 'MarkerFaceColor','g',... % задание цвета закраски маркера 'MarkerSize',5); % задание размера маркера Результаты выполнения приведенной последовательности команд пред- ставлены на рис. 1.9. Отметим, что в пакете MATLAB имеются возможность продемонстри- ровать движение Марса в системе координат, связанной с Землей, в дина- мике. Для этого достаточно заменить команду plot( ) командой comet(Xotn,Y otn). 16
]. Моделирование относительных движений в классической механике 4-1-1-L-1-L-1-L- -4-3-2-101234 хЮ® Рис. 1.9. Траектория движения Марса в системе координат, связанной с Землей Еще одной важной характеристикой движения Марса (в первую очередь, для межпланетных космических полетов) является расстояние между Зем- лей и Марсом s(t), которое определяется модулем радиуса-вектора, описы- вающего положение Марса в системе отсчета, связанной с Землей. Для по- строения данной зависимости следует выполнить следующую последо- вательность команд: » Rl=1.496*10A8; % задание радиуса орбиты Земли » Т1=365.24; % задание периода обращения Земли вокруг Солнца % в сутках » Аш=2.28*10А8; % задание радиуса орбиты Марса » Тш=689.98; % задание периода обращения Марса вокруг Солнца % в сутках » Е=0.093; % эксцентриситет орбиты Марса » Np=1000; % число точек на один оборот Марса вокруг Солнца » К=9; % число оборотов Марса вокруг Солнца » dksi=(2*pi)/Np*K; % вычисление шага изменения переменной £ » ksi=0:dksi:2*pi; % вычисление значений координат вектора % вычисление значений координат вектора 7] = ) (формула (1.10)) 17
Компьютерное моделирование физических процессов в пакете MATLAB » T=Tm/(2*pi)*(ksi-E*sin(ksi)); % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось оХ (формула (1.8)) » Xm=Am*(cos(ksi)-E); % % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось oY (формула (1.9)) » Ym=Am*((l-E. А2). A0.5)*sin(ksi); % вычисление мгновенных значений проекции радиуса-вектора Земли % на ось оХ » Xz=Rl*cos(2*pi*T/Tl); % вычисление мгновенных значений проекции радиуса-вектора Земли % на ось oY » Yz=Rl*sin(2*pi*T/Tl); % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось оХ в системе координат, связанной с Землей » Xotn=Xm-Xz; % вычисление мгновенных значений проекции радиуса-вектора Марса % на ось oY в системе координат, связанной с Землей » Yotn=Ym-Yz; % вычисление мгновенных значений расстояния между Землей и Марсом » R=(Xotn.A2+Yotn.A2).A0.5; » plot(T,R) Результаты выполнения приведенной последовательности команд пред- ставлены на рис. 1.10. Анализ зависимости, представленной на рис. 1.10, показывает, что расстояние между Землей и Марсом является сложной пе- риодической функцией времени. Если воспользоваться терминологией тео- рии сигналов [5], то о зависимости s(t) можно сказать, что она представляет собой амплитудно-модулированный сигнал, которые принято представлять в виде произведения двух функций - высокочастотной (несущей) и низко- частотной функции, задающей амплитудную модуляцию (огибающей): и(?) = (гг + a sin(et>1r))-(1 + Aasin(®2/)), (1-11) й - постоянная составляющая функции и(г); а - амплитуда сигнала; a>i - частота несущей; Да - амплитуда функции, задающая глубину амплитудной модуляции, - частота модулирующей функции. 18
I. Моделирование относительных движений в классической механике Рис. 1.10. Зависимость расстояния между Землей и Марсом от времени, измеряемого в земных годах Из рис. 1.10 видно, что период несущей составляет « 2 года, период мо- дулирующей функции « 17 лет. Наличие функции в функции s(t) периоди- ческой составляющей с периодом « 2 года вполне ожидаемо. В первом при- ближении орбиту Марса можно рассматривать как окружность, поэтому функция s(r) принимает следующий вид: ( Т —Т11 5(0= R2m +7?12-27?m7?1cos Г (1.12) из которого видно, что функция s(r) является периодической, период функции (1.13) Т = ТмТ1 s Тм-Т\ В качестве единицы измерения периода функция s(t) наиболее удобно выбрать земной год. В выбранных единицах измерения выражение (1.13) принимает следующий простой вид: Те = —----ГОД , 5 тм~т\ (1.14) 19
Компьютерное моделирование физических процессов в пакете МА TLAB позволяющий вычислять длительность периода в земных годах. Для рас- сматриваемого случая Ts » 2.1247 года. Зависимость s(f), задаваемая (1.12), представлена на рис. 1.11, из которо- го видно, что в данном случае Да = 0. Следовательно, появление амплитудной модуляции у функции s(t), представленной на рис. 1.10, обусловлено эллиптич- ностью орбиты Марса, приводящей к тому, что временной интервал между точками наибольшего сближения Земли и Марса составляет « 17 лет*. х10е 4<---- 0.5 О 2 4 6 8 10 12 14 16 18 20 Рис. 1.11. Зависимость расстояния между Землей и Марсом от времени в предположении о том, что орбита Марса является круговой Задача 1.2 1. Получите самостоятельно выражение (1.12), описывающее зависимость расстояния между Землей и Марсом, в предположении, что орбита по- следнего - окружность. 2. Постройте график функции, задаваемой выражением (1.12). 3. Оцените, используя рис. 1.7 или график в созданном вами документе, значения параметров (и, а, Ла) в выражении (1.11) и напишите явный Отметим, что именно это свойство относительного движения Земли и Мер- са явилось причиной форсированной подготовки в первой половине 90-х годов рос- сийских космических аппаратов по программе « Фобос», закончившейся, к сожале- нию, неудачей. 20
1. Моделирование относительных движений в классической механике вид функции s(t) в этом случае. Для проверки правильности выражения, постройте график s(t) и сравните его с соответствующей зависимо- стью, представленной на рис. 1.7. 4. Исследуйте зависимость функции s(t) от параметров орбитального движения Земли и Марса. От каких параметров зависят период несу- щей, глубина и период огибающей функции s(t)? Задача 1.3 Используя астрономические данные, постройте траектории движения других планет Солнечной системы в системе отсчета, связанной с Зем- лей, предположив, что их орбиты плоскости лежат в одной плоскости. Задача 1.4 В качестве единиц измерения расстояния можно использовать, напри- мер, радиус орбиты Земли, времени — период обращения Земли вокруг Солнца. Запишите в выбранной системе единиц соответствующие формулы и проведите вычисления. Задача 1.5 Изучите технологию создания графического интерфейса пользователя, описанную в Приложении 3, и создайте аналогичный интерфейс для мо- делирования траекторий движения планет Солнечной системы. ЛИТЕРАТУРА 1. Фейман Р., Лейтон Р., Сэндс М. Феймановские лекции по физике. Т. 1-2. М.: Мир, 1976. 2. Матвеев А. Н. Механика и теория относительности. М.: Высшая школа, 1986. 3. Физическая энциклопедия. Т. 3. М.: Большая Российская Энциклопедия, 1992. 4. Ландау Л. Д., Лифшиц Е. М. Курс теоретической физики. Механика. - М.: Физматгиз, 2000. 5. Баскаков С.И. Радиотехнические цепи и сигналы. М.:Высшая школа, 1988. 21
Глава 2 МОДЕЛИ ФИЗИЧЕСКИХ ПРОЦЕССОВ, ИСПОЛЬЗУЮЩИЕ ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ 1-ГО ПОРЯДКА 2.1. Моделирование остывания нагретых тел Природа переноса тепла от нагретого тела в окружающий его воздух весьма сложна и включает в себя механизмы конвекции, излучения, испаре- ния и теплопроводности. Однако при небольшой разности температур меж- ду нагретым телом и окружающей средой для описания процесса остывания можно использовать простую модель, впервые предложенную И. Ньюто- ном. В данной модели температура холодильника (окружающей) принима- ется постоянной, а скорость передачи тепла от нагретого тела к холодиль- нику, пропорциональной разности температур между ними. Это утвержде- ние в математической формулировке записывается на языке дифферен- циальных уравнений (ДУ) в следующем виде: ^- = -г(Т-ТХ (2.1) at где Т - температура нагретого тела, Ts - температура окружающей среды, г- «коэффициент остывания». Значение «коэффициента остывания» зави- сит от механизма передачи, площади нагретого тела и тепловых свойств са- мого тела. Знак минус в (2.1) появляется во избежание физически ненаблю- даемой ситуации, когда Т > Ts. Соотношение (2.1) называется законом теп- лопроводности Ньютона. Так как в уравнение (2.1) входит только первая производная неизвестной функции T(t), его относят к ОДУ первого порядка. В связи с тем, что боль- шое количество физических процессов описывается данным классом ОДУ, важно научиться находить их решения. По определению решением ОДУ первого порядка, разрешенного относительно производной, J=/(x,y(x)) (2.2) ах называется дифференцируемая функция у=<р(х), удовлетворяющая этому уравнению, т. е. такая, что (р'{х} = /(x,<p(x)) тождественно на некотором
2. Модели физических процессов, использующие дифференциальные уравнения 1-го порядка участке изменения х [1]. Задача нахождения решения уравнения (2.2), удов- летворяющего начальному условию <р (х0) = у0, называется задачей Коши. В общем случае уравнение (2.2) аналитического решения, выражающе- гося через элементарные функции, не имеет. Кроме того, даже при наличии аналитического решения представление его в графическом виде существен- но облегчает его анализ. Отмеченные причины являются весьма важным ар- гументом в пользу нахождения приближенных численных решений ОДУ. 2.2. Алгоритм Эйлера При численном решении ОДУ вместо исходного дифференциального урав- нения ищется решение конечно-разностного ОДУ. Переход к конечно- разностному уравнению в уравнении (2.2) осуществляется следующим образом. Вместо точного значения производной рассматривает ее разностный аналог (23) dx Дх где Дх достаточно малая величина. Тогда в конечных разностях уравнение (2.2) принимает следующий вид: + = (24) Дх Откуда сразу получаем формулу для нахождения значения функции у(х) в точке х+Дх у(х + Дх)= y(x) + Axf[x, у(х)). (2.5) Из (2.5) видно, как построить алгоритм для решения задачи Коши. 1. Задать начальные условия (х0, у0). 2. Вычислить значение функции у(х) в точке х^хо+Дх, определяемое вы- ражением (2.5) )) = у0 +Дх/(х0,у0) (2.6) 3. Повторить процедуру, описанную в п. 2, и найти значение функции у(х) в точке хт = х1 + Дх и т. д. для всех значений переменной х„ = х0 + (Дх. Наиболее удобно записать данный алгоритм в виде итерационной формулы у, = у,.J + ^/(х,.!, y(x,..j)),( = 1,2... (2.7) Данный метод называется методом касательных или методом Эйлера. Из (2.4) видно, что метод будет давать хорошее приближение к «истинному» значению функции у(х), если приращение аргумента Дх достаточно мало. Величина шага Ах зависит от конкретной задаци. Геометрическая интерпре- тация (2.7) приведена на рис. 2.1, из которого понятно, что значение в п-й 23
Компьютерное моделирование физических процессов в пакете MATLAB точке оценивается по значению функции и ее производной в п - 1-й точке, при этом принимается, что значение производной (т. е. угол наклона касательной) на отрезке [х,.]/ х,] остается неизменным. Не выполнение данного условия приводит к отклонению численного решения от точного, которое может быть уменьшено уменьшением Ах. Рис. 2.1. Геометрическая интерпретация метода Эйлера 2.3. Программа для решения дифференциальных уравнений первого порядка методом Эйлера Приступая к разработке программы вне зависимости от использованного языка программирования, необходимо разбить всю задачу на последова- тельность независимых заданий, соответствующих алгоритму, описанному в предыдущем разделе. Программа должна состоять из следующих блоков: 1. Задание начальных условий. 2. Задание функции f (х, у(х)). 3. Задание отрезка, на котором ищется решение, и шага интегрирования. (Отметим, что на практике оказывается более удобным задавать не шаг ин- тегрирования, а количество интервалов, на которые разбивается отрезок ин- тегрирования, а затем вычислять значение шага). 4. Вычисление координат точек, в которых ищется решение дифферен- циального уравнения. 5. Решение уравнения (2.2) методом Эйлера. 6. Вывод результатов. Для примера рассмотрим решение задачи Коши для ОДУ у’ = -у2 +х с начальным условием у(0) = 1. Для решения поставленной задачи в пакете MATLAB потребуется соз- дание двух файлов, называемых m-файлами, потому что имена этих файлов имеют вид <Имя>.т. Отметим, что большая часть времени пользователя 24
2. Модели физических процессов, использующие дифференциальные уравнения 1-го порядка пакета MATLAB состоит в создании, редактировании и выполнении т- файлов. В пакете MATLAB существуют два вида файлов: файлы- программы и файлы-функции. Файлы-программы состоят из последова- тельности обычных операторов пакета MATLAB. Примером программы яв- ляется, например, файл сценария, содержащий последовательность команд, выполненных в предыдущем разделе при моделировании относительных движений. Переменные, используемые в программе, являются глобаль- ными — они изменяют значения переменных с аналогичным названием в ра- бочей области текущей сессии. Файлы-функции содержат описания специ- фических функций, созданных пользователем для решения конкретной за- дачи. Они дают возможность пользователю фактически расширить возможности MATLAB, поскольку имеют тот же статус, как и другие функ- ции пакета. Любой модуль, содержащий функцию, возвращающую один выходной параметр, имеет следующую структуру: function var = пате_ГипсНоп(список_параметров) % Комментрии Блок команд, реализующих вычисление функции var = выражение; % данная строчка вводится, если функция % возвращает результат вычислений Свойства m-файла, содержащего т-функцию. 1. т-файл начинается с объявления типа function, после которого указы- вается имя переменной, являющейся параметром, возвращаемым функцией, имя самой функции и список формальных параметров, передаваемых в функцию при ее вызове. 2. Если последняя строка функции имеет вид var = выражение, то в ка- честве значения функции возвращается значение выражения занесенного в переменную var. 3. Все переменные, используемые в теле функции, являются локальными переменными, т. е. их определение действует только внутри данной функции. 4. Для использования глобальных переменных их список приводится в строке, предваряющей блок проведения вычислений: function var = пате_ЛшсНоп(список_параметров) % Комментрии global varl, var2, var3 % объявление глобальных переменных Блок команд, реализующих вычисление функции var = выражение; % данная строчка вводится, если функция % возвращает результат вычислений 25
Компьютерное моделирование физических процессов в пакете МА TLAB 5. Функция является самостоятельным программным модулем, взаимо- действующим с другими программными модулями через входные, выход- ные и глобальные переменные. 6. В файле функции допускаются комментарии, начинающиеся симво- лом %. 7. При вызове файла-функции сначала происходит его компиляция, а за- тем исполнение. Машинный код m-функции хранится в рабочей области пакета MATLAB. 8. Обращение к функции осуществляется указанием ее имени и значений переменных, перечисленных в списке формальных параметров: имяпеременной = пате_Гипс6оп(список_параметров) пате_Гипс6оп(список_параметров) Любой модуль, который содержит функцию, возвращающую несколько выходных параметров, имеет следующую структуру: function [varl,var2,...] = пате_ГипсДоп(список_параметров) % комментарии Блок команд, реализующих вычисление функции varl = выражение!; var2 = выражение2; var3 = выражениеЗ; Обращение к функции, возвращающей несколько выходных параметров: [varl,var2,...] = пате_ГипсНоп(список_параметров) После этого переменные varl,var2,... становятся определенными и их можно использовать в последующих математических выражениях. При обращении к функции, возвращающей несколько выходных пара- метров, в виде: имяпеременной = пате_Гипсйоп(список_параметров) в переменную имя_переменной возвращается только значение перемен- ной varl. Создадим, следуя перечисленным выше правилам, функции, позволяю- щие найти численные решения задачи Коши для обыкновенного ДУ перво- го порядка. Первый файл, создаваемый нами файл, будет содержать функ- цию, стоящую в правой части уравнения, второй — реализацию вычисли- тельной схемы метода Эйлера. Для создания m-файла необходимо запустить встроенный в пакет MATLAB текстовый редактор, выбрав после- 26
2. Модели физических процессов, использующие дифференциальные уравнения !-го порядка довательно следующие пункты меню: File —> New -> M-File, приемы редак- тирования текста в котором аналогичны любому редактору текстов, рабо- тающему под управлением операционной системы Windows. Затем набрать во вновь создаваемом m-файле следующий текст: function F = f(x,y) % f(x,y) - функция, стоящая в правой части дифференциального % уравнения F = х-ул2; и сохранить его на жестком диске под именем f.m. Далее аналогичным образом создаем файл, содержащий следующие ко- манды, реализующие метод Эйлера: function [X,Y]=Euler(yO,xO,xl,N) % функция, возвращающая численные решения % дифференциального уравнения первого порядка % методом Эйлера dx=(xl-xO)/N; % вычисление шага интегрирования % начальные условия х(1)=х0; У(1)=уО; % вычислительная схема метода Эйлера for i=l:N x(i+l)=x(l)+dx*i; y(i+l)=y(i)+dx*f(x(i),y(i)); end; % возвращение результатов вычислений Х=х; Y=y; и сохраняем его на диске под именем Euler.m Функция Euler возвращает два вектора: X, Y - векторы содержащие значения координат узлов сетки, на которой ищется решение ОДУ, и значения решения ОДУ в данных узлах соответственно. После создания файлов f.m и Euler.m, для получения решения ОДУ и его визуализации следует в командном окне пакета ввести следующие ко- манды (для добавления новой строки в командном окне MATLAB следует одновременно нажимать клавиши Shift и Enter, для выполнения всей по- следовательности команд нажать клавишу Enter): » у0= 1 ; хО = 0; 27
Компьютерное моделирование физических процессов в пакете MATLAB xl = 10; N = 100; [x,y]=Euler(yO,xO,xl,N); plot(x,y) Искомое численное решение дифференциального уравнения представле- но на рис. 2.2. 3 5г- -Г—— -Т Г— I I —г- —т 1 —т 3 - 2.5 - 2- X / 1.5- / 0.5-1---J---L--1-.-1--i--1--1------ 0123456789 10 Рис. 2.2 Решение дифференциального уравнения у' = -у2 + х , начальное условие у(0) = 1 Теперь, когда создана программа, реализующая метод Эйлера для чис- ленного решения ОДУ первого порядка, необходимо обсудить вопрос о точ- ности получаемого решения. Так как мы заменили дифференциальное уравнение его разностным аналогом, то естественно ожидать некоторое от- личие численного решения от «истинного» решения ОДУ. Получим оценку погрешности метода Эйлера на i-м шаге интегрирования А,, равную разно- сти между точным решением уравнения у(х() и соответствующим значени- ем численного решения у, = у(_( + Ах/(х,_1; у(х,_])): Л, = ) - [>,-i + > У U-i))] • (2.8) Вспоминая, что х, = х(Ч + Ах , и раскладывая у(х,_1 + й) в ряд Тейлора, приводим (2.8) к следующему виду 28
2. Модели физических процессов, использующие дифференциальные уравнения I-го порядка Л,- = У.-1 + >''(*,-1)^+1 ХМ2 -••• [у,-1 + А#(х,_1, y(xi_l))] + О^х3 ) Но в соответствии с уравнением (2.2) y'(xi-l)= > у(х<-1 )) > П0ЭТ0МУ Л, =р’’(х,ХДх)2+о(лх3). (2.10) Из (2.10) видно, что главный член погрешности интегрирования ОДУ первого порядка по методу Эйлера на одном шаге пропорционален (Ах)2. После N шагов погрешность составит (V-(Ax)2 . Так как при заданном ин- U 1 тервале интегрирования N------, полная погрешность численного решения Ах А - Ах, поэтому говорят, что метод Эйлера является методом первого по- рядка точности. В общем случае отклонение численного решения от точного обусловлено двумя причинами. Во-первых, компьютеры не оперируют с вещественными числами (например, десятичными числами с дробной частью) бесконечной точности, но представляют вещественные числа в виде конечного числа деся- тичных цифр, определяемого аппаратными средствами компьютера* и его про- граммным обеспечением. Это приводит к тому, что арифметические операции, выполняемые с действительными числами, будут выполняться с некоторой по- грешностью, называемой погрешностью округления. Например, при использо- вании компьютера, оперирующего с вещественными числами, содержащими только одну значащую цифру после запятой, для умножения чисел 1.1x2.7 бу- дет получен ответ 3.0. Погрешности округлений по мере роста объема вычис- лений имеют свойство накапливаться. Второй причиной отклонения численного решения от точного является вычислительный алгоритм, применяемый в конкретной задаче. Указанное обстоятельство определяет необходимость проводить специальные иссле- дования применяемых вычислительных алгоритмов и оценивать их точно- стные характеристики. Подчеркнем, что не существует правил для выбора «наилучшего» метода решения ОДУ. У каждого метода, как показывает практика, имеются свои достоинства и недостатки, а конкретный выбор оп- На IBM совместимых компьютерах серий XT, АТ точность представления числа определялась наличием дополнительной микросхемы (сопроцессора), в функ- ции которой входило выполнение операций с действительными числами с повышен- ной точностью. Начиная с поколения Pentium, все компьютеры имеют процессор и сопроцессор, выполненные в виде одной микросхемы. 29 1
Компьютерное моделирование физических процессов в пакете MATLAB ределяется требованиями и квалификацией исследователя, а также характе- ром конкретного решения, который заранее неизвестен. Вот некоторые наи- более типичные вопросы, присущие численным исследованиям. На сколько точным должен быть ответ? На каком интервале следует искать решения задачи? Каковы возможности вашего компьютера? На практике точность численного решения определяют, уменьшая шаг интегрирования ОДУ до тех пор, пока численное решение не перестанет за- висеть от шага при заданном уровне точности. Выбирая величину шага, важно помнить, что выбор слишком малого шага приводит к увеличению объема вычислений и, соответственно, погрешности округлений. Другой не менее важной характеристикой алгоритма является его устой- чивость. В ряде задач возникают ситуации, когда численные результаты на- ходятся в хорошем соответствии с «истинным решением» на коротких ин- тервалах, а на больших интервалах отклоняются от него. Это обусловлено тем, что малые погрешности алгоритма, многократно перемножаясь, приво- дят к геометрическому росту погрешности. О таком алгоритме примени- тельно к данной задаче говорят как о неустойчивом алгоритме. Очевидно, что использование алгоритма, оказывающегося неустойчивым в данной за- даче, приведет к неверным численным результатам. Поэтому при решении конкретной задачи проводят специальные исследования, позволяющие оце- нить точность и устойчивость выбранного вычислительного алгоритма. 2.4. Оценка коэффициента остывания по экспериментальным результатам Прежде чем приступать к исследованию точности численного решения уравнения (2.1), получаемого методом Эйлера, найдем оценку «коэффици- ента остывания» г. Для этого воспользуемся экспериментальными результа- тами, полученными при остывании чашки кофе [2]. В табл. 2.1 представле- ны результаты измерений температуры чашки кофе в последовательные моменты времени (температура окружающего воздуха 22,0 °C). Температу- ра регистрировалась с точностью 0.1 °C. Таблица 2.1 Время, мин Т, °C Время, мин Т, °C 0 83.0 8,0 64,7 1,0 77,7 9,0 63,4 2,0 75,1 10,0 62,1 3,0 73,0 11,0 61,0 4,0 71,1 12,0 59,9 30
2. Модели физических процессов, использующие дифференциальные уравнения 1-го порядка Время, мин Т, °C Время, мин Т, °C 5,0 69,4 13,0 58,7 6,0 67,8 14,0 57,8 7,0 66,4 15,0 56,6 В связи с тем, что задача обработки экспериментальных данных присут- ствует во всех лабораторных физических практикумах, мы считаем целесо- образным на рассматриваемом примере продемонстрировать методику реа- лизации метода наименьших квадратов (МНК) в пакете MATLAB. Напомним постановку задачи МНК и общий подход к ее решению. Для некоторого набора данных, заданных таблично, требуется найти формулу, выражающую данную зависимость аналитически. Поставим задачу так, чтобы с самого начала обязательно учитывался характер исходной функции: найти функцию заданного вида y = F(x), (2.11) которая в точках х,, х2,..., хп принимает значения, как можно более близ- кие к табличным значениям у1( у2,..., У,1 • Предположим, что приближаю- щая функция F(x) в точках X], х2,..., хп имеет значения У1,У2>--->Ул- (2-12) Требование близости табличных значений уи уг,..., уп и значений (2.12) можно истолковать следующим образом. Будем рассматривать сово- купность значений функции /(х) и совокупность значений (2.12) как коор- динаты двух точек «-мерного пространства. С учетом этого задача прибли- жения функции может быть переформулирована следующим образом: най- ти такую функцию F(x) заданного вида, чтобы расстояние между точками Л/(у[,у2,...,Уп) и ^(Уц У2>---’У«) было наименьшим. Воспользовавшись метрикой евклидова пространства, приходим к требованию, чтобы величина 7(у|-У1)2+(у2”У2)2 +•• + (>’„-Уп)2 (2-13) была наименьшей, что равносильно следующему: сумма квадратов (>'1 ~У1)2 +(>2 -У2)2 +--- + (>'n -yj2 (2.14) должна быть наименьшей. Окончательно задача приближения функции Дх ) теперь формулируется следующим образом: для функции /(v ), заданной табл. 2.1, найти функцию F(x (определенного вида так, чтобы сумма квадратов (2.14) была наименьшей. 31
Компьютерное моделирование физических процессов в пакете МА TLAB Эта задача называется приближением функции методом наименьших квадратов. Рассмотрим метод нахождения параметров приближающей функции в об- щем виде на примере приближающей функции, зависящей от трех параметров: у = F(x,a,b,c). (2.15) Имеем р(х^а,Ь,с) = yt,i = 1,2,..., п. (2.16) Сумма квадратов разностей соответствующих значений функций /(х) и F(x) имеет вид: Х(^'-F(x;,a,b,c))2 = ф(а,Ь,с). (2.17) i=l Сумма является функцией ф(а,Ь,с) трех переменных. Используя необ- ходимое условие экстремума: “=О.“=оЛ = О, да дЬ дс получаем систему уравнений X Ь'< - F^x' ’а’Ь’ с’^‘ 'а’Ь’с)= 0 ’ i=l Х[у,- -F(xi,a,b,c,}]F^(xi,a,b,c) = O, (2.18) i=i X Ь “ F(x>а'Ь’’ F^X Xi ’а ’Ь’с)= 0 ’ /=1 Решив систему (2.18) относительно параметров а, Ь, с, получаем кон- кретный вид функции F(x,a,b,c). Изменение количества параметров не приведет к искажению сущности самого подхода, а выразится в изменении количества уравнений в системе (2.18). Значения разностей У) - F(xj,a.b.c) = £, (2.19) называют отклонениями измеренных значений от вычисленных по формуле (2.15). 32
2 Модели физических процессов, использующие дифференциальные уравнения 1-го порядка Сумма квадратов отклонений п a = ^£i i (2.20) в соответствии приближающей < Из двух рази лучшим считав Для примера коэффициентов, с принципом наименьших квадратов для заданного вида функции должна быть наименьшей. ых приближений одной и той же табличной функции тся то, для которого (2.20) имеет наименьшее значение. получим систему уравнений, для определения неизвестных при использовании линейной аппроксимации F(x,a,b) = ax + b . (2.21) Найдем часть ibie производные (2.16) 9F dF — = х, — = 1. (2.22) да db Составим сис тему вида (2.18) ^(у,-ах,=0, ^(у,.-ах,-^) = °. (Здесь и далее су Далее имеем: гмма ведется по переменной i = 1,2,...л .) £х,.у,.-а£х,2-^х,.=0, ^у,-^х<~Ьп = 0- Разделив каж дое уравнение (2.18) на п, получим , / (2.24) (-Хх']'а + /’ = ~2Л Введем обозь р Л сь д Д и II II 5 JS ай — 3 । “ м м IIм § Л 1576 33
Компьютерное моделирование физических процессов в пакете MATLAB Тогда система (2.24) принимает вид: М хг-а + М х b = Мху, Мх-а+Ь = Му (2.25) или в матричной форме (Мхг МУа}(МхуУ Откуда Вычислив значения параметров а, b в соответствии с (2.26), получим кон- кретные значения и, следовательно, конкретный вид линейной функции (2.21). Для аппроксимации экспериментальных данных, представленных в табл. 2.1, будем использовать экспоненциальную функцию вида F(x,a,b) = exp(b + at), (2.27) где а и b - неизвестные коэффициенты, значения которых нужно оценить по методу наименьших квадратов. Решение данной задачи может быть сведено к рассмотренной выше задаче отыскания коэффициентов линейной функ- ции. Действительно, введем в рассмотрение функцию ф(х,a,b) = ln(F(x,a,b))- a+b-t, (2.28) которая оказывается линейной функцией относительно неизвестных коэф- фициентов а, Ь. Таким образом, для решения задачи о нахождении аппрок- симирующей функции (2.27) можно использовать следующий алгоритм: 1. По известной таблице 2.1, построить таблицу, содержащую зависи- мость ln(7j=/(z). 2. Используя данные новой таблицы, найти значения неизвестных коэф- фициентов а, b линейной функции, решив систему уравнений (2.26). 3. Определить аппроксимирующую функцию, подставив найденные значения коэффициентов а, b в (2.27). Описанный алгоритм реализуется в пакете MATLAB следующей после- довательностью команд: » х = 0:15; % задание моментов времени из табл. 2.1 » у = [83 77.7 75.1 73.0 71.1 69.4 67.8 66.4 64.7 63.4 62.1 61.0 59.9 58.7 57.8 56.6]; % задание значений температуры из табл. 2.1 » N = length(x); 34
2. Модели физических процессов, использующие дифференциальные уравнения I-го порядка » yl = log(y); % вычисление элементов матрицы системы (2.25) » Мх = sum(x)/N; » Му = sum(yl)/N; » Мх2 = sum(x.A2)/N; » Мху = x*yl7N;; » М = [Мх2 Мх; Мх 1]; % задание матрицы системы (2.25) » d = [Мху Му]'; % задание вектор-столбца свободных членов системы (2.25) » s = M\d; % решение системы линейных уравнений (2.25) » t = 0:0.01:x(N); % задание дискретной переменной для вычисления % значений аппроксимирующей функции » Т = exp(s(l)*t+s(2)); % вычисление значений % аппроксимирующей функции » plot(x,у,'o',t,T,'MarkerSize',2) % визуализация исходных данных % и аппроксимирующей функции Результаты выполнения перечисленной выше последовательности ко- манд представлены на рис. 2.3. Представляется целесообразным сделать небольшой комментарий к не- которым командам, использованным при решении задачи об аппроксима- ции исходных данных экспоненциальной функцией. При вычислении зна- чения выражения М„. =— V* х у,- требуется вычислить скалярное произве- •’ п*-1 дение двух векторов, которые в пакете MATLAB по умолчанию записываются в виде строк, поэтому выполнение команды х*у, приводит к появлению следующего сообщения об ошибке: ??? Error using ==> * Inner matrix dimensions must agree. (ошибка в использовании ==> * размерности матриц должны быть согласованными) Причина данной ошибки является следствием того, что в пакете MATLAB, ориентированном на выполнение матричных операций, любой вектор также рассматривается как матрица. В рассматриваемой задаче х,у — векторы раз- мерности 1x16. По правилу умножения матриц число столбцов первой мат- рицы должно равняться числу строк второй матрицы. Как очевидно, данное условие для векторов х,у не выполняется, поэтому операцию умножения сле- дует предварить операцией транспонирования вектора у'. 35
Рис. 2.3. Исходные дачные и аппроксимирующая их функция Ниже показаны значения переменных у и у' »У У = Columns 1 through 5 83.0000 77.7000 75.1000 73.0000 71.1000 Columns 6 through 10 69.4000 67.8000 66.4000 64.7000 63.4000 Columns 11 through 15 62.1000 61.0000 59.9000 58.7000 57.8000 Column 16 56.6000 » y’ ans = 83.0000 77.7000 75.1000 73.0000 71.1000 69.4000 67.8000 66.4000 36
64.7000 63.4000 62.1000 61.0000 59.9000 58.7000 57.8000 56.6000 Для вывода данных, представленных в табл. 2.1 в виде окружностей, в команде plot после ввода имен векторов х, у указан тип маркера точек 'о'. Размер маркера точек задается в команде plot строкой 'MarkerSize' и сле- дующим за ней числом 2. Размер маркера точек задается после перечисле- ния всех векторов, используемых для построения графиков. Отметим, что можно использовать два других способа решения рассматри- ваемой задачи. Первый состоит в использовании встроенной в пакет MAT- LAB функции polyfit(x,y,n), возвращающей значения коэффициентов п полинома n-й степени р(х) = в порядке уменьшения степеней, /=о который с наименьшей среднеквадратичной погрешностью аппроксимирует табличные данные, занесенные в векторы х, у. Данный метод реализуется следующей последовательностью команд: » х = 0:15; % задание моментов времени из табл. 2.1 » у = [83 77.7 75.1 73.0 71.1 69.4 67.8 66.4 64.7 63.4 62.1 61.0 59.9 58.7... 57.8 56.6]; » N = length(x); » xl = х’; » yl = log(y)'; » s = polyfit(xl,yl,l); % вычисление коэффициентов полинома » t = 0:0.01:x(N); % задание дискретной переменной для вычисления % значений аппроксимирующей функции » Т = exp(polyval(s,t)); % вычисление значений % аппроксимирующей функции » plot(x,у,'o',t,T,'MarkerSize',2) % визуализация исходных данных % и аппроксимирующей функции Второй способ состоит в использовании функции Isqcurvefit, решающей за- дачу нелинейного метода наименьших квадратов, записанную в форме (2.17): 37
Компьютерное моделирование физических процессов в пакете МА TLAB min U=1 (2.29) Данная функция входит в пакет Optimization, который расширяет воз- можности пакета MATLAB в области решения задач оптимизации, систем нелинейных уравнений и задач апроксимации. Для решения задачи сначала создадим m-файл, содержащий определение минимизируемой функции: function Z = MNK(s,xdata) % определение минимизируемой функции (2.29) N=length(xdata); k=l:N; Z=exp(s(l)*xdata(k)+s(2)); который сохраним на жестком диске в каталоге, предлагаемом пакетом MATLAB, по умолчанию под именем MNK.m. Далее необходимо выполнить в командном окне следующую последова- тельность команд: » xdata = 0:15; % задание моментов времени из табл. 2.1 » ydata = [83 77.7 75.1 73.0 71.1 69.4 67.8 66.4 64.7 63.4 62.1 61.0 59.9... 58.7 57.8 56.6]; % задание значений температуры из табл. 2.1 » s0=[-0.1 3]; % задание начального приближения » [s,resnorm] = lsqcurvefit('MNK',sO,xdata,ydata) После выполнения приведенной выше последовательности команд в ра- бочем окне будет выведена следующая информация: Optimization terminated successfully: Relative function value changing by less than OPTIONS.TolFun s = -0.0241 4.3749 resnorm = 21.8311 (Оптимизация успешно завершена Относительное отклонение функции меньше, чем OPTIONS.TolFun) Здесь переменная s, содержит значения искомых параметров функции (со- ответственно а и b), resnorm - сумму квадратов отклонений, вычисляемых в соответствии с (2.19), (2.20). 38
2. Модели физических процессов, использующие дифференциальные уравнения 1-го порядка Отметим, что существует возможность настроить пакет Optimization, установив значения соответствующих опций пакета. Общий список опций пакета можно получить, выполнив команду » optimset DerivativeCheck: [ on I {off} ] Diagnostics: [ on I {off} ] DiffMaxChange: [ positive scalar {le-1} ] DiffMinChange: [ positive scalar {le-8} ] Display: [ off I iter I notify I final ] GoalsExactAchieve: [ positive scalar I {0} ] GradConstr: [ on I {off} ] GradObj: [ on I {off} ] Hessian: [ on I {off} ] HessMult: [ function!{[]}] HessPattern:[sparse matrix {sparse(ones(NumberOfVariables))} ] HessUpdate: [ dfp I gillmurray I steepdesc I {bfgs} ] Jacobian: [ on I {off} ] JacobMult: [ function I ([]) ] JacobPattern: [ sparse matrix I {sparse(ones(Jrows Jcols))} ] LargeScale: [ {on} I off ] LevenbergMarquardt: [ on I off ] LineSearchType: [ cubicpoly I {quadcubic} ] MaxFunEvals: [ positive scalar ] Maxlter: [ positive scalar ] MaxPCGIter: [positive scalar I {max(l,floor(numberOfVariables/2))}] MeritFunction: [ singleobj I multiobj ] MinAbsMax: [ positive scalar I {0} ] PrecondBandWidth: [ positive scalar I {0} I Inf ] TolCon: [ positive scalar ] TolFun: [ positive scalar ] TolPCG: [ positive scalar I {0.1} } TolX: [ positive scalar ] TypicalX: [ vector I {ones(NumberOfVariables,l)} ] Подробное описание каждой опции приведено в документации, постав- ляемой вместе с пакетом MATLAB. Например, для того, чтобы включить вывод в командное окно значения функции, минимизирующей (2.29), на каждом шаге итерации следует выполнить следующую команду: 39
Компьютерное моделирование физических процессов в пакете MATLAB »[s,resnorm] = lsqcurvefit('MNK',sO,xdata,ydata,",",optimset('display','iter')) Norm of First-order Iteration Func-count f(x) step optimality CG-iterations 1 4 50659 1 5.09e+004 0 2 7 50659 2.74811 5.09e+004 1 3 10 50659 0.687029 5.09e+004 0 4 13 20192.1 0.171757 8.05e+004 0 5 16 12355.5 0.343514 2.14e+004 1 6 19 1885.55 0.687029 5.35e+003 1 7 22 50.9973 0.34649 4.55e+003 1 8 25 21.8404 0.0314554 14 1 9 28 21.8311 0.000625592 1.3 1 10 31 21.8311 5.9392e-006 0.0179 1 Optimization terminated successfully: Relative function value changing by less than OPTIONS.TolFun s = -0.0241 4.3749 resnorm = 21.8311 Здесь использована функция optimset('display','iter'), позволяющая ус- тановить значение опции display равным iter. Для отмены вывода в ко- мандном окне какой-либо информации о процессе вычислений следует на- брать команду »[s,resnorm] = lsqcurvefit(’MNK’,sO,xdata,ydata,",",optimset('display','ofF)) s = -0.0241 4.3749 resnorm = 21.8311 Задача 2.1 Постройте на одном чертеже аппроксимирующие функции, коэффици- енты которых вычислены каждым из трех вышеперечисленных мето- дов. Сравните сумму квадратов отклонений между табличными значе- ниями и значениями аппроксимирующих функций, полученными при ис- пользовании функций polyfit и Isqcurvefit. 40
2. Модели физических процессов, использующие дифференциальные уравнения 1-го порядка Задача 2.2* Для изучения точности метода Эйлера можно воспользоваться анали- тическим решением ОДУ (2.1), которое записывается в виде T(t) = Ts-(Ts-T0) e-r‘, (2.30) где Ts - температура окружающей среды, То - начальная температу- ра тела . 1. Выберите значение коэффициента г, соответствующее реальному про- цессу, и внесите необходимые изменения в документ, описанный в раз- деле 2.3, чтобы найти численное решение уравнения (2.1). Задайте вре- менной интервал, на котором будет находиться численное решение, шаг интегрирования At, температуру окружающей среды и начальную температуру жидкости в чашке. Постройте на одном чертеже точ- ное и численное решения. 2. Вычислите разность между численным и точным решениями для сле- дующих значений шага интегрирования At = 0.1, 0.05, 0.025, 0.01 и 0.005. Зависит ли разность между численным и точным решениями от време- ни? Нарисуйте график разности как функцию At. Будет ли эта раз- ность убывающей функцией At? Если разность между точным и анали- тическим решениями при заданном значении t пропорциональна (At)n, то численный метод называется методом п-го порядка точности. Какой порядок точности у метода Эйлера? 3. Какой шаг необходимо выбрать, чтобы точность 0.1% достигалась в момент времени t = 1? Какой необходимо выбрать величину шага At, чтобы точность 0.1% достигалась в момент времени t = 5? Задача 2.3 Процесс зарядки изначально незаряженного электрического конденса- тора в RC-цепи (рис. 2.4), к которому в момент времени t = 0 приложе- но напряжение U, описывается ОДУ первого порядка R^Q = V-~ (2.31) dt С с начальным условием Q(o) = 0. 1. Найдите численное решение уравнения (2.31), задав следующие характе- ристики цепи R = 2000 Ом, С ~ 10'6 Ф, V = 10 В. Как зависит заряд Задачи 2.1, 2.2, 2.3 взяты автором из [2]. Заметим, что T(t = О) = Ts - (Ts — То ) = То , a T(t —> со) = Ts . 41
Компьютерное моделирование физических процессов в пакете MATLAB на конденсаторе от времени? Увеличивается ли заряд до бесконечного значения или происходит его насыщение? R I------------- .=—U "С Рис. 2.4. Электрическая схема зарядки = = конденсатора 2. Один из методов определения точности численного решения заключает- ся в повторении вычислений с меньшим шагом и сравнении полученных результатов. Если в обоих результатах совпадают п десятичных цифр, то можно предположить, что совпадают и следующие десятичные знаки. Какой необходимо выбрать шаг, чтобы получить решение с тре- мя правильными десятичными знаками в момент времени t = 0.005 с? 3. Каковы особенности численного решения уравнения (2.31) и значений ша- гов М = 0.005, 0.004, 0.003? Приводит ли малое изменение шага к боль- шому изменению вычисляемой величины Q? Устойчив ли метод Эйлера для любой величины шага? Задача 2.4 Предположим, что начальная температура кофе 90°С, однако начи- нать пить кофе можно, когда температура опустится ниже 60 °C. Предположим, что вы можете добавить в кофе молоко, которое уменьшает температуру кофе на 5 °C. Для того чтобы охладить кофе до нужной температуры, вы можете поступить двумя способами: 1) добавить молоко при температуре кофе 90°С; 2) добавить молоко при температуре кофе 75 °C. В каком случае охлажде- ние кофе до 60 °C произойдет быстрее? (Ответ необходимо получить, выполнив численные расчеты.) 2.5. Решение дифференциальных уравнений методом Рунге-Кутта 4-го порядка Изучив разделы 2.1-2.3 и решив задачи 2.1-2.2, можно убедиться в извест- ных ограничениях метода Эйлера по точности, а так же в возникновении в ряде случаев неустойчивых решений. Эти недостатки определили необходимость разработки новых вычислительных алгоритмов. Их подробное описание заин- тересованный читатель может найти в списке литературы [2-6]. 42
2. Модели физических процессов, использующие дифференциальные уравнения 1-го порядка Несмотря на то, что не следует отдавать предпочтение одному какому- нибудь алгоритму, для наших дальнейших целей оказывается достаточным ограничиться одним вычислительным алгоритмом, который позволяет по- лучать устойчивые решения, отвечающие требованиям по точности, во всех рассмотренных нами задачах. Указанными свойствами обладает метод Рун- ге-Кутта 4-го порядка. Данный метод реализуется следующей итерацион- ной формулой [3]: Уп+\ = Уп +^^1(уп)+2^(уп)+2^з(уп)+^4(уп))> (2-32) О где к\, к2, к2, к4 - поправки, вычисляемые по формулам к1=Лхп’Уп)’ к2 = f(xn + &х/2,уп+Ахк{/2), (2.33) кз = Лхп + А*/2, Уп + /2), к4 =/(^+Дх>Уп+ду)- Условие сходимости данного метода записывается в виде [3] ЛхЛ < 2.78, (2.34) где Л. коэффициент, входящий в модельное уравнение dy — + Лу = О, Л = const > 0, х > 0, у(0) = у0. (2.35) dx Решение задачи Коши методом Рунге-Кутта 4-го порядка в пакете MATLAB реализовано в виде функции ode45. Данный метод рекомендуется использовать при первой попытке нахождения численного решения задачи. Помимо данной функции в пакете MATLAB реализованы и другие ме- тоды решения дифференциальных уравнений и систем ОДУ: ode23 - функция реализует одношаговые явные методы Рунге-Кутта (2 и 3) порядков. Функция используется при решении нежестких систем ОДУ обеспечивает удовлетворительную точность при меньших, нежели функция ode45 временных затратах. odell3 - функция реализует многошаговый метод Адамса-Башворта- Мултона переменного порядка. Функция используется при необходимости обеспечить высокую точность численного решения. odelSs — функция реализует многошаговый метод переменного порядка (от 1 до 5 по умолчанию), основанный на формулах численного дифферен- цирования. Данный метод следует использовать в том случае, если не уда- ется найти численное решение с помощью функции ode45. 43
Компьютерное моделирование физических процессов в пакете MATLAB ode23s - функция реализует одношаговый метод, использующий моди- фицированную формулу Розенброка 2-го порядка. Данной метод обеспечи- вает более высокую скорость вычислений по сравнению с другими метода- ми при относительно более низкой точности вычислений. ode23t - функция реализует метод трапеций с интерполяцией. Данный метод используют при решении уравнений, описывающих колебательные системы с почти гармоническим выходным сигналом. ode23tb - функция реализует неявный метод Рунге-Кутта в начале ин- тервала интегрирования и далее метод, использующий формулы обратного дифференцирования 2-го порядка. Данный метод обладает большей скоро- стью. нежели метод odelSs при, соответственно, меньшей точности. Все перечисленные выше функции, называемые в документации пакета Solver (решатель), могут решать системы ОДУ явного вида y' = F(t, у). Кроме того решатели odelSs, ode23s, ode23t и ode23tb системы дифферен- циальных уравнений неявного вида M(t, у)у' = F(t, у), а также все решате- ли, кроме ode23s, могут решать уравнения вида М (у)у' = F(t, у). Для решения дифференциального уравнения (2.1) сначала создаем т-файл, содержащий определение функции, стоящей в правой части уравнения (2.1): function. Z=Tempr(t,T) % определение функции, стоящей в правой части уравнения (2.1) global Ts г Z(l)=-r*(T-Ts); который сохраним на диске под именем Tempr.m. Далее необходимо выполнить в командном окне следующую последова- тельность операторов: » global Ts г % объявление глобальных переменных » Ts = 22 % задание значения температуры окружающей среды » г = 0.024 % задание значения коэффициента остывания » ТО = 80 % задание начальной температуры тела » [t,T]=ode45('Tempr',[0:0.01:15],T0); % Tempr - имя файла, % содержащего определение функции, стоящей в правой части % уравнения (2.1); [0:0.01:15] - вектор, определяющий интервал % интегрирования, ТО - вектор начальных условий » plot(t,T) После выполнения приведенной выше последовательности команд будет создано окно, содержащее график зависимости температуры тела от време- ни, представленный на рис. 2.5. 44
2. Модели физических процессов, использующие дифференциальные уравнения 1-го порядка во.-----------------------г------- ----. --------------- 78 - 76 \ 74- ?2г 70- 'ч ч 68 г X 64 г 'V', I \ 62о 5 10 15 Рис. 2.5. Численное решение уравнения теплопроводности, возвращенное функцией ode45 По умолчанию решатели систем ОДУ пакета MATLAB используют па- раметры, относительная погрешность которых не превосходит перемен- ной RelTol = 10‘3, граница абсолютной погрешности численного решения - переменная AbsToI - равна 10-6. Для изменения значений этих переменных используется команда » options = odesetfRelTol', le-4,' AbsToI', le-4); предваряющая команду вызова функции решателя системы ОДУ. Задача 2.5 Решите задачи 2.1, 2.2, используя вместо функции, реализующей метод Эйлера, функции ode45, ode23, odel5s, ode23s, ode23t, ode23tb. Проведи- те сравнительную оценку точности данных методов, сравнив числен- ные и точные решения. 2.6. Моделирование радиоактивного распада Ядерный распад зависит только от внутренних свойств данного типа атомного ядра. Особенность атомных ядер состоит в том, что они могут распадаться. Вероятность распада описывается выражением: _ скорость распада _ 1 dN количество ядер N dt 45
Компьютерное моделирование физических процессов в пакете МА TLAB где У(г) - количество ядер в образце в момент времени t, dN - количество ядер, распавшихся за время dt dN = N(t)-N(t+dt). (2.36) Тогда скорость распада определяется как — = -WN. (2.37) dt Уравнение (2.16) называется уравнением распада. Оно является ОДУ первого порядка с разделяющимися переменными, которое может быть лег- ко проинтегрировано. Его решение имеет следующий вид N(t)= Noe~W ‘, (2.38) где No - число ядер в момент времени t = 0. Задача 2.6 Найдите численное решение уравнения (2.16), используя функции ode45, ode23, ode!5s, ode23s, ode23t, ode23tb. Сравните точные численные ре- шения уравнения (2.17), полученные разными методами. Как меняется точность численного решения при изменении шага интегрирования? 2.7. Моделирование цепной реакции ядерного взрыва В 1938 г. было открыто деление атомного ядра при попадании в него нейтрона. При этом оказалось, что ядро распадается на две части с одно- временным вылетом 2-3 нейтронов. Осколки ядра под действием кулонов- ских сил приобретают кинетическую энергию, которая затем переходит в тепловую энергию кристаллической решетки. В свою очередь, образовав- шиеся нейтроны могут попасть в другие ядра, что опять приведет к делению ядра с появлением дополнительных нейтронов и т. д. Данное явление полу- чило название цепной реакции. В том случае, если число нейтронов на каж- дом последующем шаге больше числа нейтронов на предыдущем шаге про- исходит рост числа осколков в геометрической прогрессии. В результате происходит ядерный взрыв. Для описания цепной реакции используется следующая математическая модель. Будем рассматривать ядро U235 как шарик радиуса R. Нейтрон, двигаясь со скоростью г, за время dt захватит цилиндрический объем V V =7Г-R2-v-dt. (2.39) 46
2. Модели физических процессов, использующие дифференциальные уравнения 1-го порядка Нейтрон вызовет деление ядер, находящихся в данном объеме. Количе- ство делений, вызванных одним нейтроном, за время dt: N-V-a - N-Tt-R1 vadl, (2.40) где a - вероятность распада ядер, N - концентрация ядер. Удобно преобразовать (2.19), введя величину ср = a -rc R2 (называемую сечением деления), характеризующую способность ядер данного вещества к делению под действием нейтронов: N-V-а = N-ar v-dt. (2.41) Будем предполагать, что при единичном акте деления образуется /7 ней- тронов и один нейтрон поглощается. Тогда, изменение числа нейтронов за время dt, определяется выражением dn = п • N • <тг v • dt • (/.z --1), (2.42) где п - количество нейтронов. Уравнение (2.43) является ОДУ первого порядка. Решение уравнения (2.43) n(t)= п0 exp(w<rr • v -/ -(/7 — 1)). (2.44) Оценим порядок величины n(t) для образца со следующими параметра- ми: плотность образца р = 18г/см3 , р = 2.5, ср = 1.6-10'24 см2, v= 2-109 см/с. Так как для выбранной плотности вещества концентрация ядер N=~P_.na » 4.6-1022 ом-3, (2.45) то за время 10'6 с начальное количество нейтронов увеличивается в =4 О26 раз, т. е. происходит ядерный взрыв. При построении модели мы предполагали, что все образовавшиеся ней- троны участвуют в делении, поэтому даже один свободный нейтрон будет вызывать ядерный взрыв. Однако этот вывод не соответствует опытным данным, которые показывают, что ядерный взрыв может происходить, только при определенных условиях. Данное обстоятельство свидетельствует о необходимости уточнения модели ядерного взрыва. Это уточнение состо- ит в учете того обстоятельства, что часть образовавшихся нейтронов может покидать образец, не участвуя в дальнейшем делении ядер. Окончательно модель, учитывающая рождение и вылет нейтронов, опи- сывается следующим уравнением: — = (а-Ь)-п, (2.46) dt здесь а = N ср-v(p-Г). (2.47) 47
Компьютерное моделирование физических процессов в пакете MATLAB , k'V Л 1оч Ь= - - , (2.48) Rn1'" где k - дополнительный множитель, учитывающий реальное уменьшение плотности нейтронов, - характерный размер образца урана . Из (2.46) видно, что существует линейный размер образца, называемый критическим радиусом RKp , для которого а -Ь = 0, Ь R =-------*------. (2.49) Р N Масса образца, соответствующая критическому радиусу (критическая масса), определяется как 4 ч Мкр = з^р-р. (2.50) Для реального U235 М = 50 кг при критическом радиусе 8.5 см. Задача 2.7 Считая образец, изготовленный из U235, сферическим, исследуйте по- ведение решений уравнения (2.46) при различных значениях массы образ- ца. (Указание. Изобразите на одном чертеже зависимости n(t), полу- ченные при различных значениях массы образца). ЛИТЕРАТУРА 1. Самойленко А. М., Кривошея С. А., Перстюк Н. А. Дифференциальные уравнения: приме- ры и задачи. М.: Высшая школа, 1989. 2. Гулд X., Тоболчник Я. Компьютерное моделирование в физике. М.: Мир, 1990. 3. Самарский А. А. Введение в численные методы. М.: Наука, 1987. 4. Бахвалов Н. С. Численные методы. М.: Наука, 1975. 5. Березин И С., Жидков Н.П. Методы вычислений. Ч. 1. М.: Наука, 1966. 6. Марчук Г. И. Методы вычислительной математики. М.: Наука, 1980. Вид зависимости коэффициента b от линейных размеров образца очевиден из следующих соображений. Количество нейтронов, выходящих из образца, прямо пропорционально скорости их движения и площади поверхности образца и обратно пропорционально количеству ядер, содержащихся в данном образце. Так как пло- щадь поверхности пропорциональна квадрату линейного размера образца, а коли- чество ядер - его объему, т. е. куб)1 линейного размера, то коэффициент b будет обратно пропорционален линейному размеру. 48
Глава 3 ДИНАМИКА МАТЕРИАЛЬНОЙ ТОЧКИ 3.1. Введение Большинство задач, связанных с определением закона движения тела в близи земной поверхности, имеют известные аналитические решения. Не- смотря на это, мы считаем полезным вновь вернуться к этим задачам и по- лучить их решения с помощью ПК. Так как на примере их решения можно продемонстрировать наиболее общие приемы и подходы к решению физи- ческих задач на ПК. При решении данных задач используется простейшая модель, в которой не учитываются возможные вращения и внутренние дви- жения тела, т. е. реальное физическое тело заменяется идеализированным объектом, не обладающим внутренней структурой - материальной точкой. Задача описания закона движения материальной точки традиционно рас- сматривается в кинематике, где движение материальной точки рассматрива- ется безотносительно причины ее вызывающей , и в динамике, где рассмат- риваются силы, действующие на тело. В соответствии со вторым законом Ньютона ускорение Я, с которым движется тело, прямо пропорционально действующей на него силе F (а если сил, приложенных к материальной точке, несколько, то их равнодействующей, т. е. векторной сумме сил) и об- ратно пропорционально его массе т: F а = -. (3.1) т В общем случае сила F зависит от положения точки, характеризуемого радиусом-вектором г(г), скорости v(r) и времени F = F(T,V,t). Тот факт, что силы, действующие на тело, не зависят от производных скорости, явля- ется свойством природы, но не следствием математического описания. Это свойство позволяет найти простые объяснения для многих наблюдаемых на практике движений. Так как по определению dv d2r а = - = - з , dt dt2 Данный подход уже был использован нами в гл. I.
Компьютерное моделирование физических процессов в пакете МАTLAB то зависимость скорости от времени описывается уравнением dv F dt in (3.2) а зависимость координаты от времени - то для описания движения материальной точки необходимо решить ОДУ второго порядка относительно координаты (3.3), которое для тела с посто- янной массой эквивалентно системе ОДУ первого порядка Для описания движения тела с переменной массой необходимо решать уравнения (3.2), (3.3), в которых т в данном случае является функцией времени. 3.2. Движение тел в гравитационном поле Земли без учета трения Рассмотрим задачу об одномерном движении материальной точки с по- стоянной массой в гравитационном поле Земли. В соответствии с законом всемирного тяготения сила, действующая на тело массы т, равна /Мт gm (3.5) где у - расстояние от поверхности Земли, R - радиус Земли, у - гравитаци- онная постоянная, М - масса Земли, g = уМ / R . При этом на первом шаге будем считать силу тяжести постоянной, что справедливо, как видно из (3.5), для y/R « 1. Выберем систему отсчета, с положительным направлением координат- ной оси вверх (рис. 3,1). Подставляя (3.5) в (3.3), получаем уравнение движения в выбранной сис- теме отсчета (З.б) 50
3. Динамика материальной точки Рис. 3.1. Система координат, используемая для описания движения тела в гравитационном поле Земли (3.7) (3.8) Данное уравнение является ОДУ второго порядка, для которого задача Коши ставится заданием начальных условий: значений координаты у(о) = у0 и скорости v(o) = у'(о) = v0. Аналитический ответ получается по- следовательным интегрированием (3.6): y(f)=yo+vo-r + ^g-r2. Рассмотрим последовательность действий, реализующих решение этой задачи в пакете MATLAB с начальными условиями у(0) = 10, у'(0) = 1- Поскольку описанные выше решатели работают с системами ОДУ, при- веденными к форме Коши, то необходимо систему второго порядка привес- ти к системе ОДУ первого порядка, введя новую переменную dt Тогда уравнение (3.6) принимает следующий вид: dz -dt=~S- Уравнения (3.9), (3.10), образующие систему ОДУ первого порядка, можно записать в матричном виде d (/1 _ ( z Запись системы в виде (3.11), позволяет создать m-файл, содержащий описание вектор-функции, стоящей в правой части (3.11): (3.9) (3.10) (З.И) function dy=Angle(t,y) global g dy=zeros(2,l); % задание вектора-столбца размерности 2x1 % задание координат вектор-функции, стоящей % в правой части (3.11) 51
Компьютерное моделирование физических процессов в пакете MATLAB dy(l)=y(2); dy(2)=-g; и сохранить его на диске под именем Angle.m. Далее необходимо выполнить в командном окне следующую последова- тельность команд: » global g % объявление глобальной переменной % задание начальных условий » у0=10; » vO=l; » [t,y]=ode45('Angle',[0:0.01:1.5],[у0 v0]); % решение системы ОДУ (3.11) » figure(l); plot(t,y(:,l)); % построение зависимости у = y(t) % графическом окне № 1 » figure(2); plot(t,y(:,2)); % построение зависимости у' = y’(t) % графическом окне № 2 После выполнения приведенной выше последовательности команд на экране монитора появляются два независимых стандартных графических окна. В окне с названием Figure № 1 отображается зависимость координаты от времени (рис. 3.2), в окне с названием Figure № 2 отображается зависи- мость скорости от времени (рис. 3.3.) о 0.5 1 15 Рис. 3.2. Зависимость координаты материальной точки от времени 52
3. Динамика материальной точки Задача 3.1 1. Сравните зависимости скорости и координаты от времени, задаваемые выражениями (3.7), (3.8), с аналогичными зависимостями, полученными численным решением уравнения (3.6). Какова точность численного ре- шения? 2. Постройте зависимость скорости от координаты. 3. Постройте зависимость пройденного пути материальной точки от времени. 4. Постройте зависимости кинетической и потенциальной энергий от вре- мени. 5. Одним из фундаментальных законов физики является закон сохранения энергии, в соответствии с которым полная энергия материальной точ- ки, движущейся в гравитационном поле Земли, должна оставаться по- стоянной. Проверьте полученное численное решение ОДУ на соответ- ствие этому закону. С какой точностью выполняется закон сохранения энергии и чем можно объяснить обнаруженные расхождения? Рис. 3.3. Зависимость скорости материальной точки от времени Задача 3.2 Точное уравнение движения, полученное подстановкой выражения для силы тяжести, действующей на тело в гравитационном поле Земли, (3.5) в выражение (3.3), имеет вид: 53
Компьютерное моделирование физических процессов в пакете МА TLAB 1. Постройте зависимость ускорения свободного падения от высоты подъема материальной точки над поверхностью Земли. 2. Получите численное решение уравнения (3.12) и сравните его с соответ- ствующим решением уравнения (3.6) для выбранных ранее начальных ус- ловиях. Сколь велико отличие этих решений? 3. Сравните решения уравнений (3.6) и (3.7) при различных значениях на- чальной высоты. Начиная с каких высот гравитационное поле Земли нельзя считать однородным? 4. Постройте зависимости кинетической и потенциальной энергий от вре- мени. 5. Проверьте полученное численное решение ОДУ на соответствие закону сохранения энергии. С какой точностью выполняется закон сохранения энергии? Задача 3.3 Шарик, имеющий небольшой радиус (по сравнению с чем?), падает с высоты h на упруго отражающую поверхность. 1. Разработайте программу, позволяющую исследовать движение шарика, падающего с заданной высоты на отражающую поверхность, предпо- лагая, что удар является абсолютно упругим. 2. Постройте зависимости координаты, скорости, перемещения от времени и скорости от координаты. 3. Исследуйте движение шарика при неабсолютно упругом ударе. Рассмотрим двумерное движение материальной точки в гравитационном поле Земли, описываемое уравнением (3.3). В системе отсчета, показанной на рис. 3.4, уравнение (3.3) эквивалентно следующей системе ОДУ второго порядка: ^=0 f . (3.13) Система уравнений (3.13) заменой переменных — = zi, — = z2 сводит- dt dt ся к системе линейных уравнений первого порядка: 54
3. Динамика материальной точки dx dt=Z> dt dy _ dt "2 dz-> = ~s dt (3.14) Для решения задачи Коши данной системы следует задать четыре на- чальных условия %(0), х'(о), у(о), у'(о), а также создать m-файл, содер- жащий определение вектор-функции, стоящей в правой части системы ОДУ (13.14), состоящий из следующих строк: function dy=Anglel(t,y) global g % объявление глобальной переменной % задание вектора-столбца размерности 4x1 dy=zeros(4,l); % задание координат вектор-функции, стоящей в правой % части (3.11) dy(l)=y(2); dy(2)=0; dy(3)=y(4); dy(4)=-g; который следует сохранить на диске в файле Anglel.m. Далее необходимо выполнить в командном окне следующую последова- тельность команд: » global g % объявление глобальной переменной % задание начальных условий » хО = 0; » vxO = 2; » у0 = 0; » vyO = 5; % решение системы ОДУ (3.14) » [t,X]=ode45(’Angler,[0:0.01:1.019],[хО vxO уО vyO]); % построение зависимости х = x(t) графическом окне № 1 » figure(l); plot(t,X(:,l)); title('x=x(t)'); 55
Компьютерное моделирование физических процессов в пакете МА TLAB % построение зависимости у - y(z) графическом окне № 2 » figure(2); plot(t,X(:,3)); title('y=y(t)'); % построение зависимости х - х'(?) графическом окне № 3 » figure(3); p!ot(t,X(:,2)); title('vx=vx(t)'); % построение зависимости у' = y'(z) графическом окне № 4 » figure(4); plot(t,X(:,4)); title('vy=vy(t)'); % построение зависимости у = у(х) графическом окне № 3 » figure(5); plot(X(:,l),X(:,3)); title('y=y(x)'); Задача 3.4 1. Выберите начальные условия и решите систему уравнений (3.10). 2. Постройте зависимости х = х(г), у = y(t), vx-x'(t), vv = y'(t), VX =vx(x), Vv =vv(x), y = y(x). 3. Найдите аналитическое решение системы ОДУ (3.10). Сравните зави- симости x = x(f), у = у(?), vx = x'(z), vv = y'(f), vx=vx(x), vv=vy(x), у - y(x), задаваемые аналитическими выражениями, с аналогичными зависимостями, полученными численным интегрированием. 4. Постройте зависимость перемещения материальной точки и угла меж- ду вектором скорости и осью оХ от времени. 5. Постройте зависимости кинетической и потенциальной энергий от вре- мени. 6. Проверьте полученное численное решение ОДУ на соответствие закону сохранения энергии. С какой точностью выполняется закон сохранения энергии? 3.3. Движение в гравитационном поле Земли с учетом силы трения В предыдущем параграфе мы рассмотрели движение тел в гравитационном поле Земли без учета сил сопротивления, действующих на тело со стороны сре- ды, через которую оно движется. При движении реальных тел в газовой или жидкой средах, как показывают результаты экспериментов, сила трения являет- ся главным фактором, который определяет характер движения тела. О силе сопротивления, действующей на движущееся в среде тело, из- вестно, что она (за исключением некоторых отдельных случаев) растет с ростом скорости. Наиболее общими зависимостями силы сопротивления от скорости являются 56
3. Динамика материальной точки F(/(v) = *1v, (3.15) (3.16) где параметры зависят от свойств среды и геометрии тела. Особо от- метим, что зависимости (3.15), (3.16) не являются точными законами физи- ки, а представляют собой феноменологические выражения, приближенно описывающие функцию Fd (v) в некоторых диапазонах скоростей. При относительно малых скоростях сила сопротивления описывается выражением (3.15). Для тел, имеющих относительно простую форму, из- вестны аналитические выражения коэффициентов к{. Например, для шари- ка радиуса г коэффициент сопротивления задается формулой Стокса ку=6ярг, (3.17) где ц - динамическая вязкость среды. Числовые значения плотности и ди- намической вязкости различных сред при t = 20 °C и давлении 1 атм пред- ставлены в табл. 3.1. Таблица 3.1 Воздух Вода Глицерин КГ Р, ~ м 1,29 1-103 1,29-103 Н-с А. 2 м 0.0182 1.002 1480 (3.18) (3.19) Представляет практический интерес оценить величину предельной ско- рости V! движения шара, падающего вертикально, т. е. скорости движения при которой сила тяжести будет равна силе трения. Подставив (3.17) в (3.11), запишем данное условие в виде (улр rv\=mg, откуда _ mg _ 4/3 лг3/?# _ 2ггpg 1 бл/zr блрг 9р где р - плотность тела. Значения предельной скорости V] для шара радиуса г = 0.1 м, р = = 0.8-103 кг/м3 (дерево) представлены в табл. 3.2. 57
Компьютерное моделирование физических процессов в пакете MATLAB Таблица 3.2 Воздух Вода Глицерин v, м/с 960 17 0.012 При больших скоростях сила сопротивления описывается выражением (3.12). Из экспериментов о величине к2 известно, что она пропорциональна площади поперечного к потоку сечения тела S, плотности среды р и зависит от формы тела. Данную зависимость принято выражать следующей формулой £2=-с5р0, (3.20) где с - безразмерный коэффициент (коэффициент формы), характеризую- щий лобовое сопротивление, р0- плотность среды. Известные значения ко- эффициентов формы для некоторых тел, представлены в табл. 3.3. Таблица 3.3 Диск Полусфе- ра Полусфе- ра Шар «Капле- видное тело» «Капле- видное тело» 1.11 1.33 0.55 0.4 0.045 0.1 Проведем аналогичные оценки предельной скорости v2 для квадратич- ного закона сопротивления. Приравнивая силу сопротивления и силу тяже- сти, имеем откуда или с5 у v2 = т8 , v2 = } Р i с^2р0 (3.21) (3.22) (3.23) 58
3. Динамика материальной точки Значения предельной скорости у2 для шара радиуса г = 0.1 м, р = = O.81O3 кг/м3 (дерево) представлены в табл. 3.4. Таблица 3.4 Воздух Вода Глицерин V, м/с 18.0 0.65 0.58 Сравнение результатов, представленных в табл. 3.2 и 3.4, показывает, что при движении тела в воздухе и воде vj«v2 • Это означает, что при движении тела в этих средах преобладающей будет сила сопротивления, квад- ратичная по скорости, которая сделает движение тела равномерным при значи- тельно меньших скоростях, нежели линейная часть силы сопротивления. Для дальнейшего анализа особенностей движения тел в гравитационном поле Земли при наличии силы сопротивления удобно измерять скорость движения в единицах установившейся скорости v1, v2. В выбранных едини- цах измерения выражения (3.11), (3.12) принимают следующий вид: ( \ I v = mg — , w г \2 v Fd = м — w ( У Fd = *2V2 “ =mg — Рассмотрим падение тела вертикально вниз с нулевой начальной скоро- стью при наличии силы сопротивления. Так как сила сопротивления зависит от скорости при аналитическом решении данной задачи, удобно использо- вать уравнения движения в форме (3.2) \2 V 1 (3.24) (3.25) dv mg-Fd _ dt m mg-mg — -mg\ — | / = ~g 1~~ v2 V V т vi \vi) (3.26) которое, как очевидно, является уравнением с разделяющимися перемен- ными и может быть легко проинтегрировано аналитически. Повторным ин- тегрированием зависимости v=v(f) находят зависимость координаты мате- риальной точки от скорости. Дополнив уравнение (3.26) уравнением (3.27) — = v, dt 59
Компьютерное моделирование физических процессов в пакете MATLAB получаем систему дифференциальных уравнений, которую можно решить в пакете MATLAB численно. В связи с тем, что выше мы подробно обсудили методы решения ОДУ второго порядка в пакете MATLAB, далее мы приводим только текст т- файла, содержащего описание вектор-функции, стоящей в правой части системы уравнений (3.26), (3.27): function Z=Friction(t,y) global g,vl,v2 dy=zeros(2,l); % задание координат вектор-функции, стоящей в правой части % системы (3.26), (3.27) dy(l)=y(2); dy(2)=-g*(l-y(2)/vl-(y(2)/v2)A2); ~ Задача 3.5 1. Для значений предельной скорости, представленных в табл. 3.2, 3.4, ре- шите уравнение движения (3.26) и постройте зависимости v = v(f), v = v(y) 2. Решите уравнения движения (3.26), предполагая наличие в правой части только линейного и квадратичного членов. Сравните полученные реше- ния с предыдущим решением. Какие можно сделать выводы? 3. Сравните зависимости у = y(f), v = v(t), v = v(y), полученные без учета и при учете силы сопротивления. Можно ли считать реалистичной мо- дель движения тела в гравитационном поле Земли, не учитывающую на- личие силы трения? 4. Решите уравнения движения, не предполагая постоянства силы тяжести. Задача 3.6 Заметим, что уравнение движения (3.23) описывает только частный случай - падение с нулевой начальной скоростью. Получим более общее уравнение движения, справедливое при любых начальных условиях. Так как сила сопротивления всегда направлена против направления скоро- сти. то при движении тела в положительном направлении оси oY сила сопротивления отрицательна, и наоборот, при движении тела в отри- цательном направлении оси oY сила сопротивления положительна, в то время как сила тяжести всегда направлена в отрицательном направле- нии оси oY. Эти условия наиболее просто выразить, используя знаковую функцию sgn(x) 60
3. Динамика материальной точки Г 1, при л > О 1, при х < О (3.28) При произвольном направлении движения вдоль оси oY выражение (3.24), (3.25) для сил сопротивления принимает следующий вид: Fd = - sgn(v)-mg\ А2 С / х V Fd = -sgn(v)-mg — к V2 ) (3.29) (3.30) Подставив (3.29), (3.30) в (3.22) получаем уравнение движения тела dv _ _>n_g_jKjL dt т l + sgn(v)-- + sgn(v)- V1 (3.31) 1. Для значений предельной скорости, представленных в табл. 3.2, 3.4, ре- шите численно уравнение движения (3.31) и постройте зависимости у = y(t), v = v(t), v - v(y) (в пакете МА TLAB функция, возвращающая знак переменной, имеет вид sign(uMn nepeMeuHou). 2. Решите уравнения движения (3.28), предполагая наличие в правой части только линейного и квадратичного членов. Сравните полученные реше- ния с предыдущим решением. Какие можно сделать выводы? 3. Сравните зависимости у = y(t),v = v(f),v = v(y), полученные без учета и при учете силы сопротивления. На сколько отличаются максимальные высоты подъема тела при учете и без учета силы трения? 61
Компьютерное моделирование физических процессов в пакете MATLAB Задача 3.7 При движении материальной точки массой т с начальной скоростью v0, направленной под углом 0О к горизонту (рис. 3.4), на материальную точку действуют сила тяжести и сила сопротивления Fd, направлен- ная противоположно скорости V (рис. 3.5). Уравнения движения тела в данном случае имеют следующий вид: COS (9 (3.32) где |v| = ^v2x + v2 . Так как cos# = vx/|v|,sin# = vy/|v|, то уравнения системы (3.32) преобразуются к виду Лгу dt2 1 dy |vj dt (3.33) 1. Выберите начальные условия и решите систему уравнений (3.33). 2. Постройте зависимости x = x(t), y = y(t), vx=x'(t), vv=y'(t), vx=vx(x), vv =vv(x), y = y(x). 3. Постройте зависимости перемещения материальной точки и угла меж- ду вектором скорости и осью оХ от времени. 4. Сравните полученные результаты с результатами задачи 3.1. ЛИТЕРАТУРА 1. Гулд X., Тобочник Я. Компьютерное моделирование в физике. Часть 1. М.: Мир, 1990. 2. Хеннер Е. К., Шестаков А. П. Математическое моделирование. Пермь: Пермский государ- ственный педаготический университет, 1995. 3. Матвеев А. Н. Механика и теория относительности. М.: Высшая школа, 1986. 4. Аппель П. Теоретическая механика. М.: ГИФМЛ, 1960. 62
Глава 4 ЗАДАЧА КЕПЛЕРА 4.1. Введение Задача о движении планет в поле тяжести небесных светил, являющаяся частным случаем задачи о движении в поле центральных сил, известна на протяжении нескольких тысячелетий истории человечества и в настоящее время рассматривается как в школьных курсах физики, астрономии, так и в вузовских курсах классической механики и астрономии. Большую часть наших знаний о движении планет объединили в себе за- коны Кеплера, полученные на основе анализа данных астрономических на- блюдений, которые формулируются следующим образом. 1. Всякая планета движется по эллиптической орбите, в одном из фоку- сов которой находится Солнце. 2. Скорость планеты возрастает по мере удаления от Солнца таким обра- зом, что прямая, соединяющая Солнце и планету, в равные промежутки вре- мени заметает одинаковую площадь. 3. Для всех планет, вращающихся вокруг Солнца, отношение T2/R3 оди- наково (Г - период обращения планеты вокруг Солнца, R - большая полуось эллипса). Отметим, что получить аналитическое решение задачи Кеплера удается только в случае рассмотрения движения двух тел, взаимодействующих по закону обратных квадратов. Это решение рассматривается во всех учебни- ках по классической механике, только малая часть из которых приведена в списке литературы [1-3]. Задача Кеплера для трех и более тел аналитиче- ского решения не имеет, может быть решена только численно. Поэтому в этой главе основное внимание мы уделяем численному решению уравнений движения тела в центральном поле. 4.2. Уравнения движения планет В качестве отправной точки решения задачи Кеплера рассмотрим дви- жение двух тел, взаимодействующих друг с другом, считая их при этом ма- териальными точками. Функция Лагранжа такой системы имеет вид .7 .7 .7 -2 +-»Л + Л"»_ (41) 2 2 КI 2.2 2 2 И-Г,|
Компьютерное моделирование физических процессов в пакете MATLAB (4.3) (4.4) (4.5) (4.6) (4.7) где г,, г2" радиусы-векторы первого и второго тела, соответственно, -r2l) - потенциальная взаимодействия тел, у- гравитационная посто- янная. Введем вектор взаимного расстояния обоих тел Т=-1\-Г2. (4.2) Тогда в системе отсчета с началом координат в центре масс, рассматри- ваемой системы тел, т\Л + т2г2 = 0. Из (4.2), (4.3) находим т~, f\ = -- Г, mi + т2 т} г2 = г. т1 + т2 Подставляя (4.4), (4.5) в (4.1) получаем , тг2 Тл д mi"2 ут(т,+т2) L =----Ч-и if I =--+ U 2 Щ-Г2| где введено обозначение т,т2 т = —2——. «1| +/и2 Величину определяемую в соответствии с (4.7), принято называть при- веденной массой. Функция (4.6) формально совпадает с функцией Лагранжа одной материальной точки с массой т, движущейся в поле с потенциалом U симметричным относительно начала выбранной системы отсчета. Таким образом, задача о движении двух взаимодействующих тел сводится к решению задачи о движении одного тела с массой т в заданном внешнем поле n(fj), создаваемом неподвижным центром с массой т1+пг2. Отме- тим, что если масса одного из взаимодействующих тел значительно меньше массы другого тела, последнее можно рассматривать как неподвижный при- тягивающий центр, и найденная зависимость f(z) будет описывать траекто- рию движения более легкого тела. В противном случае, решив задачу о движении тела с массой т в потенциале по зависимости r(t) в соот- ветствии с (4.4), (4.5), находят траектории каждой частицы ?](г). г2(г). 64
4 Задача Кеплера Воспользовавшись уравнениями Лагранжа (здесь обобщенными коорди- натами являются координаты радиуса-вектора Г, обобщенными скоростя- ми - координаты вектора г ) -- 2L = _ (4.8) dt д t д Г получим уравнение движения тела d2f у т(т} +7Ит) .. т и Г , (4.9) dt которое при /и, » т2 принимает вид в полном соответствии с законом всемирного тяготения Ньютона. Отметим два важных свойства силы тяготения, вытекающих из (4.10): 1) сила зависит только от расстояния между телами; 2) сила направлена по прямой, проходящей через центры взаимодействующих тел. Такие силы на- зываются центральными. Можно показать [1], что следствием указанных свойств является сохранение момента импульса тела Г = [гхр], (4.11) где р = тг . Сохранение момента импульса, в свою очередь, означает, что траектория движения тела в центральном поле лежит в плоскости, которой перпенди- кулярен вектор L. Кроме того, движение тела ограничивается условиями сохранения полной энергии (4.12) 2 и величины Г- г! ymim.+m^f ,. [Г х £]- г —- 1--- - const. (4.13) Г Для решения уравнений движения выберем прямоугольную систему ко- ординат, начало которой находится в центре масс (рис. 4.1). (Отметим, что в отличие от аналитического решения, наиболее просто получаемого в поляр- ной системе координат, численное решение задачи Кеплера более удобно проводить в декартовой системе координат.) 3—1576 65
Компьютерное моделирование физических процессов в пакете MATLAB Рис. 4.1. Система координат, используемая для описания движения тел, под действием силы гравитационного взаимодействия Уравнения движения (4.9) в выбранной системе координат имеют сле- дующий вид d2x _ ут^гщ+т (4.14) m d2y = ym(ml+m2) d2t ~ lr|3 Введя обозначение M - m} + m2 и сократив общие множители, запишем выражения (4.14), (4.15), составляющие систему ОДУ второго порядка, в виде d2x у М dt2 ( -> (4.15) (4.16) d2y dt2 у М ----- (4.17) Предваряя численное решение системы уравнений (4.16), (4.17), прове- дем обезразмеривание этих уравнений. Если в качестве единиц измерения расстояния и времени выбрать радиус орбиты R и период обращения Т, со- ответствующие движению тела по окружности, то можно ввести безразмер- ные переменные X = x/R, Y = y/R, т = t/T . Выполнив в (4.16), (4.17) за- мену переменных х-+Х, у—>У, t-ьт, получаем d2X _ у МТ2 dr X , (4.18) d2Y It2 у МТ2 -------„у . , v2Y, (4.19) 66
4. Задача Кеплера Как известно, при движении тела по окружности величина центростре- мительного ускорения а связана с радиусом круговой орбиты |/?| и скоро- стью тела !v| соотношением f При движении в гравитационном поле по окружности центростреми- тельное ускорение обусловлено гравитационной силой. Следовательно, i ,2 _ у тМ (4.20) откуда находим I* л (4.21) X1/2 у М И (4.22) Выражение (4.21), являясь общим условием для любой круговой орбиты, позволяет найти зависимость периода движения от радиуса орбиты. Период движения т = 2л- к /г) (4.23) поэтому, подставив в (4.22) выражение (4.21), получим з 4л-2 R Т = у\------ уМ Подставляя выражение (4.23) в (4.18), (4.19), получаем окончательно обезразмеренную систему уравнений d2X _ 4л-2 - - л , dr /-у (4.24) (4.25) d2Y dr2 4л-2 у .з 1 ' (4.26) Из уравнений (4.24), (4.25) видна их универсальность - они не зависят ни от периода обращения тела вокруг центра поля, ни от радиуса орбиты. 67
Компьютерное моделирование физических процессов в пакете MA TL AB Следовательно, величина Т1 /R3 , входящая в (4.17), (4.18), одинакова для всех тел, совершающих движение в гравитационном поле по замкнутым траекториям. Данный результат является доказательством справедливости третьего закона Кеплера. При решении системы диф- ференциальных уравнений будем считать, что в начальный момент времени тело находилось в точке с радиусом-вектором г = (/?,0), скорость тела была направлена вертикально вверх v=(0,v) (рис. 4.2). Так как система уравнений (4.24), (4.25) является безразмерной, необхо- димо также привести к безразмерному виду начальные условия. Выполнив, Рис. 4.2. К выбору начальных условий численного интегрирования уравнений движения как и выше, замену переменных f = p-R, t = т Т, приводим начальные ус- ловия к следующему виду: Р = (1,0), ( т\ V = 0,v— . V R) (4.27) (4.28) где Т определяется выражением (4.24). Однако использовать конкретные числовые значения R, Т, М для про- верки законов Кеплера не требуется, так как безразмерные начальные усло- вия также обладают известным универсализмом. Для того, чтобы это пока- зать, найдем безразмерную скорость тела, движущегося в гравитационном поле по окружности. Подставив (4.23) в (4.28), получаем V = (0,2л-). (4.29) Следовательно, для получения орбит, отличных от круговых, достаточно задавать значения начальной скорости, отличные от 2л. 4.3. Численное моделирование орбиты Предваряя нахождение численного решения системы уравнений (4.25), (4.26), приведем ее эквивалентной системе уравнений первого порядка, вы- полнив замену переменных X -> Zj, X' -> z2 , Y —> z3, ¥' -> z4: 68
4. Задача Кеплера dzx dr dz2 _ __4tt2yz± dr г, dz4 dr dz^ dr 4 л-2 -z 3 (4.30) Следуя общим правилам решения систем обыкновенных дифференци- альных уравнений первого порядка в пакете MATLAB, создадим ш-файл Orbitm, содержащий определение вектор-функции, стоящей в левой части системы (4.30): function dy=Orbit(t,z) dy=zeros(4,l); % задание вектора-столбца размерности 4x1 % задание координат вектор-функции, стоящей % правой части (4.30) dy(l)=z(2); dy(2)=-4*piA2*z(l)/(z(l)A2+z(3)A2)A(3/2); dy(3)=z(4); dy(4)=-4*piA2*z(3)/(z(l)A2+z(3)A2)A(3/2); Далее необходимо выполнить в командном окне следующую последова- тельность команд: % задание начальных координат х(о), у(о) » х0=1; » у0=0; % задание начальных скоростей х'(о) у '(о) » vx0=0; » vy0=2*pi*1.2; » [t,Y]=ode45('Orbit',[0:10A-5:2.5],[x0 vxO y0 vyO]); » figure(l); plot(t,Y(:,l)); % построение зависимости x = x(t) (рис. 4.3) » figure(2); plot(t,Y(:,2)); % построение зависимости x - x'(t) (рис. 4.4) » figure(3); plot(t,Y(:,3)); % построение зависимости у = y(r) (рис. 4.5) » figure(4); plot(t,Y(:,4)); % построение зависимости y' = y'(t) (рис. 4.6) » figure(S); plot(Y(:,l),Y(:,3)); % построение траектории движения (рис. 4.7) 69
Компьютерное моделирование физических процессов в пакете MATLAB Зависимости кинематических характеристик от времени и траектория движения представлены на рис. 4.3-4.7. Рис. 4.3. Зависимость х = x(f) Для отображения на одном чертеже траектории материальной точки и притягивающего центра необходимо выполнить следующую последова- тельность команд: » X0=0;Y0=0; % задание координат притягивающего центра » plot(Y(:,l),Y(:3),X0,Y0,'o','MarkerSizc'^); Для вычисления эксцентриситета орбиты необходимо выполнить сле- дующую последовательность команд: » MinX=min(Y(:,l)); % вычисление минимального элемента % в первом столбце матрицы Y » MaxX=max(Y(:,l)); % вычисление максимального элемента % в первом столбце матрицы Y » a=(MaxX-MinX)/2; % вычисление длины первой полуоси » MinY=min(Y(:,3)); % вычисление минимального элемента % во втором столбце матрицы Y » MaxY=max(Y(:,l)); % вычисление максимального элемента % во втором столбце матрицы Y » b=(MaxY-MinY)/2; % вычисление длины второй полуоси % вычисление эксцентриситета » ifb<=a 70
4. Задача Кеплера е=(1-(Ь/а)л2)л0.5 else е=(1-(а/Ь)л2)л0.5 end 0.4386 -2----------- J- -----------1----- . —I.. _. J... --------- о 0 5 1 1 5 2 2.5 Рис. 4.5. Зависимость у = 71
Компьютер}юе моделирование физических процессов в пакете MATLAB । Рис. 4.6. Зависимость у' = y'(t) Рис. 4.7. Траектория движения 4.4. Проверка второго закона Кеплера Для проверки второго закона Кеплера необходимо провести сравнение площади, заметаемой радиусом-вектором за равные промежутки времени, используя значения кинематических характеристик движения тела в грави- тационном поле, полученные численным решением системы ОДУ (4.30), возвращенные в матрицу У. Напомним, что размерность матрицы У, содер- жащей решения системы ОДУ, Ух 4; нумерация столбцов и строк матрицы 72
4. Задача Кеплера начинается с первого значения; значения x(t),x'(t), y(t), y’{l) содержатся со- ответственно в 1-м, 2-м, 3-м, 4-м столбцах матрицы. Так как решение уравнений движения проводится на равномерной временной сетке, то для задания начального и конечного значений временного интервала, в течение которого вычисляется площадь сектора, заметаемого радиусом-вектором, достаточно указать номер соответст- вующей строки матрицы Y и количество используемых точек (т. е. длину временного интервала). При достаточно малом шаге интегрирования Az уравнений движения (определяемым количеством точек N, в которых ищется решение системы ОДУ, Az = Tfinish/N) площадь, заметаемая радиусом-вектором за время Az, примерно равна площади треугольника с вершинами в точках (0,0), (у(л, 1),У(л, З)), (у(л +1,1), У(п +1,3)) (см. рис. 4.8). f. Yin + 1,1 (Fm +l,3ii Рис. 4.8. К объяснению вычислительного алгоритма проверки второго закона Кеплера Для вычисления площади треугольника, у которого заданы координаты вершин, можно воспользоваться формулой Герона s = 4р{р-а\р~ь\р-с) ’ (4.31) где р - полупериметр треугольника, изображенного на рис. 4.8, а, Ь, с - длины его сторон: а=л/у(п,1)2+У(п,з)2 , (4.32) b = +1,1)2 + У(п, 3)2 , (4.33) с = Л/[г(/1+1,1)-У(п,1)]2+{у(п + 1,3)-У(п,3)]2 . (4.34) Однако программа вычисления площади сектора, заметаемого радиусом- вектором, получается более компактной, если использовать встроенную в пакет MATLAB функцию cross, вычисляющую векторное произведение трехмерных векторов. Как известно из аналитической геометрии, площадь треугольника, изображенного на рис. 4.8, равна 73
Компьютерное моделирование физических процессов в пакете MATLAB 5 = ^|[ях^]|, (4.35) поэтому алгоритм вычисления площади сектора, заметаемого радиусом- вектором, реализуется следующей последовательностью действий: 1. Задание начального момента времени и длины временного интервала, на котором вычисляется площадь, заметаемая радиусом-вектором. 2. Присвоение координатам вектора Я, соответствующих значений ко- ординат орбиты (У(п, 1) = 0 , У(л, 3) = 1, z = 0) в момент времени f(n). 3. Присвоение координатам вектора Я, соответствующих значений координат орбиты (г = 0), в момент времени t(n +1). 4. Вычисление площади треугольника AS , заметаемого радиусом-векто- ром на временном интервале [г(и), t(n +1)]. 5. Нахождение площади, заметаемой радиусом-вектором на временном интервале [г(1), г(п +1)], суммированием известной площади, заметаемой ра- диусом-вектором на интервале [t(l), t(n)], и AS . При составлении программы, реализующей описанный вычислительный алгоритм, мы исходили из следующих предположений: 1. Материальная точка в момент времени /(1) = 0 находится в точке с ра- диусом-вектором (У (1,1) = 1, У (1,3) = о). 2. Длительность временного интервала, на котором получено численное решение системы ОДУ (4.30), такова, что материальная точка совершает не более 1,25 оборота. Так как нам заранее неизвестно точное значение периода одного оборота материальной точки вокруг притягивающего центра, в программе мы нахо- дим его численно, определяя при этом номер Nm соответствующего элемен- та вектора. Кроме того, следует учесть, что периодичность движения при- водит к следующим правилам вычисления номера текущей координаты ра- диуса-вектора: п, если п < Nm (4.36) п - Nm, если п > Nm Далее приводится листинг m-файла KeplerLow2.ni, содержащий функ- цию KeplerLow2, реализующую описанный выше алгоритм. function z=KeplerLow2(t,Y,Tstart,dT) % функция, возвращающая площадь, заметаемую % радиусом-вектором 74
4. Задача Кеплера % t,Y - переменные, возвращенные одним из решателей систем ОДУ % Tstart - начальный момент времени % dT - длительность временного интервала dt=t(2)-t(l); % шаг интегрирования ОДУ Nstart=ceil(Tstart/dt)+l; % вычисление номера начальной координаты dN=ceil(dT/dt); % число шагов Nstop=Nstart+dN; % номер последней координаты % вычисление значения Nm i=length(Y); while Y(l,l)<Y(i,l) Nm=i-1; i=i-l; end; Nlength=Nm; % вычисление площади, заметаемой радиусом-вектором s=0; for i=Nstart:Nstop % проверка условий (4.30) if i<Nlength-l xl=[Y(i,l) Y(i,3) 0]; x2=[Y(i+l,l) Y(i+1,3) 0]; end; if i==Nlength xl=[Y(i,l) Y(i3) 0]; x2=[Y(l,l) Y(l,3) 0]; end; if i>Nlength xl=[Y(i-Nlength,l) Y(i-Nlength,3) 0]; x2=[Y(i+l-Nlength,l) Y(i+1-Nlength,3) 0]; end; s=s+norm(cross(xl,x2))/2; end; z=s; Для обращения к функции KeplerLow2, после нахождения численных решений системы ОДУ (4.30) следует ввести команду » KepIerLow2(t,Y,2.0,0.5) ans = 1.8882 75
Компьютерное моделирование физических процессов в пакете MATLAB Представляет определенный интерес, не только вычислить площадь сек- тора, заметаемого радиусом-вектором, но и изобразить данный сектор на рисунке вместе с траекторией тела. Для этого необходимо модифицировать функцию KeplerLow2 таким образом, чтобы она возвращала помимо зна- чения площади, заметаемой радиусом-вектором, координаты притяги- вающего центра и радиуса-вектора в соответствующие последователь- ные моменты времени и затем использовать функцию patch. Ниже при- веден листинг ш- файла KeplerLow.m, содержащего модифицированную функцию KeplerLow: function [z,Xr,Yr]=KeplerLow(t,Y,Tstart,dT) % функция, возвращающая площадь, заметаемую радиусом-вектором. % и координаты соответствующих точек орбиты % t,Y - переменные, возвращенные одним из решателей систем ОДУ % Tstart - начальный момент времени % dT - длительность временного интервала dt=t(2)-t(l); % шаг интегрирования ОДУ; Nstart=ceil(Tstart/dt)+l; % вычисление номера начальной координаты dN=ceil(dT/dt); % число шагов Nstop=Nstart+dN; % вычисление номера начальной координаты х(1)=0; у(1)=0; % координаты притягивающего центра % вычисление значения Nm i=length(Y); while Y(i,l)<Y(i-l,l) Nm=i-1; i=i-l; end; Nlength=Nm; % вычисление площади, заметаемой радиусом-вектором s=0; m=l; for i=Nstart:Nstop m=m+l; % проверка условий (4.30) if i<Nlength-l xl=[Y(i,l) Y(i,3) 0]; x2=[Y(i+l,l) Y(i+1,3) 0]; end; if i==Nlength xl=[Y(i,l) Y(i,3) 0]; 76
4. Задача Кеплера x2=[Y(l,l) Y(l,3) 0]; end; if i>Nlength xl=[Y(i-Nlength,l) Y(i-Nlength,3) 0]; x2=[Y(i+l-Nlength,l) Y(i+1-Nlength,3) 0]; end; s=s+norm(cross(x 1 ,x2))/2; x(m)=xl(l); y(m)=xl(2); end; x(m+l)=x2(l); y(m+l)=x2(2); z=s; Xr=x; Yr=y; Для вычисления площади, заметаемой радиусом-вектором, и визуализа- ции сектора необходимо выполнить следующую последовательность ко- манд: » [z,Xr,Yr]=KeplerLow(t,Y,0.5,l/0); % обращение к функции KepIerLow »p!ot(Y(:,l),Y(:,3)); % построение орбиты » patch(Xr,Yr,'g'); % визуализация сектора Результат выполнения описанной последовательности команд представ- лен на рис. 4.9. Рис. 4.9. Траектория движения и сектор, заметаемый радиус вектором на временном интервале [0.5,1] 77
Компьютерное моделирование физических процессов в пакете MATLAB Задача 4.1 1. Проведите расчеты при различных значениях начальной скорости и убе- дитесь, что для безразмерных скоростей, незначительно меньших или превосходящих 2 я, орбита является замкнутым эллипсом, в одном из фокусов которого находится Солнце. Это является иллюстрацией пра- вильности первого закона Кеплера. 2. Убедитесь в том, что при задании начальных условий й(о) = (1,0), V(0) = (0,2л-) орбита является круговой. 3. Вычислите значения нормировочных переменных для системы Солнце-Земля. 4. Реальные значения параметров движения орбиты Земли составляют: период обращения Т = 3.156107 с, линейная скорость движения по ор- бите v = 29.75 103 м/с, радиус орбиты Земли R = 1.49610й км. Исполь- зуя эти данные, определите эксцентриситет орбиты Земли е и сравни- те это значение со значением, известным из эксперимента (е = 0.0167). Объясните обнаруженные отличия. 5. Определите значение начальной скорости, при которой происходит падение тела на центр поля. Чему равно значение полной энергии системы в этом случае? Каковы значения этой скорости для системы Солнце — Земля? 6. Определите значение начальной скорости, при которой тело может удалиться от притягивающего центра на бесконечно большое расстоя- ние. Чему равно значение полной энергии системы в этом случае? Како- вы значения этой скорости для системы Солнце - Земля? 7. Проведите численные эксперименты и найдите зависимость эксцентри- ситета орбиты и периода обращения от величины начальной скорости. 8. Изменяя номер начальной точки, убедитесь в выполнении третьего за- кона Кеплера. 9. Оцените точность, с которой выполняется второй закон Кеплера. Ка- кой параметр определяет точность сохранения указанной величины? 10. Убедитесь в существовании интегралов движения, описываемых вы- ражениями (4.12, 4.13). Задача 4.2 Рассмотрите динамические эффекты, обусловленные малым отклоне- нием силы притяжения от закона обратных квадратов (соответст- венно потенциала от закона 1//|Л предположив, что "W'-pV I I где S « 1. 78
4. Задача Кеплера 1. В чем отличие орбиты тела, двигающегося в новом потенциале, от ор- биты тела, двигающегося в потенциале 1/|г ? Убедитесь в том, что по- лученный результат не зависит от шага интегрирования. 2. При каких начальных условиях планета будет двигаться вокруг центра притяжения по раскручивающейся или по закручивающейся спирали? 3. Один из способов описания траектории движения тела - рассмотрение ее как эл- липтической орбиты, которая медленно по- ворачивается (прецессирует) в направлении движения тела. Количественно прецессия характеризуется углом между прямыми, проходящими через последовательные пери- гелии и фокус эллипса (рис. 4.10). Оцените величину этого угла для выбранных пара- метров орбиты и значения 5. 4. Предложите алгоритм и составьте программу, позволяющую автома- тизировать процедуру вычисления угла прецессии. 5. Используя составленную программу, зафиксируйте значение 6 и иссле- дуйте зависимость угла прецессии ср от длины большой полуоси а не- возмущенного эллипса. Постройте график соответствующей зависимо- сти. Оцените функциональную зависимость угла прецессии от длины большой полуоси эллипса. (Указание. Постройте график зависимости <р = ср(а) в логарифмическом масштабе*.) 6. Используя составленную программу, зафиксируйте длину большой полуоси эллипса а и исследуйте зависимость угла прецессии <р от величины 5. По- стройте график соответствующей зависимости. Оцените функциональ- ную зависимость угла прецессии <р от величины 5. (Указание. Постройте график зависимости <р-([>(§) в полулогарифмическом масштабе.) Задача 4.3 Для тела, совершающего движение в потенциале Для построения графика функции в полулогарифмическом масштабе использу- ется функция semilogy. Например, для построения графика функции е ' на интер- вале [0,1.5] следует ввести следующую последовательность команд: » х = 0:0.61:1.5; >> semilogy(х,ехр(-хл2)); 79
Компьютерное моделирование физических процессов в пакете MATLAB I. Напишите систему уравнений движения тела. 2. Для безразмерных начальных условий х(о)= 1, y(0) = 0,x'(0)= I анали- тически получите значение безразмерной скорости, обеспечивающей движение тела по окружности. 3. Получите численное решение уравнений движения, постройте зависи- мость кинематических характеристик от времени и орбиту тела. Под- берите шаг, обеспечивающий получение круговой орбиты в течение не- скольких периодов. 4. Внесите несущественные изменения в значения начальной скорости, обеспечивающей существование круговой орбиты. Какой будет новая орбита? Чему равна величина полной энергии? Задача 4.4 Используя описанную программу, проведите исследование влияния воз- мущений на орбитальную станцию, движущуюся по круговой орбите вокруг Земли: 1. Как меняется орбита станции, если за счет включения на короткое вре- мя двигателя пристыкованной к ней ракеты-носителя станция получи- ла приращение скорости Av в радиальном направлении? 2. Как зависит это изменение от величины приращения скорости в ради- альном направлении и его длительности? 3. Установите, меняется ли угловой момент и полная энергия под действи- ем радиального возмущения? 4. Будет ли орбита устойчивой, т. е. будет ли малый переданный радиаль- ный импульс вызывать малые возмущения орбиты, а также будет ли орбита оставаться периодической при отсутствии возмущений при дальнейшем движении? 5. Проведите исследования устойчивости в случае движения тела в потен- циале t/jjri)- под действием радиальных сил. 6. Как меняется орбита станции, если за счет включения на короткое вре- мя двигателя, пристыкованной к ней ракеты-носителя, станция полу- чила приращение скорости Av в касательном (тангенциальном) направлении? 7. Как зависит это изменение от величины приращения скорости в танген- циальном направлении и его длительности? 8. Установите меняется ли угловой момент и полная энергия под действи- ем тангенциального возмущения? 80
4. Задача Кетера 9. Будет ли орбита устойчивой, т. е. будет ли малый переданный танген- циальный импульс вызывать малые возмущения орбиты, а также будет ли орбита оставаться периодической при отсутствии возмущений при дальнейшем движении? 10. Исследуйте устойчивость орбиты в случае движения тела в потенциа- ле —-у под действием тангенциальных сил. г\ Задача 4.5 Известно, что от Солнца в направлении Земли существует поток час- тиц, называемый солнечным ветром, который приводит к возмущению орбиты движущегося тела. Воздействие солнечного ветра на движу- щееся тело можно рассматривать, как действие слабой постоянной силы IV, действующей на тело в горизонтальном направлении. 1. Запишите уравнения движения, описывающие движение тела в гравита- ционном поле при учете солнечного ветра. 2. Промоделируйте орбиту при различных значениях величины W. 3. Как меняется орбита тела? 4. Что происходит с интегралами движения при учете солнечного ветра? 4.5. Пространство скоростей Ранее в разд. 4.2 мы описали программу, позволяющую строить орбиту тела, двигающегося в потенциале р।, т. е. график зависимости у = у(х). О данной зависимости говорят, что она построена в пространстве коор- динат {х, у}. Можно поступить совершенно аналогично и построить график зависимости vy =гу(гг)(ряд последовательных значений вектора скорости тела), который представляет собой траекторию движения тела в простран- стве скоростей {vv,vv}. Далее в этом разделе мы более подробно обсудим вопрос о том, какую форму имеет орбита в пространстве скоростей, если в пространстве координат орбита является эллипсом. Для описания орбиты в пространстве скоростей воспользуемся интегра- лом движения (4.13), который в предположении /И]» т2 имеет вид 81
Компьютерное моделирование физических процессов в пакете MATLAB И ко1 (4.37) где, как и ранее, М =mt + т2, т2=т; r0 = (х0,у0)~ радиус-вектор тела в начальный момент времени. Запишем (4.37) в координатной форме: ( |Г| утМх > mvf\L\ kl XI 1 |_| = ( 1Г| утМх0 > mvv0!L| |Г г, утМу$ mvxo\L !_ (4.38) < }Г\ ; 1 ко ; Из (4.39) найдем с =--- утМ y = -Lr.\mvx\L\-Axo') утМ где А -mv Лх0 ~ mvx0Н I- I koi Ay0=mvv0|L| + и. ио! (4.39) (4.40) (4.41) Возведя в квадрат выражения для х, у в (4.39), сложив их, и учитывая, что к!2 = х2 + у 2, получаем Сравнив (4.42) с выражением для окруж- ности радиуса R, центр которой смещен отно- сительно начала координат в точку с коорди- натами (Х0,У0) (рис. 4. И) (х-Х0)2+(у-У0)2 =Я2, (4.43) приходим к выводу о том, что в пространстве скоростей орбита тела представляет собой ок- ружность радиуса (4.44) „ утМ к' = ~Т 82
4. Задача Кеплера центр которой находится в точке ЛуО ^хО . \ц ’ ') можно записать в виде где v = й + й>, Г 4у° Ахо I W ’ l£U’ . Поэтому скорость частицы (4.45) (4.46) й - вектор, проведенный из начала координат в центр окружности, w - вра- щающийся вектор, модуль которого равен радиусу окружности Rv. Отметим, что в каждый момент времени радиус-вектор планеты г пер- пендикулярен вектору й>. Для доказательства данного факта достаточно вычислить скалярное произведение векторов w и Г (гя>)=(г-р)-(гй). Используя (4.39), (4.46) найдем (г-р) = х-тх + у-ту (f-a) = хих + уих = (4.47) (4.48) (4.49) Г Луо Ахо *~\Ц ' J’ -So ' упМ( \Е\ \П х) Подставив (4.48), (4.49) в (4.47), находим, что скалярное произведение векторов w и Т равно нулю, т. е. вектора являются взаимно перпендикулярными. Так как в разделе 4.2. было получено численное решение в безразмерных Переменных, для проверки сделанных выше выводов необходимо найти вы- ражения для безразмерных значений момента импульса L , радиуса окруж- ности Rv, выражений (4.40), (4.41), и, подставив последние в (4.42), полу- чить уравнение окружности в безразмерных переменных. Выбрав в качестве единиц измерения длины радиус круговой орбиты R, в качестве единиц измерения времени период движения по круговой орбите Т, найдем Г / R L = m[rxv] = m (г - /?)хI v — (4.50) где г = г , $ = $Т . R R 83
Компьютерное моделирование физических процессов в пакете MATLAB Подставляя (4.46) в (4.50) и учитывая (4.22), (4.24), находим ^; = 4Х. (4.51) \L Поступая аналогично, проводим обезразмеривание выражений (4.40), (4.41): 4o=viO-4^|° , <4.52) ^vo=^vo+ (4.53) Более подробное рассмотрение параметров орбит в пространстве скоро- стей можно найти в [6]. Чисто геометрическое рассмотрение происхожде- ния замкнутых орбит при движении тел в полях, обратно пропорциональ- ных расстоянию до центра, проведено в [7]. Задача 4.6 /. Получите самостоятельно выражения (4.51)-(4.53). 2. Убедитесь в том, что орбита в пространстве скоростей является окружностью, хотя в пространстве координат она является эллипсом. 3. Дополните документ, в котором проводится решение уравнений движе- ния тела в центральном поле, выражениями, позволяющими вычислять координаты центра окружности и ее радиус. 4. Используя численное решение уравнений движения, проверьте справедли- вость выражений (4.51)~(4.53). 5. Убедитесь в том, что в каждый момент времени радиус-вектор Т пла- неты перпендикулярен вектору скорости w. Как можно объяснить данный факт? 6. Исследуйте, как изменяется орбита в пространстве скоростей под действием импульсного удара в тангенциальном направлении. 7. Исследуйте, как изменяется орбита в пространстве скоростей под дей- ствием импульсного удара в радиальном направлении. 8. Используя представление о том, что в каждый момент времени радиус- вектор г планеты перпендикулярен вектору скорости w, объясните наблюдаемое изменение орбиты в системе пространственных коорди- нат под действием импульсных, ударов в тангенциальном и радиальном направлениях. 9. Исследуйте изменение орбиты в пространстве скоростей под действи- ем солнечного ветра. 84
4. Задачи Кеплера 4.6. Моделирование Солнечной системы Ранее мы занимались моделированием орбит, рассматривая задачу двух сил. Однако реальные планетные системы не являются системами двух тел, так как между всеми телами действуют силы гравитационного взаимодейст- вия. Несмотря на то, что силы гравитационного взаимодействия малы по сравнению с силой притяжения к центральному светилу, в ряде случаев они приводят к реально наблюдаемым эффектам. Например, на основании не- совпадения экспериментальных данных об орбите планеты Уран и теорети- ческих расчетов было предсказано существование планеты Нептун. Учет взаимного влияния других тел, находящихся в гравитационном по- ле, создаваемом телом большой массы (Л/), означает, что полная сила, дей- ствующая на планету, уже не является центральной. Кроме того, в действи- тельности орбиты планет могут не лежать в одной плоскости (как, напри- мер, в Солнечной системе), поэтому для проведения точных расчетов необходимо решать задачу в трехмерном пространстве. Однако для пони- мания последствий влияния сил гравитационного взаимодействия между движущимися телами оказывается достаточно рассмотреть двумерную мо- дель, состоящую из двух тел, имеющих массу те,, т2 Для описания движения тел этой системы выберем прямоугольную систему координат, представленную на рис. 4.12. В выбранной системе координат в предположении, что М » тх + т2, функция Лагранжа имеет вид: т}г^ т2г2 у т,М ут2М у т}т2 —---------|----——|-----------|-------— -р---------. 2 2 |rj \Г2\ гп\ Воспользовавшись уравнениями Лагранжа (4.8) получим уравнения дви- жения тел: П 2 dt- у т\М _ у т{т2 ~ УУ” г* ~ Д~ У '12’ Д 1Й2 у т2М у т,Шу + - ^2- Kll 1'12! (4.55) (4.56) 85
Компьютерное моделирование физических процессов в пакете MATLAB Для нахождения численного решения системы уравнений (4.58), (4.59), как и было сделано выше, следует провести обезразмеривание уравнений движения. Выбрав в качестве единиц измерения длины и времени величи- ны, соответствующие движению по круговой орбите тела массой т1 в гра- витационном потенциале, создаваемом телом массой М, получаем Л2Х1=__________4/г2______Х)_ dT (х2-Х1)2+(Г2-И)2^ (457) -------------------(Х2-Х1) (х2-Х1)2 +(У2-Г1)2/ Ди----------------------- dT (Х2-Х1)2+(П-Г1)2> , (458) ------------------г(Y2- И) (Х2-Х1)2 +(K2-n)2J d2X2 4л-2 --2 =--------------- У Х1 + ... dT ((Х2-Х1)2 + (Г2-Г1)2^ 9) -----—3 (Х2-Х1) ((Х2-XI)2 +(Г2-Г1)2^ ------------------ dT ((Х2-Х1)2 +(У2-У1)2)& -------^S2-------у(Г2-И) ((Х2-Х1)2 + (У2-Г1)2/ где -т{/М , <£2 =т2/Л/ , XI, И, Х2, Y2- координаты радиусов-векторов соответственно. При решении системы дифференциальных уравнений будем считать, что в начальный момент времени тело массой гщ находилось в точке с радиу- сом-вектором = (/?|,0), скорость тела была направлена вертикально вверх 86
4. Задача Кеплера Vi = (О, V|), тело массой т2 находилось в точке с радиусом-вектором г2 = (Т?2,0) ( /?2 = /?1 ± АТ?), скорость тела была на- правлена вертикально вверх V2 = (0,v2) (рис. 4.13). Безразмерные начальные условия имеют вид А Л =f1±~-°y'“1 =f°>v!7L\ v2 = f°’v2“У <4-61^ k Kl J \ 71J k Л J Задача 4.7 Найдите решение системы уравнений движения (4.57) - (4.60), считая, что параметры орбит и массы движущихся тел совпадают с соответствующими параметрами Земли и Луны. 1. Постройте зависимости координат и скоростей движения обоих тел от времени. 2. Используя вычисленные значения координат, постройте зависимости координат от времени и орбиту Луны в системе отсчета, связанной Землей. Сравните полученные результаты с данными о движении Луны, приведенными в гл. 1. Задача 4.8 Исследуйте особенности движения системы трех тел, считая, что &R=0.6, =10'* I. 2 3 4, ф = 10'. v, = (0,2л-), V! = (0,2л/1.6). I. Постройте орбиты планет, считая, что взаимодействием между ними можно пренебречь. Чему равны их периоды обращения вокруг центра поля? 2. Постройте орбиты планет, решив систему (4.57) - (4.60). В чем качест- венно проявляется их взаимодействие? Опишите форму орбит. Почему влияние взаимодействия на одну из планет меньше, чем на другую? 3. Проверьте, сохраняются ли интегралы движения отдельно для первой и второй планет. Сохраняются ли полная энергия и полный момент обеих планет ? 4. Используя реальные астрономические данные, оцените степень влияния Юпитера на орбиту Земли. 87
Компьютерное моделирование физических процессов в пакете MATLAB ЛИТЕРАТУРА I Ландау Л. Д., Лифшиц Е М. Курс теоретической физики. Механика. М.:Физматгиз, 1958. 2. Гольдстейн Г. Классическая механика. М.: Мир, 1974. 3 Аппель II. Теоретическая механика. М.: ГИФМЛ, 1960. 4. Гулд X., Тобочник Я. Компьютерное моделирование в физике. Часть 1. М.: Мир, 1990. 5. Хеннер Е. К., Шестаков А. И. Математическое моделирование. Пермь: Пермский государ- ственный педагогический университет, 1995. 6. Abelson Н„ di Sessa A., Rudolph L. Velocity Space the Geometry of Planetary Orbits// Am. J. Phys., 43, 579, 1975. 7 dt Sessa, Orbits A. A mini-environment for exploring orbital mechanics// Computers in Edication, eds. O. Lecarrme, R. Ix-wis, 359, North-Holland, 1975. 88
Глава 5 МОДЕЛИРОВАНИЕ СТАТИЧЕСКИХ ЭЛЕКТРИЧЕСКИХ И МАГНИТНЫХ ПОЛЕЙ 5.1. Электрическое поле системы неподвижных зарядов Как известно, электрическое поле, создаваемое неподвижным точечным электрическим зарядом q в вакууме в данной точке пространства, характе- ризуется скалярным потенциалом ^)=41 (51) 4?Г£-0 |Л“Г| где R - радиус-вектор точки наблюдения, Т - радиус-вектор точки, в кото- рой находится электрический заряд, £0 ~ 8.85-1012 Ф/м. Векторной характе- ристикой данного поля является напряженность £ = -^) = L \(R..r). (5.2) 4^о Скалярный потенциал электрической системы, состоящей из N электри- ческих зарядов, qi,q2---QN > и напряженность электрического поля удовлет- воряют принципу суперпозиции: 1 N «-АУЛ. <5.3) 4ят0 ~ О 1 N e(«)=J |54> tootl'I/Ml где - координата /-го заряда. При анализе электростатических полей системы произвольно располо- женных зарядов, характеризующихся скалярной функцией - потенциалом <p(R) и векторной функцией - напряженностью E(R), возникает задача на- глядного представления этих величин. Один из возможных способов пред-
Компьютерное моделирование физических процессов в пакете MATLAB ставления потенциала электростатического поля <p(R) реализуется следую- щей последовательностью действий: 1) задание функции, которая возвращает значения потенциала, вычис- ляемые в соответствии (5.3) в узлах заданной координатной сетки; 2) задание дискретной координатной сетки; 3) вычисление в соответствии с (5.3) значения <р(Й) в каждом узле коор- динатной сетки; 4) построение графика поверхности и карты эквипотенциален. Следуя последовательности действий, описанной выше, создадим т- файл, содержащий описание функции <p(R): function Phi=Potential(q,xq,yq,X,Y); % задание функции, возвращающей значения потенциала в узлах % координатной сетки, вычисляемых в соответствии с (5.3) % q - вектор, содержащий значения электрических зарядов % xq, yq - векторы, содержащие х-е и у-е координаты электрических зарядов % X, Y - векторы, содержащие х-е и у-е координаты узлов сетки е0=8.85*10А-12; % диэлектрическая проницаемость вакуума Nq=length(q); % число зарядов в системе Nx=length(X); % число узлов по оси оХ Ny=length(Y); % число узлов по оси oY % проход по каждому узлу сетки for i=l:Ny for j=l:Nx s=0; % суммирование по зарядам for k=l:Nq s=s+q(k)/((X(j)-xq(k))A2+(Y(i)-yq(k))A2)A0.5; end; M(ij)=s/(4*pi*e0); end; end; Phi=M; Функция Potential возвращает матрицу размерности NyxNx, содержа- щую значения потенциала в соответствующих узлах координатной сетки. Вычислим потенциал, создаваемый системой, состоящей из W = 50 электри- ( Ю7?о Д ческих зарядов, расположенных в точках с координатами -5R0 +-------i , k N ) у,- =0, i = (рис. 5.1). Для проведения вычислений в качестве единиц 90
5. Моделирование статических электрических и магнитных полей измерения заряда будем использовать заряд электрона е = 1.6 10 16 Кл , единиц измерения длины - R0 = 10~6л<. -Г-’’ ----------------»»» * 999 999 Рис. 5.1 Решение данной задачи в пакете MATLAB выполняется следующей по- следовательностью команд: » е=1.6*10Л-16; % заряд электрона » R0=10A-6; % единица измерения расстояния » N=50; % число зарядов » i=l:N; » q(i)=e; % заполнение вектора, содержащего значения зарядов » xl=-5*R0; % х-я координата левого конца системы зарядов » x2=5*R0; % х-я координата правого конца системы зарядов » xq(i)=xl+(x2-xl)/N*i; % вычисление х-х координат системы зарядов I» yq(i)=0; % задание у-х координат системы зарядов » Nl=78; % число узлов прямоугольной координатной сетки » Xmin=-10*R0; Ymin=-10*R0; % задание координат нижнего левого угла % координатной сетки » Xmax=10*R0; Ymax=10*R0; % задание координат верхнего правого % угла координатной сетки »i=l:Nl+l; » X(i)=Xmin+(Xmax-Xmin)/Nl*(i+l); % вычисление х-х координат % узлов сетки »j=l:Nl; » Y(j)=Ymin+(Ymax-Ymin)/Nl*(j+l); % вычисление у-х координат % узлов сетки » M(ij)=Potential(q,xq,yq,X,Y); % вычисление значений % потенциала в узлах % координатной сетки » [Xl,Yl]=meshgrid(X,Y); % вычисление матриц XI ,У1, % используемых функциями % визуализации двумерных и 91
Компьютерное моделирование физических процессов в пакете MATLAB % трехмерных зависимостей » surf(Xl,Yl,M); % визуализация поверхности <р - <р(х, у) Результат выполнения приведенной выше последовательности ко- манд представлен на рис. 5.2. Рис. 5.3 Пакет MATLAB представляет пользователям широкой спектр возмож- ностей для визуализации функций, зависящих от двух переменных, с неко- торыми из которых нам представляется целесообразным познакомить чита- теля. Для построения отображения поверхности без изображения сетки и за- полнения поверхности с использованием интерполяции цвета дополнитель- но следует ввести команды: 92
5. Моделирование статических электрических и магнитных полей » figure(2); » surf(Xl,Yl,M); » shading interp Результаты их выполнения представлены на рис. 5.3. Для построения двумерной карты линий уровня (эквипотенциалей) функции ср = tp(x, у) следует ввести команды: » figure(3); » contour(Xl,Yl,M,33) % здесь 33 - число линий уровня Результат выполнения приведенных выше команд представлен на рис. 5.4. -8 -6 -4 -2 0 2 4 6 8 10 Рис. 5.4 Для вывода значений, соответствующих каждой эквипотенциали, необ- ходимо выполнить следующую последовательность команд: » figure(4); »[C,h] = contour(Xl,Yl,M); » clabel(C,h) » colormap cool результат выполнения которой представлен на рис. 5.5. Здесь команда contour возвращает матрицу С, содержащую координаты вершин ломаных, аппроксимирующих соответствующие эквипотенциаль- ные линии, вектор-столбец h дескрипторов для каждой линии уровня, ис- пользуемый далее командой clabel, и строит карту' линий уровня. Далее ко- 93
Компьютерное моделирование физических процессов в пакете MATLAB манда clabel, используя данные, возвращенные функцией contour, подпи- сывает значения функции на каждой линии уровня. Команда colonnap оп- ределяет цвет заливки карты линий уровня. Для отображения на одном чертеже поверхности и карты линий уровня следует выполнить команды: » figure(S); » meshc(Xl,Yl,M) Рис. 5.6 94
5. Моделирование статических электрических и магнитных полей Рис. 5.7 Для построения трехмерной карты линий уровня (эвипотенциалей) функции <р = <р(х, у) следует ввести команды: » figure(6); » contour3(Xl,Yl,M); Результаты выполнения данной последовательности команд представле- ны на рис. 5.8. Рис. 5.8 95
Компьютерное моделирование физических процессов в пакете MATLAB В отличие от функции <p(R), напряженность электростатического поля E\R) является векторной функцией, которая в каждой точке пространства характеризуется величиной поля и направлением. Для описания векторного поля будем использовать силовые линии - линии, касательные к которым в каждой точке параллельны вектору напряженности электрического поля. В связи с тем, что силовые линии несут информацию только о направлении вектора напряженности электрического поля, но не его величине, для ана- лиза изменения величины напряженности электрического поля в простран- стве будем использовать функцию |£($) . Таким образом, для исследования особенностей напряженности элек- трического поля, создаваемого произвольной конфигурацией электрических зарядов, следует: 1) задать в пространстве дискретную координатную сетку; 2) вычислить в узлах сетки координаты напряженности электрического поля E(R) = (Ex,Ey)\ ох (Ех 3) построить в каждом узле сетки единичные векторы П = - - , ка- ll^ сательные к силовой линии электрического поля; 4) построить график поверхности и карту линий уровня функции \Ё(ё), . Данный алгоритм в пакете MATLAB может быть реализован следующей последовательностью команд: » е=1.6*10л-16; % заряд электрона » R0=10A-6; % единица измерения расстояния » N=50; % число зарядов » i=l:N; » q(i)=e; % заполнение вектора, содержащего значения зарядов » xl=-5*R0; % х-я координата левого конца системы зарядов » x2=5*R0; % х-я координата правого конца системы зарядов » xq(i)=xl+(x2-xl)/N*i; % вычисление х-х координат системы зарядов I» уq(i)=0; % задание у-х координат системы зарядов » Nl=23; % число узлов прямоугольной координатной сетки » Xmin="l()*R0; Ymin=-10*R0; % задание координат нижнего % левого угла координатной сетки » Xrnax--10*RO: Ymax=10*R0; % задание координат верхнего % правого угла координатной сетки »i=l :N 1+1; » X(i)=Xmin+(Xnsax-Xmin)/Nl*(i+l ); % вычисление х-х координат 96
5. Моделирование статических электрических и магнитных полей % узлов сетки »j=l:Nl+l; » Y(j)=Ymin+(Ymax-Ymin)/Nl*(j+l); % вычисление у-х координат % узлов сетки » M(ij)=Potential(q,xq,yq,X,Y); % вычисление значений потенциала % в узлах координатной сетки »(Xl,Yl]=meshgrid(X,Y); % вычисление матриц X1.Y1, используемых % функциями визуализации двумерных % и трехмерных зависимостей » [px,py]=gradient(-M,0.1,0.1); % вычисление градиента функции % вычисление координат единичных векторов, касательных к силовой линии » рх1=рхУ(рх.Л2+ру.Л2).Л0.5; » ру1=ру./(рх.л2+ру.л2).л0.5; » figure(l); » quiver(Xl,Yl,pxl,py 1,0.5) % построение векторного поля единичных % векторов, касательных к силовой линии % в узлах координатной сетки » тр=(рх.Л2+ру.Л2).Л0.5; % вычисление абсолютных значений % вектора напряженности % в узлах координатной сетки » figure(2); » contour(Xl,Yl,mp,17); % построение линий равной напряженности Результаты выполнения приведенной выше последовательности команд по- казаны на рис. 5.9 (векторное поле), рис. 5.10 (линии равной напряженности). •0.5 0 0 5 1 1,5 х 10- Рис. 5.9 4—1576 97
Компьютерное моделирование физических процессов в пакете MATLAB Задача 5.1 Создайте документ, позволяющий строить потенциал и напряженность электрического поля диполя, считая, что составляющие его электрические заряды одинаковы по величине и противоположны по знаку. 1. Имеет ли значение в данной задаче в каких единицах измеряется заряд и расстояние? 2. Как изменится электрическое поле, если заряды будут иметь одинако- вые знаки? 3. Убедитесь в том, что силовые линии никогда не заканчиваются на по- ложительных зарядах и всегда идут к отрицательным зарядам. Почему силовые линии никогда не пересекаются? Задача 5.2 Создайте документ, позволяющий строить потенциал и напряженность электрического поля квадроуполя, ------------Ю т. е. электрическую систему, состоящую из четырех равных по абсолютной величине электрических зарядов, w расположенных в вершинах квадрата, считая что О< электрические заряды, расположенные в соседних вер- шинах, имеют разный знак (рис. 5.11). 98
5. Моделирование статических электрических и магнитных полей 1. Как выглядит электрическое поле вблизи квадроуполя (ближняя зона)? 2. Как выглядит электрическое поле на большом расстоянии от квадроупо- ля (дальняя зона)? 3. Исследуйте зависимость электрического поля в ближней и дальней зонах от расстояния до центра системы и расстояния между зарядами. Задача 5.3 Создайте документ, позволяющий строить потенциал и напряжен- ность электрического поля протяженного диполя, т. е. диполя, со- стоящего из N (>10) зарядов, знаки которых последовательно череду- ются. 1. Сравните электрическое поле при четном и нечетном числе зарядов, со- ставляющих диполь, в ближней и дальней зонах. 2. Сравните электрическое поле при четном и нечетном числе зарядов, со- ставляющих диполь, с электрическим полем точечного заряда. 3. Исследуйте зависимость электрического поля протяженного диполя в ближней и дальней зонах от расстояния между зарядами. Задача 5.4 Рассмотрите однородно заря- женную квадратную пластину со стороной L и полным зарядом Q, лежащую в плоскости х—у (рис. 5.12). Как известно, в пределе при L—>x> при постоянной плотности заряда er = q/I? вектор напряженности электрического поля Ё направлен по нормали к пластине, |Ё| = <т/2£-0 . Для нахождения электрического поля заряженной пластины конечных размеров разбейте пластину сеткой из Nх N ячеек так, чтобы каждую ячейку можно было считать точечным зарядом величиной dq = Ц. N 1. Создайте документ, позволяющий вычислять потенциал электрического поля заряженной пластины конечных размеров. 2. Выберите точку и постройте зависимость потенциала электрического поля от числа ячеек. Оцените размер ячейки, начиная с которого его 99
Компьютерное моделирование физических процессов в пакете МЛ TLAB уменьшение оказывает заметное влияние на точность вычислений. Как зависит этот размер ячейки от координаты точки наблюдения? 3. Для выбранных размеров ячейки исследуйте электрическое поле на раз- личных расстояниях от пластины. 4. Проведите сравнение электрического поля заряженной пластины конеч- ных размеров с электрическим полем, создаваемым бесконечной пла- стиной и точечным зарядом. 5.2. Магнитное поле витка с постоянным током Изучение электрических полей систем неподвижных электрических за- рядов, проведенное нами в предыдущем разделе, было основано на законе Кулона (5.2) и принципе суперпозиции (5.3), (5.4). Аналогом закона Кулона в электростатике в магнитостатике является закон Био-Савара-Лапласа, в соответствии с которым напряженность магнитного поля, создаваемого элементом тока 161 , имеет вид rfB=/£o/[<?„xR] 4л- |RJ3 где величина тока I измеряется в амперах (А), напряженность магнитного поля В - в теслах (Тл), /z0 = 4п • 10'7 • Тл • м/ А - магнитная проницаемость вакуума. Закон Био-Савара-Лапласа имеет в магнитостатике совершенно общий характер и вместе с принципом суперпозиции используется для нахождения напряженности магнитного поля, создаваемого произвольной системой по- стоянных токов, в любой точке пространства. Действительно, так как на- пряженность магнитного поля, создаваемого элементом тока IdT, распо- ложенном в точке с радиусом-вектором г , в точке с радиусом-вектором R равна ' «—А”- - (5 -6) 4л- |/?-pl3 то для вычисления напряженности магнитного поля, создаваемого произ- вольной системой постоянных токов, следует задать ориентацию каждого элемента тока IdT , входящего в структуру, и вычислить напряженности магнитных полей, создаваемых каждым элементом тока и в соответствии с принципом суперпозиции произвести суммирование напряженностей маг- нитных полей: 100
5. Моделирование статических электрических и магнитных полей dB = 4^ \B-rf (5.7) где N - число элементов, r( - радиус-вектор, соответствующего элемента Отметим, что вычислить магнитное поле аналитически, используя (5.6), (5.7), оказывается возможным, только для структур, имеющих достаточно высокую степень симметрии (прямой провод, поле кольца на оси симметрии и т. д.). Для большинства токовых конфигураций расчет магнитного поля может быть проведен только численно. Наиболее важными геометрически- ми конфигурациями токовых структур, для которых необходимо знать рас- пределение напряженности магнитного поля, являются: прямой провод, петля, соленоид, тороидальная обмотка. Далее мы опишем документ, позво- ляющий вычислять магнитное поле петли с постоянным током, и проведем критический анализ известных моделей, используемых при расчете магнит- ных полей соленоида и тороидальной обмотки с постоянным током. Для расчета напряженности магнитного поля петли с током выберем систему коор- динат, в которой плоскость XoY совпадает с плоскостью петли (рис. 5.13). В выбранной системе координат поло- жение г-го элемента тока fdTi, dl; = la sin tp- - cos <pt 0 dtp, (5.8) 2 л где dtp = , <pt = idtp , i = 0,1,... N -1, N - число элементов тока, описыва- ется радиусом-вектором 7), COS (Pi sin ср, 0 Подставив (5.6), (5.7) в (5.5), нетрудно получить выражения для состав- ляющих вектора напряженности магнитного поля BX,BX,BZ, однако для Т^а (5.9) расчета напряженности и визуализации магнитного поля в пакете MATLAB этого не требуется, так как в пакет встроены функции для вычисления стан- дартных действий векторного анализа: вычисление скалярного произведе- ния, векторного произведения и т. д. 101
Компьютерное моделирование физических процессов в пакете МА TLAB На примере вычисления и визуализации напряженности магнитного по- ля, создаваемого витком с током в плоскости х = 0, опишем последователь- ность действий, позволяющих решить поставленную задачу. В рассматри- ваемой плоскости, как очевидно из соображений симметрии, составляющая напряженности магнитного поля вдоль оси оХ равна нулю, поэтому далее мы проводим вычисления только составляющих напряженности вдоль осей oY, oZ. Так как далее нас будет интересовать форма силовых линий, но не абсолютное значение напряженностей множитель (//0/4л)7 будем полагать равным единице. Сначала необходимо создать файл Ring.m, содержащий описание функ- ции, возвращающей значения составляющих напряженности магнитного поля, листинг которого мы приводим ниже: function [By,Bz]=Ring(a,Y,Z) % функция возвращающая значения проекций напряженности магнитного % поля на оси oY, oZ, вычисляемые в соответствии с (5.7) Nstep=100; % количество элементов, аппроксимирующих кольцо Х=0; Ny=length(Y); % число узлов координатной сетки по оси oY Nz=length(Z); % число узлов координатной сетки по оси oZ deltaphi=2*pi/Nstep; % шаг по углу n=l:Nstep+l; phi(n)=deltaphi*(n-l); вычисление вектора <рп = ndq> % вычисление составляющих напряженности магнитного поля % в соответствии с (5.7) for i=l:Nz for j=l:Ny s=[0 0 0]; for n=l:Nstep+l dL=[-a*sin(phi(n))*deltaphi a*cos(phi(n))*deltaphi 0]; r=[a*cos(phi(n)) a*sin(phi(n)) 0]; R=[X Y(j) Z(i)]; s=s+cross(dL,(R-r))./((R-r)*(R-r)').A(3/2); % знак <' > - операция % транспонирования end; by(ij)=s(2); bz(ij)=s(3); end; end; 102
5. Моделирование статических электрических и магнитных полей Ву=Ьу; Bz=bz; Далее необходимо выполнить следующую последовательность команд: Nl=21; % число узлов сетки i=l:Nl+l; Ymin=-5; Zmin=-5; % нижний левый угол координатной сетки Ymax=5; Zmax=5; % верхний правый угол координатной сетки % вычисление координат узлов сетки Y (i)=Y min+( Y max-Y min)/N 1 *(i-1); Z(i)=Zmin+(Zmax-Zmin)/Nl*(i-l); a=l; % радиус кольца [By Bz]=Ring(a,O,Y,Z); % вычисление проекций напряженности % магнитного поля тр=(Ву.Л2+Вг.Л2).Л0.5; % вычисление значений модуля напряженности % магнитного поля в узлах координатной сетки % вычисление координат единичных векторов, касательных к % силовой линии магнитного поля, в узлах координатной сетки byl=ByJmp; bzl=Bz./mp; quiver(Y,Z,byl,bzl); % визуализация векторного поля Результаты выполнения приведенной выше последовательности команд представлены на рис. 5.14. 6,------|------,------г------,------,------ -6------------1-----------1-----------1------------I-----------1------------—. -6 .4 -2 0 2 4 6 Рис. 5.14 103
Компьютерное моделирование физических процессов в пакете МА TLAB Анализ рис. 5.14 показывает, что поле единичных векторов позволяет на ка- чественном уровне получать информацию о форме силовых линий и направле- нии напряженности магнитного поля в данной точке координатной сетки. Определенный недостаток технологии визуализации силовых линий магнитного поля состоит в том, что линия, являющаяся по своей физиче- ской сути непрерывной, заменяется набором векторов, касательных к дан- ной линии. Для получения более адекватного изображения силовых линий магнитного поля необходимо использовать векторный потенциал магнитно- го поля А , связанный с напряженностью магнитного поля следующим со- отношением: B = rotA. (5.10) Используя (5.10), можно показать [22], что силовая линия есть линия, на которой |А(х, у, z)| = const. Следовательно, для построения силовой линии магнитного поля необходимо вычислить модуль векторного потенциала в узлах координатной сетки и затем построить карту эквипотенциалей. Векторный потенциал магнитного поля, создаваемого элементом тока Idl , равен dA = — 4л |2?-Г| (5.Н) где R - радиус-вектор точки наблюдения, г - радиус-вектор элемента тока. Векторный потенциал магнитного поля А , создаваемого произвольной системой токов Idit в соответствии с принципом суперпозиции равен А = = <5.12) Так как далее нас будет интересовать форма силовых линий, но не абсо- лютное значение напряженностей, множитель (цц/Ал)! будем полагать равным единице. Для практической реализации предложенного алгоритма, как и ранее, сначала необходимо создать файл RingA.m, содержащий описание функ- ции, возвращающей значения составляющих напряженности магнитного поля, листинг которого мы приводим ниже: function A=RingA(a,Y,Z) % функция возвращающая значения модуля вектор-потенциала % магнитного поля, вычисляемого в узлах координатной сетки, % расположенной в плоскости YoZ, в соответствии с (5.12) 104
5. Моделирование статических электрических и магнитных полей Nstep=100; % количество элементов, аппроксимирующих кольцо Х=0; Ny=length(Y); % число узлов координатной сетки по оси oY Nz=length(Z); % число узлов координатной сетки по оси oZ deltaphi=2*pi/Nstep; % шаг по углу n=l:Nstep+l; phi(n)=deltaphi*(n-l); вычисление вектора срп = ndcp % вычисление модуля напряженности вектор-потенциала % магнитного поля for i=l:Nz for j=l:Ny s=[0 0 0]; for n=l:Nstep+l dL=[-a*sin(phi(n))*deltaphi a*cos(phi(n))*deltaphi 0]; r=[a*cos(phi(n)) a*sin(phi(n)) 0]; R=[X Y(j) Z(i)]; s=s+dLJ((R-r)*(R-r)').A(l/2); end; ax(ij)=s(l); ay(ij)=s(2); az(ij)=s(3); end; end; A=(bx.A2+by.A2+bz.A2).A0.5; Далее необходимо выполнить следующую последовательность команд: Nl=21; % число узлов сетки i=l:Nl+l; Ymin=-5; Zmin=-5; % нижний левый угол координатной сетки Ymax=5; Zmax=5; % верхний правый угол координатной сетки % вычисление координат узлов сетки Y (i)=Y min+( Y max-Y min)/N 1 *(i-1); Z(i)=Zmin+(Zmax-Zmin)/Nl*(i-l); a=l; % радиус кольца mp=Ring A(a, Y,Z); % вычисление модуля векторного потенциала contour(Y,Z,mp,55); Результаты выполнения приведенной выше последовательности команд представлен на рис. 5.15. Анализ карты эквипотенциальных поверхностей, представленных на рис. 5.5, позволяет выявить два недостатка. Во-первых, на карте неправиль- 105
Компьютерное моделирование физических процессов в пакете MATLAB но отображаются силовые линии, проходящие вблизи центра кольца, что объясняется особенностями вычислительного алгоритма. Во-вторых, сило- вые линии оказываются негладкими, что обусловлено использованием ко- ординатной сетки с достаточно большим шагом и использованием пакетом MATLAB при построении силовых линий магнитного поля последователь- ных отрезков прямых. Устранить второй недостаток достаточно просто, используя какой-либо тип интерполяции исходных данных на координатную сетку меньшего размера: % задание новой координатной сетки » yi=Ymin:(Ymax-Ymin)/1000:Ymax; » zi=Zmin:(Zmax-Zmin)/1000:Zmax; % формирование матриц, используемых функцией interp2 » [yl zl]=meshgrid(Y,Z); » [у2 z2]=meshgrid(yi,zi); % вычисление значений векторного потенциала на координатной сетке % меньшего размера с использованием бикубической % сплайн-интерполяции » zi3 = interp2(yl,zl,mp,y2,z2,'bicubic'); » contour(yi,zi,zi3,55); % визуализация силовых линий Результат выполнения приведенной выше последовательности команд представлен на рис. 5.16. 106
5. Моделирование статических электрических и магнитных полей Рис. 5.16 Таким образом, сочетание обоих описанных в настоящем разделе мето- дов визуализации силовых линий магнитного поля позволяет получить аде- кватное представление об их геометрии. Задача 5.5 Как известно, напряженность поля, создаваемого магнитным диполем Й, описывается формулой Д(Я):=-3^ '^-Д- (5.13) 1*1 1*1 1. Исследуйте особенности магнитного поля, создаваемого магнитным дипо- лем. Рассмотрите магнитные поля на различных расстояниях от диполя. 2. Сравните магнитные поля, создаваемые кольцом с током и магнитным диполем. Какой вывод можно сделать? 5.3. Магнитное поле соленоида с постоянным током* Вопрос о структуре магнитного поля однослойного соленоида с посто- янным током обсуждается практически во всех учебниках - от школьных до ставших в настоящее время классическими вузовских учебников по элек- Резулътаты данного раздела впервые получены автором совместно с В. И. Ха- ритоновым в [15]. 107
Компьютерное моделирование физических процессов в пакете MATLAB тричеству, магнетизму [1-5] и электродинамике [6-10]. Расчет поля на оси соленоида, допускающий решение в аналитическом виде, в случае беско- нечно длинного соленоида и соленоида конечной длины предлагается в ка- честве задач во многих задачниках [11-13]. Соленоид, согласно устоявшейся точке зрения, рассматривается как ис- точник магнитного поля. Один конец соленоида является северным полюсом, другой - южным, поле вне соленоида считается аксиально-симметричным, а внутри катушки в приближении бесконечно длинного соленоида - од- нородным. Общий вид силовых ли- ний данного магнитного поля пока- зан на рис. 5.17, что подтверждается элементарными опытами со стрелкой компаса и магнитными опилками, располагаемыми на горизонтальной плоской поверхности с малым коэф- фициентом трения, проходящей че- рез продольную ось соленоида. Известный метод расчета напряженности магнитного поля однослойного соленоида состоит в представлении соленоида набором последовательно расположенных колец и суммировании в соответствии с принципом супер- позиции напряженностей магнитных полей, создаваемых каждым кольцом в выбранной точке пространства. При таком подходе неявно предполагается, что ток при плотной намотке вдоль продольной оси соленоида отсутствует или исчезающе мал по сравнению с током вдоль кольца. Это послужило причиной, по которой магнитное поле, обусловленное составляющей тока вдоль оси соленоида, считалось малым по сравнению с магнитным полем, обусловленным движением электрических зарядов вдоль кольца. Данное допущение однако недостаточно корректно. Доказательство высказанного утверждения проведем в два этапа; на пер- вом построим качественную картину протекания тока по соленоиду, на вто- ром этапе проведем количественные расчеты. Причем, в отличие от тради- ционного подхода, обсужденного выше, рассмотрим изменение условий движения носителей заряда при последовательном усложнении геометрии токовой структуры (прямой ток - спираль - соленоид). Оставаясь в рамках электронной теории, рассмотрим ток в проводе как последовательность движущихся с постоянной скоростью зарядов. Очевидно, что намотка про- вода не меняет скорость движения носителей заряда вдоль провода v0 (т. е. абсолютную величину скорости), однако появляются составляющие скоро- 108
5. Моделирование статических электрических и магнитных полей сти носителей заряда вдоль координатных осей (рис. 5.18). При этом дви- жение носителей заряда вдоль оси oZ будет движением с постоянной скоро- стью Vz , В ПЛОСКОСТИ XoY - С ПОСТОЯННОЙ скоростью Vj по окружности. Выразим данные скорости через радиус спирали а и шаг спирали h, для чего рассмотрим развертку одного витка спирали в плоскости XoZ (рис. 5.19). Рис. 5.19 Из рис. 5.19 очевидно, что h v, = v0 cos а - v0 -(===.-== ; (5.14) \1(2я a)2 + h2 \. (2/Т af + h2 109
Компьютерное моделирование физических процессов в пакете MATLAB Учитывая, что шаг спирали h выражается через длину соленоида Ls и число витков N как h = Ls/N , и переходя в (5.14), (5.15) к токам, получаем Iz=Neev01—(5J6) V(2nr aN) + L2 , .. 2n aN Y = Neev0 -------==, (5.17) Л/(2тгаА)2 + L2 где Ne - линейная плотность электронов в соленоиде (число электронов в проводе, намотанном на соленоид, отнесенное к длине соленоида); е - заряд электрона. Кроме того, намотка провода приводит к увеличению длины провода с током L, которая выражается через число витков и шаг намотки L = N^(2rta)2+h2 =^(27taNf+L2 . (5.18) Анализ выражений (5.16), (5.17) показывает, что поле соленоида с одно- слойной намоткой является суперпозицией полей двух токов, один из кото- рых является круговым, второй - продольным. Увеличение числа витков приводит, с одной стороны, к уменьшению шага спирали и, следовательно, к уменьшению величины продольного тока (см. выражения (5.16), (5.18)), с другой стороны, к увеличению длины провода, намотанного на соленоид, что приводит к возрастанию количества носителей заряда, двигающихся в соленоиде, т. е. возрастанию линейной плотности заряда. Из выражений (5.18) и (5.17) видно, что количество электричества, перемещающееся в на- правлении оси oZ в единицу времени остается неизменным при увеличении числа витков соленоида. Таким образом, при любом количестве витков (любом шаге намотки) количество электричества, перемещающегося в на- правлении продольной оси соленоида в единицу времени, оказывается рав- ным количеству электричества в прямом проводе. Следовательно, соленоид с однослойной обмоткой должен обладать аксиально-симметричным маг- нитным полем в плоскости, перпендикулярной продольной оси соленоида, подобным полю прямого тока. Учитывая аналогию с магнитным полем прямого тока, естественно в дальнейшем называть его поперечным полем - в отличие от магнитного поля, приведенного на рис. 5.17. При большом числе витков соленоид можно рассматривать как проводящий цилиндр ко- нечных размеров, по которому течет продольный ток, следовательно, мож- но ожидать появления отличия поперечного магнитного поля соленоида и магнитного поля прямого тока, Которое должно проявляться при увеличе- нии числа витков. 110
5. Моделирование статических электрических и магнитных полей Для проверки рассуждений, приведенных выше, получим аналитическое выражение для напряженности магнитного поля соленоида на основе закона Био-Савара-Лапласа (5.6) и принципа суперпозиции, проинтегрировав (5.6) по всем элементам тока. Как известно [14], положение любой точки спирали полностью опреде- ляется заданием единичного вектора п, направленного вдоль оси спирали (ось oZ), и вектора а , отмечающего положение точки спирали в плоскости, перпендикулярной к вектору п (рис. 5.20). Тогда положение любой точки спирали определяется радиусом-вектором R , зависящим от одного пара- метра - угла поворота (о: ^((д) = Я/г--+ а соз<д + [и х a]sin <д. (5.19) 2тг Элемент тока Idl выражается через вектор Г(<д), касательный к спира- ли, как IdT = It(<p)d<p, (5.20) где Обозначим вектор, направленный из начала координат в точку наблюде- ния, через Ro , тогда вектор Г = R0 - R(<p ). Таким образом, напряженность магнитного поля в точке наблюдения записывается в виде ш
Компьютерное моделирование физических процессов в пакете MATLAB (5.22) В = V J |Я0-ВД3 Для вычисления интеграла (5.22) перейдем к координатной записи. За- метив, что в выбранной системе координат векторы п, а, [й х а], входящие в (5.19) - (5.22), имеют координаты й = (0,0,1), a =(1,0,0), [йха] = (0,1,0), получим координаты векторов R(<p ), Rf!~ R(<p) в виде . h ) к(^)= acos^asin^, — <р , \ 2тг 7 f(^) = [ -asm<p,acos<pr~-- |, к 2тг > ( h \ -$(^) = хо “acos^,y0 -asin<p,z0----ср\. к 2тг ) Подставляя (5.23) - (5.25) в (5.22), получаем для составляющих напря- женности магнитного поля соленоида вдоль соответствующих координат- ных осей: (5.23) (5.24) (5.25) „ д'К [\z0-^-<p\acos^-~PyQ-asm<p)\ В--¥ -------------------------------------2 J„;(5.26) » 2 !'1> 1,Г • It '}} Лр+а + —<p\ -2 x0acos^ + ay0 sin^n----z0 I к 2ff ) к 2л )) 2тг N Ву=-^ f 4л J о + « sin h - <р 2л . ------^d<p- (5.27) й ) I Xpacos^ + ayoSin^n-Zq 2л )) 2n N f ((y0-asin<p)asin<p + acos<Xx0--acoSff))________^(5 28) О „2 2 ( Й ) J . П 1 K0+a + — <p\ -2 x0acos^ + ay0sin^d— z0 I к 2n ) к " 2л ) I В связи с тем, что соленоид имеет цилиндрическую форму, представляется целесообразным записать компоненты поля в цилиндрической системе коорди- нат. Для этого положение точки наблюдения будем характеризовать в плоско- сти, перпендикулярной продольной оси соленоида, радиусом-вектором Го и утлом поворота (р 0, положение относительно продольной соленоида - ко- ординатой z0. Тогда выражения для напряженности составляющих поля в ци- 112
5. Моделирование статических электрических и магнитных полей ливдрической системе координат находятся соответствующей заменой пере- менных в (5.26) - (5.28): х0 —>r0coscp 0, у0 —> r0 sin ср 0, Rq -> r02 +z(2 и перехо- дом из декартовой в цилиндрическую систему координат, определяемым матрицей поворота относительно оси oZ [10]: f cos^q sin^0 GV В/ -sin^0 cos^q 0 Bv (5.29) Описанная выше замена переменных и выражение (5.29) позволяют лег- ко получить окончательные выражения для составляющих напряженности магнитного поля в цилиндрической системе координат. В связи с тем, что процедура нахождения составляющих напряженности магнитного поля в цилиндрической системе координат теперь является тривиальной, а оконча- тельные выражения весьма громоздки, автор их не приводит. Отметим, что выражения (5.26) - (5.28) получены абсолютно строго, без использования каких-либо приближений и позволяют проводить вычисле- ния для соленоидов с произвольными параметрами (длиной, поперечным сечением и числом витков). Их анализ показывает, что интегралы в (5.26)- (5.28) всегда отличны от нуля. Следовательно, однослойный соленоид имеет поперечное магнитное поле, аналогичное полю прямого тока. Так как интегралы (5.26) - (5.28) не берутся в элементарных функциях, целесообразно, задавшись конкретными параметрами обмотки (шагом, чис- лом витков и радиусом поперечного сечения), провести численное вычис- ление компонент вектора напряженности магнитного поля и провести его визуализацию, как это было описано в предыдущем разделе. Так как далее нас будет интересовать форма силовых линий, но не абсолютное значение напряженностей, множитель (/г0/4тг)/ будем полагать равным единице в (5.26) - (5.28). Обсудим более подробно особенности вычисления интегралов (5.26) - (5.28). В пакете MATLAB для нахождения значения определенного инте- грала от некоторой функции /(х) на интервале [а,Ь] необходимо выпол- нить следующую последовательность действий: 1) провести разбиение отрезка [а,/?] интегрирования на N отрезков и сохранить координаты их концов в векторе х,, i -1,.., N ; 2) вычислить значения подынтегральной функции /(х) в узловых точ- ках х,: F(. =/(х, ); ИЗ
Компьютерное моделирование физических процессов в пакете МА TLAB 3) использовать функцию trapz, реализующую метод трапеций: trapz(x,F), Таким образом, для вычисления и визуализации напряженности магнит- ного поля соленоида нужно следующее. 1. Создать m-файлы, возвращающие значения составляющих напряженности магнитного поля вдоль каждой из координатных осей: % листинг файла Вх.ш function z=Bx(xO,yO,zO,a,h,N) % функция, возвращающая значение проекции напряженности % магнитного поля на ось оХ phi=0:pi/50:2*pi*N; % вычисление координат узловых точек F=f(phi,xO,yO,zO,a,h); % вычисление значений функции в узловых точках z=trapz(phi,F); % вычисление значений интеграла function F=f(psi,xO,yO,zO,a,h) % описание подынтегральной функции в (5.26) F=((z0-psi*h/(2*pi))*a.*cos(psi)-h/(2*pi)*(y0-a*sin(psi)))./... (x0A2+y0A2+z0A2+aA2+(h/(2*pi)*psi).A2-... 2*(xO*a*cos(psi)+a*yO*sin(psi)+h/(2*pi)*zO*psi)).A(3/2); % листинг файла By.m function z=By(xO,yO,zO,a,h,N) % функция, возвращающая значение проекции % напряженности магнитного поля на ось oY phi=0:pi/50:2*pi*N; % вычисление координат узловых точек F=f(phi,xO,y O,zO,a,h,I); % вычисление значений функции в узловых точках z=trapz(phi,F); % вычисление значений интеграла function F=f(psi,xO,yO,zO,a,h); % описание подынтегральной функции в (5.27) F=((x0-a*cos(psi))*h/(2*pi)+a*sin(psi).*(z0-psi*h/(2*pi)))./... (x0A2+y0A2+z0A2+aA2+(h/(2*pi)*psi).A2-... 2*(xO*a*cos(psi)+a*yO*sin(psi)+h/(2*pi)*zO*psi)).A(3/2); % листинг файла Bz.m function z=Bz(xO,yO,zO,a,h,N) % функция, возвращающая значение проекции напряженности % магнитного поля на ось oZ phi=0:pi/50:2*pi*N; % вычисление координат узловых точек F=f(phi,xO,yO,zO,a,h,I); % вычисление значений функции в узловых точках 114
5. Моделирование статических электрических и магнитных полей z=trapz(phi,F); % вычисление значений интеграла function F=f(psi,xO,yO,zO,a,h); % описание подынтегральной функции в (5.28) F=((yO-a*sin(psi))*a.*sin(psi)+a*cos(psi).*(xO-a*cos(psi)))./... (x0A2+y0A2+z0A2+aA2+(h/(2*pi)*psi).A2-... 2*(x0*a*cos(psi)+a*y0*sin(psi)+h/(2*pi) *zO*psi)).A (3/2); 2. Задать координатную сетку (вычислить координаты узлов сетки). 3. Вычислить в каждом узле сетки значение составляющих напряженно- стей магнитного поля соленоида. 4. Построить векторное поле единичных векторов, касательных к сило- вым линиям магнитного поля, выполнив последовательность действий, опи- санную в предыдущем разделе. Для построения непрерывных силовых линий магнитного поля, как было показано выше, следует вычислить в узлах координатной сетки значения векторного потенциала А(х, у, z) Д = (5.30) 4л- J Д0-/?И где di, R - векторы, определенные согласно (5.19) - (5.20), - радиус- вектор точки наблюдения, и построить карту эквипотенциальных поверхно- стей функции |А(х, у,z] Подставляя (5.19) - (5.20) в (5.30), получаем выражения для составляю- щих векторного потенциала магнитного поля соленоида вдоль соответст- вующих координатных осей: 2 л N I/------------------------------------- 0 +а2 + — <р -2 x0acos£> +ayosinpd----z0 V 2я- 7 I 2л J j Av = /Д)£ [--------------------Acos£------------------ d<p (5.32) 4гг o(d2 2 ( h f J . h aV u /?□+« + — <p\ -2 x0acos(3 + ay0sin(3+—Zq ( \2л- / \ 2л Jj 2л-X — <o Az=^ f .-------------------------2'Г------------------,^.(5.33) 4гг I ( , , ( h V ( . h W' u /?o+a'+ - p -2 x0acos<p + ayosm^3-------Zq I (2л ) V ' 2л ) J 115
Компьютерное моделирование физических процессов в пакете MATLAB Таким образом, для вычисления и визуализации силовых линий магнит- ного поля соленоида нужно следующее. 1. Создать in-файлы, возвращающие значения составляющих векторного потенциала магнитного поля вдоль каждой из координатных осей: % листинг файла Ах.ш function z=Ax(xO,yO,zO,a,h,N) % функция, возвращающая значение проекции векторного потенциала % магнитного поля на ось оХ phi=0:pi/50:2*pi*N; % вычисление координат узловых точек F=f(phi,xO,yO,zO,a,h); % вычисление значений функции в узловых точках z=trapz(phi,F); % вычисление значений интеграла function F=f(psi,xO,yO,zO,a,h); % описание подынтегральной функции в (5.31) F=-(a*sin(psi))./... ((x0-a*cos(psi)).A2+(y0-a*sin(psi)).A2+(z0-h./(2*pi)*psi).A2).A0.5; % листинг файла Ау.т function z=Ay(xO,yO,zO,a,h,N) % функция, возвращающая значение проекции % векторного потенциала магнитного поля на ось о У phi=0:pi/50:2*pi*N; % вычисление координат узловых точек F -f(phi ,х0 ,у 0 ,z0 ,a,h); % вычисление значений функции в узловых точках z=trapz(phi,F); % вычисление значений интеграла function F=f(psi,xO,yO,zO,a,h); % описание подынтегральной функции в (5.32) F=(a*cos(psi))J... ((x0-a*cos(psi)).A2+(y0-a*sin(psi)).A2+(z0-h./(2*pi)*psi).A2).A0.5; % листинг файла Az.m function z=Az(xO,y(),zO,a,h,N) % функция, возвращающая значение проекции векторного % потенциала магнитного поля на ось oZ phi=0 -.pi/50:2*pi*N; % вычисление координат узловых точек F=f(phi,xO,yO,zO,a,h); % вычисление значений функции в узловых точках z=trapz(phi,F); % вычисление значений интеграла function F=f(psi,xO,yO,zO,a,h); % описание подынтегральной функции в (5.33) F=(h/(2*pi))./... ((x0-a*cos(psi)).A2+(y0-a*sin(psi)).A2+(z0-hJ(2*pi)*psi).A2).A0.5; 116
5. Моделирование статических электрических и магнитных полей 2. Задать координатную сетку. 3. Вычислить в каждом узле сетки значение проекций векторного потен- циала магнитного поля соленоида на соответствующие координатные оси. 4. Построить карту линий уровня функции |А(л, у. г) Для примера на рис. 5.21 и 5.22 показаны проекции силовых линий од- нослойного соленоида с параметрами а - 0.5, L = 6, N= 200, нижний конец которого расположен в плоскости z - 0, на плоскости х - 0 и z = 3, соответ- ственно. Проекция векторного потенциала на плоскость YoZ вычислялась на квадратной координатной сетке со следующими параметрами: левый ниж- ний угол (-5,-5), правый верхний угол (5,5), число узлов N = 17x17 . Проек- ция векторного потенциала на плоскость Z-3 вычислялась на прямоуголь- ной координатной сетке со следующими параметрами: левый нижний угол (-5,-5), правый верхний угол (5,8), число узлов W=17x17. На рис. 5.21 и 5.22, более толстыми линиями показаны соответствующие сечения соле- ноида. Рис. 5.21 Для сравнения проекции напряженности магнитного поля на плоскость Z = 3 и проекции напряженности магнитного поля на ось oZ вычислено их отношение на различных расстояниях от оси oZ (рис. 5.23). Как очевидно, данная величина есть тангенс угла между силовой линией и осью oZ, кото- рый характеризует искривленность силовых линий. 117
Компьютерное моделирование физических процессов в пакете MATLAB Как показывает анализ зависимости, представленной на рис. 5.23, у со- леноида с указанными размерами составляющая напряженности магнитного поля, лежащая в плоскости Z = 3, т. е. достаточно далеко от обоих концов соленоида, оказывается одного порядка с составляющей напряженности, параллельной оси oZ. Следовательно, силовые линии магнитного поля, соз- даваемые однослойным соленоидом, являются не плоскими, но пространст- венными кривыми. 118
5. Моделирование статических электрических и .магнитных полей Задача 5.6 Используя выражения (5.27), (5.28) - (5.30), исследуйте магнитное поле внутри и снаружи прямого соленоида с постоянным током при различ- ной длине соленоида и шаге намотки. , т 4л% £ в jT 1. Сравните значения контурного интеграла - j Bal , вычисляемого по круговым контурам, один из которых находится внутри, а другой вне соленоида. 2. Сравните значения радиальной Вг и нормальной (т. е. перпендикулярной к радиусу-вектору точки наблюдения) Вр составляющих напряженно- сти магнитного поля. 3. Как зависит нормальная составляющая напряженности магнитного по- ля соленоида В? от азимутального угла <р ? 4. Вычислите зависимость напряженности поперечного магнитного поля от расстояния до продольной оси соленоида при неизменной длине соле- ноида и различном шаге намотки. Постройте полученные зависимости и сравните их с аналогичной зависимостью напряженности магнитного поля, создаваемого постоянным прямым током. 5. Можно ввести еще один параметр г], характеризующий магнитное поле соленоида с постоянным током, - отношение нормальной составляю- щей напряженности В^ к продольной составляющей напряженности магнитного Bz в данной точке. Этот параметр определяет «степень вертикальности» силовой линии магнитного поля, т. е. показывает, можно ли пренебречь напряженностью поперечной составляющей маг- нитного поля по сравнению с напряженностью его продольной состав- ляющей: а) в выбранной точке пространства вычислите значения параметра г] при различном шаге намотки и фиксированных размерах соленоида. Изобразите данную зависимость графически; б) при выбранном шаге намотки и длине соленоида вычислите зависи- мость параметра т| от расстояния до продольной оси соленоида. Изобразите данную зависимость графически; в) можно ли считать силовую линию вертикальной? Почему известные опыты с металлическими опилками не позволяют выявить обнару- женную особенность магнитного поля прямого соленоида с посто- янным током? 119
Компьютерное моделирование физических процессов в пакете МА TLAB 5.4. Магнитное поле тороидальной обмотки с постоянным током* Для нахождения магнитного поля тороидальной обмотки с постоянным током (рис. 5.24) принято использовать уравнение Максвелла: rot Ё = j , имеющее в интегральной форме следующий вид [4]: = £(+/*), (5.34) L k=l где L - контур, охватывающий ток, Ik - сила тока, охватываемого контуром. Следующий шаг в нахождении магнитного поля состоит в замене об- мотки тора с протекающим по ней током поверхностным током с постоян- ной линейной плотностью i (рис. 5.25). При использовании данной модели линии тока предполагаются расположенными в меридиональных плоско- стях, проходящих через ось симметрии тора, т. е. набором колец с током. Циркуляция магнитного поля тора В в (5.34), зависящего, из соображений симметрии, только от расстояния до центра тора, равна 2~RB. Полный ток, пронизывающий площадь, ограниченную этой окружностью, равен NJ, где N - число витков тороидальной обмотки. Откуда напряженность магнитно- го поля В внутри тора равна В = NJ 2 л- R Результаты данного раздела впервые получены автором совместно е В. И. Ха- ритоновым в [19] 120
5. Моделирование статических электрических и магнитных полей Рассмотрение контура, представляющего собой окружность, радиусом, большим радиуса тора, показывает, что полный ток, протекающий через данный контур, равен нулю, так как ток в каждом витке катушки пересекает ее дважды в противоположных направлениях. Отсюда с неизбежностью следует вывод о равенстве нулю напряженности магнитного поля вне тора. Однако количественное обоснование принятого выше допущения о воз- можности замены тороидальной обмотки поверхностно распределенным током либо не приводится, либо утверждается, что составляющей тока вдоль тора при достаточно плотной намотке можно пренебречь [5,16]. Справедливость данных подходов можно поставить под сомнение, так как они противоречат закону со- хранения заряда. Действительно, при протекании тока J через тор и подводя- щие провода количество электричества, проходящего в единицу времени через выбранное сечение провода 1, должно равняться количеству электричества, проходящего через выбранное поперечное сечение провода 2 (рис. 5.24). Сле- довательно, количество электричества, перемещаемое в единицу времени вдоль окружности радиуса R тора, одинаково при любой крутизне намотки. Так как перемещение заряда вдоль оси тора есть продольный ток, величина ко- торого равна J, то тор должен обладать внешним магнитным полем, аналогич- ным магнитному полю витка с током. Для подтверждения проведенного качественного доказательства сущест- вования внешнего магнитного поля тора проведем прямые вычисления напряженности магнитного поля на основе закона Био-Савара-Лапласа [4]: (5.35) 4л- г3 где Jdl - элемент тока, Т - радиус вектор от элемента тока в точку наблю- дения, и принципа суперпозиции - интегрированием (5.35) по всем элемен- там тока. Для однозначного описания положения элементов намотки введем два радиуса-вектора - вектор R7, описывающий положение центра данно- 121
Компьютерное моделирование физических процессов в пакете MATLAB го сечения тора меридиональной плоскостью, с началом в точке О, и вектор а . описывающий положение элемента спирали в меридиональной плоско- сти (рис. 5.26). RT имеет координаты (RT ,0,0), вектор Я - (а,0,0). Положение каждой точ- ки тороидальной намотки в выбранной системе координат будем описывать радиусом-вектором г , который является суммой векторов ЙТ, а: r = RT+a. (5.36) Очевидно, что при постоянном угле намотки положение любой точки спирали будет определяться одним параметром - углом поворота ср вектора RTn плоскости ХоУ. Найдем связь угла поворота вектора а в меридио- нальной плоскости <р ] с углом поворота ср вектора Йтъ плоскости ХоУ, для чего рассмотрим плоскост- ную развертку одного витка тороидальной намотки, пред- ставляющую прямоугольный треугольник, длины катетов которого равны длинам дуг окружности радиуса R в плоскости ХоУ и окружности радиуса а в меридиональной плоскости (рис. 5.27). Рис. 5.27 При Х-витковой намотке они равны Rt>1tc!Nm 2ка, соответственно, поэтому угол намотки /? равен a N /? = arctg--. (5.37) К7 122
J. Моделирование статических электрических и магнитных полей Рассмотрим развертку спирали при произвольном угле поворота tp, пред- ставляющую, как и для одного витка, прямоугольный треугольник. В этом случае длины соответствующих катетов равны RT (р, a-tpj. Используя из- вестные формулы, связывающие катеты прямоугольного треугольника че- рез угол между катетом и гипотенузой, получим 7?r-p-tg/? = a-p;. (5.38) Подставляя выражение для угла f3из (5.36) в (5.37), окончательно найдем tpx=Ntp. (5.39) Учитывая (5.35), (5.38), запишем зависимость координат радиуса- вектора г от угла поворота tp в выбранной системе координат г = ([RT+acosNtp)costp,(RT+acosNtp')sintp,asinNtp) (5.40) Элемент длины тороидальной обмотки dT выражается через вектор t , касательный к обмотке в данной точке, и уг]л поворота dtp dl = tdtp, (5.41) где вектор t по определению равен [14] dr t = — . dtp t = Из (5.40), (5.42) найдем - (RT sin tp + a sin tp cos Ntp + Na sin Ntp cos tp) RT costp- aN sin Ntp sin tp + a cos Ntp cos tp aNcosNtp (5.42) (5.43) Выражение для напряженности магнитного поля, создаваемого элемен- том тороидальной обмотки в точке пространства, положение которой опи- сывается радиусом-вектором Ro= (x0,y0,z0), учитывая (5.35), (5.41), можно записать в виде: dB = ^L ^2^o.^ld(p , Яо - И (5.44) где Ro~r = (x0-(R r+acos Ntp)costp, y0 - (T?7 +acos lV^)sin tp, zg-asinN<p) ,(5.45) \Ro~r\= ^xo~(RT+a cos Ntp)costp)2 + ... (5 46) + ()'o ~ (Rj +a cos y^)sin <p)2 + ( z0-asin Ntp)1 123
Компьютерное моделирование физических процессов в пакете MATLAB Составляющие магнитного поля, создаваемого тороидальной обмоткой с постоянным током в точке с радиусом-вектором /?0 , вдоль координатных осей находятся непосредственным интегрированием (5.44). Окончательные выражения компонентов напряженности магнитного поля через интегралы элементарно получаются подстановкой выражений (5.45), (5.46), (5.43) в (5.44) р ol 2r (RTcosp-aNsinN^>cos^>+acosN^cos^)(z0-asinN^)+... j , _ -- - - —- — : ° •с(хо""(Кт+ас05^г?’)С08?’) +(y0-(R1+acos/V<p)sin«p)' -ajVcosiV^>(y0--(RT+acos,/V4Z>) cos <р) & (5.47) +( z0-asinAfy>) j /л ()/27 (R, sin^+asin^cosW^ + WasinN^cos^)(z0-asinN^)+... Z?y = j--------------------------------------------------------------- Ч-/С 0 +acos.Mp)cos<p)2 +(у0 -(RT+acos Mp)sin<p)‘ +... +aNcos?/^(x0-(RT+acosMp) cos<^)^ (5.48) т 2,~ в,=-^-Г to > +( z0-asin^) j (RT sin p + a sin cos N<p + Na sin N<p cos <p] •... ^(x0-(RT+acos^)cosp)2 +(y0-(RT+acosN$o)sin^)‘+... (y0-(RT+acos?/^)sin<p) — - - —•> ( z0-asin Nep}' T Ар/ Г M-/4. 0 d^>- (5.49) aN cos N<p-... 1+acosN^)cos <pj +(y0 -~(RT+acosA,^)sinp)'+... (x0-(RT+acosN^>)cos Как видно из выражений (5.47) - (5.49), составляющие магнитного поля тороидальной обмотки с постоянным током не выражаются через элемен- тарные функции, поэтому возможно только численное исследование осо- бенностей этого поля. 124
5. Моделирование статических электрических и магнитных полей Важно отметить, что несмотря на громоздкость выражений (5.47) - (5.49), вычислительные средства пакета MATLAB позволяют записать ре- шение данной задачи в компактной форме. При составлении программы можно использовать подход, описанный в предыдущем разделе при расчете и визуализации магнитного поля соленоида с постоянным током. Однако соответствующая программа показала, что для расчета напряженности маг- нитного поля соленоида даже для сетки с небольшим числом узлов требует- ся неприемлемо много времени. Как показала пошаговая прогонка про- граммы, наибольших временных затрат требует операция вычисления век- торного произведения, входящего в выражение (5.35), которое приходится вычислять многократно для каждого значения переменной phi. По этой причине мы отказались от использования встроенной в MATLAB функции cross, записывая явные выражения для каждой координаты векторного про- изведения. Ниже приводится листинг файла A_Tor.m, содержащий описа- ние функции, возвращающей значения составляющих напряженностей вдоль соответствующих координатных осей. % листинг файла A_Tor.m function [Ax,Ay,Az]=A_Tor(xO,yO,zO,Rt,a,N); % функция, возвращающая значение составляющих напряженности % магнитного поля вдоль соответствующих координатных осей dphi=pi/(5*N); % шаг интегрирования phi=0:dphi:2*pi; % вектор, содержащий значения узлов интегрирования [rx ry rz]=r_Tor(Rt,a,N,phi); % вычисление координат вектора R % в соответствии с (5.40) в узлах % интегрирования [tx ty tz]=t_Tor(Rt,a,N,phi); % вычисление координат вектора Г, % в соответствии с (5.43) N2=length(rx); % длина вектора % вычисление составляющих напряженности магнитного поля % в соответствии с (5.22) X0(l:N2)=x0; Y0(l:N2)=y0; Z0(l:N2)=z0; Rx=X0-rx; Ry=Y0-ry; Rz=Z0-rz; Z=(Rx.A2+Ry.A2+Rz.A2).A(l/2); fl=tx./Z; f2=ty./Z; 125
Компьютерное моделирование физических процессов в пакете МА TLAB f3=tzJZ; Ax=trapz(phi,fl); Ay=trapz(phi,f2); Az=trapz(phi,f3); function [rx,ry,rz]=r_Tor(Rt,a,N,phi) % функция, возвращающая координаты вектора R в соответствии с (5.40) rx=(Rt+a*cos(N*phi)).*cos(phi); ry=(Rt+a*cos(N*phi)).*sin(phi); rz=a*sin(N*phi); function [tx,ty,tz]=t_Tor(Rt,a,N,phi) % функция, возвращающая координаты вектора t в соответствии с (5.43) tx=-(Rt*sin(phi)+a*sin(phi).*cos(N*phi)+... a*N*sin(N*phi).*cos(phi)); ty=Rt*cos(phi)-N*a*sin(phi).*sin(N*phi)+a*cos(N*phi).*cos(phi); tz=a*N*cos(N*phi); Далее для вычисления и визуализации напряженности магнитного поля в плоскости YoZ необходимо выполнить следующую последовательность ко- манд. Nl=21; % число узлов i=l:Nl+l; Ymin=-100; Zmin=-100; % левый нижний угол координатной сетки Ymax=100; Zmax=100; % правый верхний угол координатной сетки % вычисление координат узлов сетки Y(i)=Ymin+(Ymax-Ymin)/Nl *(i-l); Z(i)=Zmin+(Zmax-Zmin)/N 1 *(i-1); Rt=l; % радиус большого кольца тора а=0.5; % радиус малого кольца тора N=100; % число витков % вычисление составляющих напряженности магнитного поля % в узлах координатной сетки for i=l:Nl+l for j=l:Nl+l [bx by bz]=B_Tor(0,Y(i),Z(j),Rt,a,N); Bx(ij)=bx; By(iJ)=by; Bz(iJ)=bz; end; end; 126
5. Моделирование статических электрических и магнитных полей % нормировка векторов mp=(By.A2+Bz.A2).A0.5; Ьу1=Ву?шр; bzl=Bz./mp; quiver( Y,Z,by 1 ,bz 1,0.5); % визуализация векторного поля Рис. 5.28 Результаты выполнения описанной последовательности команд пред- ставлены на рис. 5.28. Отметим, что как и в случае с прямым соленоидом, использование мно- гослойной тороидальной обмотки с числом слоев п, намотанной в одном направлении, приведет к пропорциональному увеличению (в п раз) количе- ства электричества, перемещающегося в единицу времени вдоль окружно- сти тора радиуса R, по сравнению с однослойной обмоткой. Следовательно, напряженность магнитного поля многослойной тороидальной обмотки В будет в п раз больше поля однослойной обмотки В1: =пВ. При использовании многослойной тороидальной обмотки, в которой на- правление намотки в каждом следующем слое противоположно предыду- щему, при четном количестве слоев суммарное количество электричества, перемещающегося в единицу времени вдоль окружности тора радиуса R, равно нулю, при нечетном количестве слоев - равно количеству электриче- ства, перемещающегося в единицу времени вдоль оси радиуса R, в одно- слойной тороидальной обмотке. Следовательно, тороидальная обмотка с четным количеством слоев обмотки не имеет внешнего магнитного поля, 127
Компьютерное моделирование физических процессов в пакете МА TLAB а тороидальная обмотка с нечетным числом слоев имеет внешнее магнитное поле, равное полю однослойной тороидальной обмотки. Задача 5.7 Как известно [13], магнитное поле витка с током имеет нулевые со- ставляющие вдоль осей оХ, oY и ненулевую составляющую вдоль оси oZ, зависящую от расстояния до центра витка В, R _^0J 27Г где R - радиус катушки, z - расстояние между точкой наблюдения и цен- тром витка. 1. Вычислите зависимость напряженности магнитного поля тороидальной обмотки на оси oZ от расстояния до центра тора (радиус тора -5 см, радиус поперечного сечения -0.5 см, число витков - N = 500) и сравни- те с аналогичной зависимостью для витка с током. 2. Объясните причину отсутствия проявлений внешнего магнитного поля тороидальной обмотки в опытах по визуализации магнитного поля с помощью магнитных опилок [17]. (В этих опытах тороидальная об- мотка и подстилающая поверхность с металлическими опилками раз- мещались в одной плоскости.) 5.5. Численное решение уравнений Лапласа и Пуассона В предыдущих разделах мы находили потенциал и напряженность элек- трических полей, обусловленных стационарным распределением электриче- ских зарядов, используя принцип суперпозиции. Во многих случаях прихо- дится решать более сложные задачи, из которых наиболее типичными яв- ляются следующие: 1. Нахождение потенциала электрического поля при неизвестном место- положении исходных зарядов, но заданном электрическом потенциале на границах области. (Например, задача о распределении потенциала электри- ческого поля, создаваемого системой неподвижных проводников, помещен- ных в вакуум и подключенных к батареям. Здесь можно измерить потенци- ал каждого проводника, но задать распределение электрических зарядов на проводниках, зависящее от их формы, весьма сложно.) 2. Нахождение потенциала электрического поля, создаваемого заданным распределением электрических зарядов р(х, y,z) в пространстве. 128
5. Моделирование статических электрических и магнитных полей Хорошо известно, что прямой метод вычисления потенциала электриче- ского поля ip(x, у, z) в этих задачах состоит в решении уравнения Лапласа , ч 52<з 32<р д2(р . ,с А<р(х,у,х) = — ~ + —~+—~ = 0 (5.50) дх2 ду2 3z и уравнения Пуассона . , ч д2а> д2(р 32<р , , Др(х,у,х) = -^ + - + —^ = -p(x,y,z), (5.51) дх ду dz соответственно. Уравнения (5.50), (5.51) относятся к классу дифференци- альных уравнений в частных производных эллиптического типа. В дальнейшем мы будем рассматривать только частный случай эллипти- ческих уравнений для поля (р, зависящего от двух пространственных пере- менных. Совершенно очевидно, что для полного решения задачи уравнения (5.50), (5.51) необходимо дополнить граничными условиями. Различают три типа граничных условий: 1) граничные условия Дирихле (значения <р зада- ются на некоторой замкнутой кривой в плоскости (х,у) и, возможно, на не- которых дополнительных кривых, расположенных внутри области (рис. 5.29)); 2) граничные условия Неймана (на границе задается нормаль- ная производная потенциала <р); 3) смешанная краевая задача (на границе задается линейная комбинация потенциала <р и его нормальной производ- ной). Рис. 5.29 Рассмотрим методы численного решения более общего уравнения (5.51), предполагая, что решение ищется в единичном квадрате. В качестве первого шага получения численного решения преобразуем уравнение (5.51) к виду, удобному для численного решения. Для этого в плоскости (х,у) задаем сетку 5—1576 129
Компьютерное моделирование физических процессов в пакете MATLAB из (W+l)x(JV+l) узлов, покрывающую рассматриваемую область. (Для простоты выбираем шаг сетки h по каждой координатной оси равномерным и одинаковым.) Узлы сетки будем обозначать парой индексов (г, у), пробе- гающих значения от 0 до N. В выбранных обозначениях координаты точки (г, у) равны (х, = ih, уj = jh). Обозначив значения функций ф, ръ узловых точках (Pij =<p{xj,yj), Pjj = p(xj,yj}, и используя для аппроксимации про- изводной 3-точечную формулу [18,20], получаем разностную аппроксима- цию уравнения (5.51) й+ij + Vi-ij ~ 2<Pij <Р,рл + <Рц-\ ~ 2<Pij _ h2 I,2 P'j' Уравнение (5.52) может быть получено другим способом, основанном на вариационном принципе. Рассмотрим функционал Е поля (р следующего вида: (5.52) (5.53) о о Так как величина есть электрическое поле, ар - плотность заря- да, то величина Е равна полной энергии системы. Найдем вариацию функ- ционала Е о о Интегрируя по частям первый член (5.48), получаем 8Е = J diSep И 1 dx| dy3q^-'V2(p - /?], с оо (5.54) (5.55) где криволинейный интеграл берется по границе рассматриваемой области (С), ап - единичная нормаль к границе. Для вариаций, удовлетворяющих граничным условиям на границе (С) 8(р = 0, поэтому криволинейный инте- грал в (5.55) также равен 0. Требование равенства 5Е нулю для всех таких вариаций, означает, что ^удовлетворяет уравнению (5.51). Для вывода дискретной аппроксимации уравнения в частных производ- ных на основе вариационного принципа аппроксимируем Е через значения поля в узлах сетки, используя двухточечную разностную формулу для про- изводной и правило трапеций для вычисления интеграла: 130
5. Моделирование статических электрических и магнитных полей < /V /V _ _ ЛМЛМ Е=?ZZtfe" +~ a2ZZ^ (5-56) Z i=l j=l i=l J=1 Накладывая условие _E =0, (5.57) д<Рц для всех ij, приходим к разностному уравнению (5.52). Предваряя решение двумерных уравнений Лапласа и Пуассона, рассмот- рим методы решения одномерной краевой задачи, которая может быть опи- сана уравнением второго порядка ТГ = -/>(*) (5.58) ах с заданными значениями <р(0) и <р(1). Соответствующий функционал Е для данного уравнения имеет вид о L J а его дискретный аналог на равномерной сетке с шагом h = \/N N N-1 Е = ~ <Р,-д2 ~ h^PiVi (5.60) i=l i=l Варьируя (5.60) по всем <р,- , получаем разностное уравнение <Рм + <Pi-\ ~ 2<Р, = ~h2Pi > (5.61) где <pQ = р(0), <pN =p(l). Уравнение (5.61) задает систему линейных уравнений относительно не- известных переменных (pt (i = 1,N-1), причем матрица системы уравне- ний является трехдиагональной (т. е. в матрице отличными от нуля оказы- ваются только элементы, расположенные на главной диагонали и двух диа- гоналях, расположенных выше и ниже главной диагонали). Для небольшого числа точек (например, N < 100) данную систему уравнений можно решить В выражении для энергии <p-t встречается дважды: в членах (<pj -<pi_^ и (Рм1 - <Р, )2 • 131
Компьютерное моделирование физических процессов в пакете MATLAB прямыми методами [21 ] или использовать специальный прямой метод, раз- работанный для решения «трехдиагональных» систем [20]. Однако на прак- тике при численном решении эллиптических уравнений приходится исполь- зовать сетки, имеющие значительно большее количество узлов, поэтому мы считаем целесообразным ограничиться рассмотрением только итерацион- ных методов (на примере метода релаксации), применяемых в случае боль- ших разряженных матриц. Перепишем уравнение (5.61), разрешив его относительно переменной ср, : <Pi = ztPM+Pi-i+h2?,]- (5.62) Несмотря на то, что значения ср^ , cpiAi, входящие в правую часть урав- нения (5.62), нам не известны, его можно интерпретировать как «уточне- ние» значений ср, через значения в соседних точках. Следовательно, метод решения уравнения (5.62) (метод Гаусса-Зейделя) состоит в следующем: 1) выбрать некоторое начальное приближение для решения уравнения (5.61); 2) продвигаясь по сетке (например, слева направо), уточнить реше- ния уравнения в соответствии с (5.62). При многократном повторении опи- санного процесса начальное приближение может сойти («срелаксировать») к точному решению. На практике вместо уравнения (5.62) используют обобщенное уравне- ние, в котором на каждом шаге релаксации cpt заменяется линейной комби- нацией из своего старого значения и «улучшенного» по формуле (5.62) <Р, —> = (1 - +у(р,ч1 +<Pi-\ +h2Pt). (5.63) Для исследования сходимости описанной процедуры вычислим измене- ние функционала энергии Е. Подставляя (5.63) в (5.60), после ряда преобразований найдем Е'-Е = <у(2-<у)Г 1 h L2 fe+i + Р/-1 (5.64) Из (5.64) видно, что при ]0,2[ энергия не возрастает и, следовательно, итерационный процесс будет сходиться к требуемому минимальному зна- чению. Существование посторонних минимумов энергии свидетельствует о плохой обусловленности линейной системы. Параметр со определяет ско- рость сходимости итерационного процесса - скорость релаксации. Принято различать два случая: при со < 1 говорят, что используется метод «нижней релаксации», при со > 1 - метод «верхней релаксации». 132
5. Моделирование статических электрических и магнитных полей В качестве примера, иллюстрирующего релаксационный метод, рас- смотрим одномерную краевую задачу для уравнения (5.58) с р(х)- 12х2, $?(0) = <р(У) = 0 , имеющую точное решение <р(х) = х(1- х3) с энергией Е = -9/14 = -0.64286. Для решения поставленной задачи необходимо создать m-файл, содер- жащий описание функции, возвращающей матрицу, в n-м столбце которой находятся решения, полученные на n-м итерационном шаге. Ниже приво- дится листинг файла Iteration.m, который содержит описание данной функции. % листинг файла Iteration.m function z=interation(N,Omega,Number_of_Iteration) % функция, реализующая итерационный процесс h=l/N; % шаг сетки i=l:N+l; % начальные значения x(i)=(i-l)*h; f=ro(x); phi(i)=0; % итерационный цикл for k=l:Number_of_Iteration for i=l:N-l % прохождение по узлам сетки phi(i+l)=(l-Omega)*phi(i+l)+Omega/2*(phi(i)+phi(i+2)-... h.A2*f(i+l)); end; ifk—l q=phi'; % сохранение решения на первом шаге итерации else q=cat(2,q,phi'); % сохранение каждого следующего решения % в новый столбец матрицы q end; end; z=q; function z=ro(x) % начальное приближение z=-12*x.A2; Здесь для сохранения решений уравнения, получаемых на каждом ите- рационном шаге, в соответствующем столбце матрицы q мы используем 133
Компьютерное моделирование физических процессов в пакете MATLAB функцию cat. Первый аргумент функции определяет способ размещения добавляемого вектора. Если значение первого элемента установить равным единице, то вектор будет добавлен к существующему вектору снизу, если 2 - то новый вектор размещается справа от существующего, т. е. формиру- ется матрица. Для нахождения численных решений, а также отображения точного ре- шения и решений, полученных на выбранных итерационных шагах, на гра- фике следует выполнить следующую последовательность команд: N = 21; % число узлов сетки, в узлах которой ищется решение уравнения i = 1:N+1; x(i)=l/N; Omega=l; % параметр итерационного процесса Niteration=200; % число итераций у = Iteration(N,Omega,Niteration); Nl=200; % число точек для построения графика функции j = 1:N1+1; xl(j) = (j-l)/Nl; % координаты узлов сетки для вычисления % значений точного решения yl(j) = xl(i)*(l-xl(i).*3); % точное решение plot(xl, yl,x,y(:, 10), '-->,y(:^0),*:>,y(:, 180), Результаты выполнения приведенной выше последовательности команд представлены на рис. 5.30.
5. Моделирование статических электрических и магнитных полей Можно продемонстрировать сходимость итерационного процесса, по- строив зависимость функционала энергии как функцию числа итераций. Для решения поставленной задачи необходимо создать m-файл, содержа- щий описание функции, возвращающей значения функционала энергии на n-м итерационном шаге. Ниже приводится листинг файла Iteration_of _Energy.in, который содержит описание данной функции. % листинг файла Iteration_of_Energy.m function z=Interation_of_Enegy(N,Omega,Number_of_Iteration) % функция, возвращающая значения энергии на каждом % шаге итерационного процесса h=l/N; % шаг сетки i=l:N+l; % начальные условия x(i)=(i-l)*h; f=ro(x); phi(i)=0; % итерационный цикл for k=l:Number_of_Iteration % for i=l:N-l % прохождение по узлам сетки для вычисления % решения phi(i+l)=(l-Omega)*phi(i+l)+Omega/2*(phi(i)+phi(i+2)-... h.A2*f(i+l)); end; е=0; for i=2:N+l % прохождение по узлам сетки для вычисления энергии e=e+(phi(i)-phi(i-l)).A2/(2*h)+h*phi(i)*f(i); end; En(k)=e; end; z=En; function z=ro(x) % начальное приближение z=-12*x.A2; Для нахождения зависимости энергии от номера шага итерации, а также отображения данной зависимости на графике следует выполнить следую- щую последовательность команд: » Ni = 200; »i=l:Ni; 135
Компьютерное моделирование физических процессов в пакете МА TLAB » z=Interation_of_Energy(Ni,1,200); » zl(i)=-9/14; » plot(i,z,i,zl, Результаты выполнения перечисленной выше последовательности ко- манд представлены на рис. 5.31. -°70 20 40 60 80 100 120 140 160 180 200 Рис. 5.31. Зависимость энергии от номера итерации Задача 5.8 1. Используя выражения (5.60), (5.63), получите формулу (5.64). 2. Получите аналитическое решение рассмотренной выше краевой задачи и найдите точное значение энергии. 3. Исследуйте зависимость скорости сходимости релаксационного процес- са от значения параметра со. Сравните скорость сходимости методов верхней и нижней релаксации. В практических расчетах читателю могут пригодиться несколько по- лезных советов, приведенных в [18]: 1. Выбор хорошего начального приближения уменьшает необходимое число итераций. 2. Необходимо использовать оптимальное значение параметра релаксации, которое может быть оценено аналитически или получено эмпириче- ским путем. 3. Процесс может оказаться более эффективным, если несколько итера- ций провести по некоторой сеточной подобласти, в которой сеточное 136
5. Моделирование статических электрических и магнитных полей решение известно наиболее слабо, что позволяет сэкономить затраты на релаксацию уже отрелаксировавших частей решения. 4. Провести расчет на относительно грубой сетке, для которой объем вы- числений невелик, а затем экстраполировать полученное решение на бо- лее мелкую сетку и использовать эти значения в качестве начального приближения для последующих итераций. Для решения двух- и трехмерных задач также может быть использована описанная выше итерационная процедура. В двухмерном случае аналог формулы (5.64) получается решением уравнения (5.52) относительно фу и заменой в (5.64) <pt -> : Фц +^k+ij+ <Pi-\j +(Рц^ + Л2Л/]- (5-65) Если данный алгоритм применяется последовательно к каждому сеточ- ному узлу (например, все узлы пробегаются последовательно слева направо и сверху вниз), то можно показать, что функционал энергии (5.56), при ус- ловии, что со лежит в соответствующих пределах, всегда уменьшается и процесс сходится к искомому решению. Продемонстрируем метод релаксации на примерах решения двумерного уравнения Лапласа (5.50) и двумерного уравнения Пуассона (5.51). Поставим следующую краевую задачу для уравнения Лапласа: найти решение уравнения (5.50) в квадратной области (0 < х < 1 см, 0 < у < 1 см) при заданных значениях потенциалов на границах и(х,0) = 10 , и(х,1) = -10 (и(0, у) = и(1, у) = 5). Для решения поставленной задачи необходимо создать m-файл, содержащий описание функции, возвращающей значения потен- циала на каждом шаге итерационного процесса. Ниже приводится листинг файла IterationL.m, содержащий описание данной функции. function z=interationL(N, Omega, Number_of_Iteration, phi) % функция, возвращающая значения потенциала на каждом шаге % итерационного процесса h=l/N; % шаг сетки % вычисление координат узлов сетки i=l:N+l; x(i)=(i-l)*h; j=l:N+l; y(j)=(j-l)*h; % итерационный цикл for k=l:Number_of_Iteration 137
Компьютерное моделирование физических процессов в пакете MATLAB % прохождение по узлам сетки forj=2:N for i=2:N phi(i j)=(l-Omega)*phi(i j)+Omega/4*(phi(i+l j)+phi(i-l j)+.. . phi(ij+l)+phi(ij-l)-h.A2*f(i+lj+l)); % релаксация end; end; ifk==l q=phi; else q=cat(2,q,phi); end; end; z=q; Далее необходимо выполнить следующую последовательность команд: N=15; i=l:N+l; j=l:N+l; mu(i,l)=10; % потенциал на левой границе mu(i,N+l)=-10; % потенциал на правой границе mu(lj)=5; % потенциал на нижней границе mu(N+lj)=5; % потенциал на верхней границе % задание начального приближения kx=2:N; ky=2:N; mu(kx,ky)=12; % параметр релаксации Omega=l; Niter=200; % число итераций z=interationL(N,Omega,Niter,mu); % решение уравнения Лапласа % вычисление векторов и матриц для построения карты линий уровня x(i)=(i-l)/N; y(j)=(j-l)/N; [xl yl]=meshgrid(x,y); К=100; % номер итерации для построения карты линий уровня N1=(N+1)*K+1; N2=(N+1)*(K+1); A=z(l:N+l,Nl:N2); % выделение К-го решения из общей матрицы решений [C,h] = contour(xl,yl,A,17); 138
5. Моделирование статических электрических и магнитных полей Результат выполнения приведенной выше последовательности команд представлен на рис. 5.32. Рис. 5.32. Карта эквипотенциален решения краевой задачи уравнения Лапласа на 100-м шаге итерации Для просмотра процесса релаксации решения уравнения Лапласа следу- ет выполнить следующую последовательность команд: % последовательность команд для создания анимационного клипа set(gca,'nextplot','replacechildren'); % задание режима перерисовки % карты в одном и том же окне % создание кадров анимационного клипа for K=2:Niter-l N1=(N+1)*(K-1)+1; N2=(N+1)*K; A=z(l:N+l,Nl:N2); [C,h]=contour(xl,yl,A,17); F(K-l)=getframe; % создание одного кадра end; MATLAB, в процессе выполнения цикла по переменной К, выводит на экран каждый вновь создаваемый кадр. Для повторного воспроизведения анимационного клипа используется команда movie(F,n), где F - имя пере- менной, в которую помещены кадры клипа, п - число повторений клипа, 139
Компьютерное моделирование физических процессов в пакете МА TLAB если значение п не указано, то клип воспроизводится бесконечное число раз (до закрытия графического окна). Для получения стоп-кадра следует щелк- нуть по любому пункту меню графического окна. Для продолжения воспро- изведения нужно щелкнуть мышью в поле графика. Можно сохранить соз- данный анимационный клип в файле, используя команду save. Например, для созданного выше анимационного клипа данная команда имеет следую- щий синтаксис: »save имяфайла F Для загрузки и выполнения ранее созданного анимационного клипа ис- пользуется следующая последовательность команд: »load имя файла имяпеременной » пкме(имя_переменной) Задача 5.9 1. Рассмотрите процесс эволюции карты эквипотенциальных поверхно- стей в процессе итераций. 2. Исследуйте скорость сходимости методов нижней и верхней релаксаций. 3. Измените описанный выше документ, используя для разностной аппрок- симации лапласиана 5-точечную формулу, имеющую более высокий по- рядок точности: К= ^-2 Л-2 +16Л-1 - зол+1б/,+] - /М2). Как изменяется решение при использовании более точной формулы, а также эффективность расчетов? 4. Используя описанный выше документ, вычислите зависимость разности потенциалов от расстояния между двумя линейными зарядами. Срав- ните полученные численные результаты с известным аналитическим решением этой задачи. Исследуйте зависимость скорости сходимости метода релаксаций и точности численного решения от шага сетки. 5. Помимо граничных условий Дирихле можно задавать периодические гра- ничные условия, при которых потенциалы на правой и левой, а также на верхней и нижней границах задаются произвольными, но равными по ве- личине друг другу, т. е. <PiO = Pin > Фоj =(Pn j- Эти условия могут описывать пространственно периодическое распре- деление плотности заряда в кристалле. Модифицируйте соответствующим образом описанный выше документ и решите уравнение Пуассона с перио- 140
5. Моделирование статических электрических и магнитных полей дическими граничными условиями. Как будет выглядеть решение уравне- ния в данном случае? Рассмотрим решения краевой задачи двумерного уравнения Лапласа (5.55) для квадратной области (0 < х < 1 см, 0 < у < 1 см) с известными по- тенциалами на границах (и(х,0) = 10 5, и(х,1) = -105, и(0, у) = 5, и(\,у) = 5В), полученного на сетке, состоящей из 15x15 узлов (рис. 5.32). Из рис. 5.32 видно, что линии, расположенные на карте эквипотенциальных уровней оказываются негладкими (имеют в некоторых точках изломы). На- личие изломов, в свою очередь, у линий равных потенциалов свидетельст- вует о наличии разрывов у производной функции 9<д(х, у), описывающей напряженность электрического поля. С другой стороны, как известно из теории функций комплексного переменного, функция <р(х,у), удовлетво- ряющая уравнению Лапласа, является аналитической [22]. Необходимым и достаточным условием аналитичности функции <р(х, у) является непрерыв- ность ее производных, которому, как очевидно, не отвечает полученное на- ми численное решение. Обнаруженный «дефект» численного решения свя- зан с большим шагом сетки, на которой ищется решения уравнения (5.50). Для его устранения можно использовать два способа: 1) находить численное решение на сетке с меньшим шагом; 2) используя найденное числовое ре- шение на сетке, состоящей из 15x15 узлов, находить значения в точках, не совпадающих с узлами сетки, с помощью интерполяционной процедуры. Подробное рассмотрение методов интерполяции функций и связанных с этой задачей проблем выходит за рамки данного раздела, поэтому мы огра- ничиваемся только одним методом, получившим в последние годы наи- большее распространение в прикладных исследованиях - методом сплайн- интерполяции. Происхождение этого метода и самого термина «сплайн» связывают с техническим приемом чертежников. При необходимости про- вести непрерывную кривую через сеточный график { хп, ул } на бумаге на- носят точки {хп,уп }. Около каждой из них втыкают две булавки и через образовавшийся коридор пропускают гибкую и упругую стальную линейку («сплайн»). Форма, которую принимает эта линейка, является решением за- дачи о сплайн-интерполяции сеточной функции { х„,у„}. Можно показать, что функция у(х), описывающая форму линейки, сводится к уравнению y(IV) = 0. Из уравнения Эйлера следует, что функция у(х) является куби- ческим полиномом, при этом на каждом интервале [х„,х,н1] имеется свой 141
Компьютерное моделирование физических процессов в пакете МА TLAB кубический многочлен. Для обеспечения гладкости интерполяционной про- цедуры накладывается требование непрерывности в узловых первой и вто- рой производных функции у(х). Аппарат сплайн-интерполяции в настоя- щее время существенно развит (в частности, разработаны методы интерпо- ляции функций, зависящих от двух переменных) и доведен до уровня стандартных функции, включенных в современные программные средства для математических вычислений. Для использования сплайн-интерполяции следует дополнить приведен- ную выше последовательность команд следующими командами: % задание координатной сетки для вычисления значений сплайна М=100; п=1:М; х2(п)=(п-1)/М; у2(п)=(п-1)/М; [Х2 Y2]=meshgrid(x2,y2); zi3 = interp2(xl,yl,A,X2,Y2,'splain'); % вычисление значений сплайна [C,h]=contour(X2,Y2,zi3,17); Результаты выполнения дополнительных команд представлены на рис. 5.33. Рис. 5.33. Карта эквипотенциален решения краевой задачи уравнения Лапласа на 100-м шаге итерации при использовании сплайн-интерполяции 142
5. Моделирование статических электрических и магнитных полей Сравнение зависимостей, представленных на рис. 5.33, показывает, что, используя сплайн-интерполяцию, удалось устранить недостатки численного решения, проявляющиеся в наличии изломов линий равного потенциала. Задача 5.10 1. Используя массив интерполированных значений решения уравнения Лап- ласа, вычислите напряженность электрического поля и постройте карту нормированных векторов единичной длины, касательных к сило- вой линии электрического поля. (Указание. См. 5.1.) 2. Постройте карту эквипотенциальных поверхностей функции |£(х, у)|. Сравните карты линий уровня функций <р(х, у) и \Ё(х, у^. Последовательность действий, позволяющая найти и провести после- дующую визуализацию численного решения уравнения Пуассона, анало- гична описанной выше последовательности действий. Однако требует- ся внести некоторые изменения в т-файл, содержащий определение функции, возвращающей численное решение, поскольку процесс релакса- ции не должен касаться области с заданной плотностью заряда. Ниже приводится листинг файла InterationP.m, содержащий модифицирован- ную функцию, возвращающую численное решение уравнения Пуассона с правой частью вида: ) = / 7’ при х е Г0-4’0 6]’ У е [°-4>°.6] [О, при х £ [0.4,0.6], у £ [0.4,0.6] % листинг файла InterpolationP.m function z=interationP(N, Omega, Number_of_Iteration, phi) h=l/N; % шаг сетки % вычисление координат узлов сетки i=l:N+l; x(i)=(i-l)*h; j=l:N+l; y(j)=(j-l)*h; f=ro(N,x,y); % вычисление значений функции, описывающей % заданное распределение заряда for k=l:Number_of_Iteration % итерационная процедура for j=2:N % проход по узлам сетки for i=2:N % проверка, где находится текущий узел if (x(i)>=0.4)&(x(i)<=0.6)&(y(j)>=0.4)&(y(j)<=0.6) 143
Компьютерное моделирование физических процессов в пакете MATLAB phi(iJ)=f(ij)*hA2; % если в области с заданным распределением % то равно значению потенциала else % если вне области, то релаксация phi(ij)=(l-Omega)*phi(ij)+Omega/4*(phi(i+lj)+... phi(i-lj)+phi(ij+l)+phi(ij-l)-phi(ij)); end; end; end; ifk==l q=phi; else q=cat(2,q,phi); end; end; z=q; function z=ro(N,x,y) % функция, описывающая плотность распределения заряда forj=l:N+l for i=l:N+l if (x(i)>=0.4)&(x(i)<=0.6)&(y(j)>=0.4)&(y(j)<=0.6) z(ij)=700; else z(ij)=O; end; end; end; Задача 5.11 Найдите численные решения граничной задачи и(х,0) = и(х,1) = 0, и(0, у) = и(1, у) - 0 уравнения Пуассона с заданным распределением плотности заряда (5.66) и проведите их визуализацию, аналогично то- му, как это было сделано выше в данном разделе. 144
5. Моделирование статических электрических и магнитных полей ЛИТЕРАТУРА 1. Калашников С. Г. Электрические и магнитные поля. М.: Наука, 1970. 2. Фриш С. Э., Тиморева А.В. Курс общей физики. М.г. Физматгиз, 1961. Т. II. 3. Фейман Р., Лейтон Р., Сэндс М. Феймановские лекции по физике. Вып. 5,6. М.: Наука, 1977. 4 Парселл Э. Электричество и магнетизм. Берклеевский курс физики. М : Наука, 1975. 5. Говорков В. А. Электрические и магнитные поля. Л.: Гостехиздат, 1960. 6. Тамм И. Е. Основы теории электричества. М.: Наука, 1966. 7. Смайт В. Электростатика и электродинамика. М.: Иностранная литература, 1954. 8. Стрэттон Дж. А. Теория электромагнетизма. М.: Иностранная литература, 1948. 9. Джексон Дж. Классическая электродинамика. М.: Иностранная литература, 1965. 10. Зоммерфельд А. Электродинамика. М.: ИЛ, 1958. 11. Сборник задач по общему курсу физики. Электричество и магнетизм ./Под ред. И. А. Яков- лева. М.: Наука, 1977. 12. Батыгин В. В., Топтыгин И.Н. Сборник задач по электродинамике. М.: Наука, 1970. 13. Векштейи Е. Г. Сборник задач по электродинамике. М.: Наука, 1966. 14. Смирнов В. И. Курс высшей математики. М.: Физматгиз, 1958. Т.З. 15. Поршнев С. В., Харитонов В.И. Особенности магнитного поля соленоида с постоянным током//Электричество, 1998. № 6. 16. Сивухин Д. В. Общий курс физики. Электричество. М.: Наука, 1977. Т. Ш. 17. Поль Р. В. Учение об электричестве. М.: Физматгиз, 1962. 18. Кунин С. Вычислительная физика. М.: Мир, 1992. 19. Поршнев С. В., Харитонов В.И. Магнитное поле тороидальной обмотки//Преподавание фи- зики в высшей школе, 1998. № 14. 20. Федоренко Р. П. Введение в вычислительную физику. М.:Изд-во Моск, физ.-техн. ин-та, 1994. 21. Самарский А. А. Введение в численные методы. М.: Наука, 1987. 22. Морс Ф.М, Фешбах Г. Методы теоретической физики. Т. 1. М.: ИЛ, 1958. 145
Глава 6 МОДЕЛИРОВАНИЕ ДВИЖЕНИЯ ЭЛЕКТРИЧЕСКИХ ЗАРЯДОВ В ЭЛЕКТРИЧЕСКИХ И МАГНИТНЫХ ПОЛЯХ 6.1. Введение Как известно, на электрический заряд q, движущийся в скрещенных электрическом Ё и магнитном В полях со скоростью v, действует сила Лоренца F = ^(£ + [vx5]). (6.1) В соответствии со вторым законом Ньютона ф=«=г. (6.2) dt dt где т - масса заряда, при нерелятивистском движении равная массе покоя т0, и зависящая от скорости по закону при движении со скоростями, близ- кими к скорости света. Следовательно, для полного описания движения заряженной частицы необходимо при заданных напряженностях электрического и магнитного полей решить задачу Коши системы, состоящей из трех дифференциальных уравнений второго порядка: “ = = У(Ех(х’ У- z)+[V х Ё(х, у, г)]х) at at ' = ~- = ?(£’v(^>’-z) + [vx5(x,y,z)]v), (6.3) “ = d^mvj = q(E_(x, у, z) + [v X в(х, у, г)]_) dt dt где индексы х, у, z обозначают проекции векторов на соответствующую ось выбранной системы координат.
6. Моделирование движения электрических зарядов в электрических и магнитных полях Аналитическое решение системы (6.3) может быть найденно для относи- тельно небольшого числа случаев, поэтому для описания движения заря- женных частиц в электромагнитных полях необходимо проведение числен- ных расчетов. 6.2. Рассеивание частиц в центральном поле. Опыт Резерфорда Как известно [1], задача об описании результата столкновения двух час- тиц с массами mt, т2 может быть сведена к эквивалентной задаче об откло- нении одной частицы с массой т (т - приведенная масса) в поле U(t) не- подвижного силового центра, расположенного в центре инерции. Явление рассеивания состоит в том, что частица с начальной кинетической энергией Е и прицельным расстоянием р (рис. 6.1) влетает в потенциальное поле на большом удалении от его центра. По мере прохождения через поле частица отклоняется от первоначальной траектории и после удаления от центра поля на достаточное расстояние частица продолжает движение с той же энергией Е, но под углом / к исходному направлению движения. Для полного опре- деления результата столкновения двух частиц необходимо решение уравне- ний движения (6.2) с учетом конкретного закона взаимодействия частиц. Так как потенциал зависит лишь от расстояния частицы до центра поля, уг- ловой момент частицы является интегралом движения, а вся ее траектория будет лежать в одной плоскости. Поэтому система уравнений движения в данном случае будет состоять из двух уравнений второго порядка или четы- рех уравнений первого порядка (для двух координат и двух скоростей). Проведем подробное исследование движения альфа-частицы (та = 6.65-10"27 кг; qa = +2е ,е = 1.60 -1(Г19 Кл) в окрестности ядра атома золота (тАи = 3.27 1О~25кг,qAu =+79е) (ядро атома мишени в первом экс- 147
Компьютерное моделирование физических процессов в пакете МА TLAB перименте Резерфорда по рассеиванию). Так как та « тАи , будем прини- мать при численных расчетах, что т = тАи и рассматривать ядро атома зо- лота в акте рассеяния как неподвижное. Поскольку альфа-частица не прони- кает в ядро, то можно считать, что взаимодействие между частицей и ядром описывается законом Кулона F = — 4яг0 (6.4) где s0- диэлектрическая проницаемость вакуума (£0 ~ 8.85-10 12<Д/л«), q, Q - заряды рассеиваемой частицы и кулоновского центра соответственно, R - радиус-вектор заряда q. Следовательно, система уравнений движения альфа-частицы в прямо- угольной системе координат, центр которой совпадает с зарядом Q, будет иметь следующий вид: d2x т—=- = dt2 d2y т—= dt2 _J_____qQ___х 4ж£0 (х2 + у2У/2 1 qQ______ 4^о (х2 + y2f У (6.5) Для дальнейшего численного решения удобно записать (6.5) в виде сис- темы 4-х уравнений первого порядка dv т—- = dt r/v, т dt dx vv = — х dt 1 qQ (х2 + у2^2 •' dt 1 4жеь (х2 + у2У1У (6.6) Для однозначного вычисления траектории движения рассеиваемой час- тицы необходимо также задать следующие начальные условия: х(0), у(0), vx(0), v,.(0). Для численных расчетов оказывается удобным записать систему уравне- ний (6.6) в безразмерных переменных Т , х , у , vx , vv, т , q , Q , связан- ных с размерными следующим образом: 148
6. Моделирование движения электрических зарядов в электрических и магнитных полях / X у v t = , х ~ , V = - , Г.. = -- , Т а а (а/Т) vy m Ч Q. V - 7~~ГТ > т~ — ’ ? -------- > 2 = ~ , ' (а/Т) М Qo v Qo (6.7) здесь T, a, M, Qo - единицы измерений времени, расстояния, массы и заряда, соответственно. Подставив (6.7) в (6.6), найдем dX V =---- dt _ Ж 4л:£0а2 (х2 +У2 ' dt Qo2______VQ_ 2 I Э 3 т а М Т2 dt (6.8) in a dVy M Т2 dT 4я£оа Оставляя в левых частях уравнения только безразмерные величины, преобразуем (6.8) к следующему виду х dt dVy in—- = К dT (6.9) dVv т—- = К dt 3/2 где (6.10) к = $мт~ 4я£0а3 Анализ выражения (6.10) показывает, что численное значение коэффи- циента К зависит от величин Т, а, М, Qq. Выбор величин М, Q.j достаточно очевиден: в качестве единиц измерения массы выбираем массу протона (Л/ = 1.67-10"27 кг), а в качестве единиц измерения заряда - заряд электрона (2о = е). Для выбора числовых значений величин Т, а заметим, что отноше- 149
Компьютерное моделирование физических процессов в пакете MATLAB ние а/Т имеет размерность скорости. Поэтому их значения выберем так, чтобы обеспечить выполнение условия - = с, (6.11) где с - скорость света в вакууме (с = 3-108 м/с). Из сравнения (6.7) и (6.11) очевидно, что сделанный выбор единиц изме- рения длины и времени автоматически обеспечивает измерение скорости частицы в долях скорости света. Подставляя (6.11) в (6.10), найдем 2 К = .Я^М , (6.12) 4я£0с а Подставляя в (6.12) числовые значения М, Qo, Eq, с, найдем v 1.53-10“18л< к ~. а (6.13) Из (6.13) очевидно, что выбирая значение а = 10~18л<, мы обеспечиваем численное значение коэффициента К близким к единице, т. е. записываем систему (6.9) в виде, наиболее удобном для численного решения. Отметим, что в выбранных единицах измерения размер ядра атома золота (~10-10’15 м) составляет 104. Следовательно, при моделировании рассеивания альфа- частицы на ядре атома золота значения начальных координат частицы по оси оХ нужно выбирать из условия х(0) » 104. Таким образом, в выбран- ных единицах измерения заряд рассеивающего центра Q = 79, заряд рассеи- ваемой частицы q = 2, ее масса - т = 4, значения начальной скорости дви- жения частицы находятся в интервале [0,1]. Весьма важным является вопрос о выборе длительности временного ин- тервала, на котором находится численное решение системы ОДУ (6.9), так как только при его правильном выборе можно точно определить угол рас- сеивания %. Совершенно очевидно, что длительность временного интервала зависит от начального положения частицы и начальной скорости, а также величин электрических зарядов взаимодействующих частиц и должна под- бираться для конкретных параметров моделируемой системы. Для выбора оптимальной длительности временного интервала можно использовать сле- дующий алгоритм, основанный на постоянстве угла между вектором скоро- сти и осью оХ, в областях невозмущенного движения частицы: 1. Проводится численное решение системы ОДУ (6.9) на временном ин- тервале длительностью » 2x(0)/vv(0). 150
6. Моделирование движения электрических зарядов в электрических и магнитных полях 2. Строится зависимость угла между вектором скорости и осью оХ от времени: /(/) = arccos^(f)/+ (vy(/))^. 3. При отсутствии участков, на которых %(t) « const, ищется численное решение на временном интервале большей длительности и анализируется зависимость • В связи с тем, что в ходе решения рассматриваемой задачи приходится решать систему дифференциальных уравнений на первом шаге решения следует создать m-файл, содержащий описание функции, возвращающей значения правой части системы ОДУ (6.9). Далее приводится листинг соот- ветствующего файла CenterPole.m. % листинг файла CenterPole.m function dy=CenterPole(t,z) % описание функции, возвращающей значения правой части % системы (6.9) global q Q М % задание глобальных переменных для получения % их значений из вызывающей программы A=1.53*q*Q/M; dy=zeros(4,l); % задание вектор-столбца размерности 4x1 % задание координат вектор-функции, стоящей в правой части (6.9) dy(l)=z(2); dy(2)=A*z(l)/(z(l)A2+z(3)A2)A(3/2); dy(3)=z(4); dy(4)=A*z(3)/(z(l)A2+z(3)A2)A(3/2); Для нахождения численного решения системы ОДУ (6.9) необходимо выполнить следующую систему команд: » global q m Q % задание глобальных переменных » q=2; % заряд рассеиваемой частицы » ш=4; % масса рассеиваемой частицы » Q=79; % заряд рассеивающего центра » х0=-10А6; % х-я координата начальной точки » у0=4*10А4; % значение прицельного параметра » vx0=0.1; % х-я составляющая начальной скорости » vy0=0; % у-я составляющая начальной скорости » Тшах=2*10А6 % длительность временного интервала, на котором % ищется численное решение системы ОДУ (6.9) » dt=Tmax/2000; % шаг интегрирования системы ОДУ (6.9) 151
Компьютерное моделирование физических процессов в пакете МА TLAB % решение системы ОДУ » [Т Y]=ode45('CenterPole',[0:dt:Tmax],[x0 vxO уО vyO]); » figure(l); piot(Y(:,l),Y(:,3)); % построение траектории движения » xi=acos(Y(:,2)J(Y(:,2).A2+Y(:,4).A2).A0.5); % вычисление угла наклона % вектора скорости к оси оХ » figure(2); plot(t,xi) % построение зависимости угла рассеивания % от времени Результаты выполнения приведенной выше представлены на рис. 6.2 и 6.3. последовательности команд Рис. 6.2. Траектория движения частицы, рассеиваемой на неподвижном ядре Рис. 6.3. Зависимость угла рассеивания от времени 152
6. Моделирование движения электрических зарядов в электрических и магнитных полях Задача 6.1 1. Проведите численные расчеты и постройте на одном чертеже семей- ство траекторий и углов рассеивания альфа-частицы при различных значениях прицельного параметра. Объясните полученные результаты. 2. Постройте зависимость угла рассеивания у от прицельного параметра. (Для этого можно выбрать диапазон изменения прицельного парамет- ра, выбрав шаг, разбить его на конечное число точек и для каждого зна- чения прицельного параметра, решив уравнения движения, определить угол рассеивания.) Объясните, почему угол рассеивания является воз- растающей или убывающей функцией прицельного параметра. Задача 6.2 Для упрощения процесса вычислений и построения графиков зависимо- стей, характеризующих процесс рассеивания заряженной частицы на неподвижном центре, разработайте проект графического интерфейса пользователя и создайте его практическую реализацию, используя сред- ства визуального проектирования пакета MATLAB. В физических применениях обычно приходится иметь дело не с индиви- дуальным рассеиванием одной частицы, но с рассеиванием целого пучка одинаковых частиц, падающих на центр с одинаковой начальной скоростью и различными прицельными параметрами. Различие в прицельных парамет- рах р обуславливает рассеивание частиц пучка под различными углами х- Для характеристики исследуемого процесса принято вводить число частиц dN , рассеиваемых в единицу времени на углы, лежащие в интервале Z+^Z- Однако для характеристики процесса рассеивания более удобной оказыва- ется величина da (называемая «эффективным сечением рассеивания») . dN ,, , .. da=—, (6.14) п где п - число частиц, проходящих в единицу времени через единицу площа- ди поперечного сечения пучка. Эта величина определяется видом рассеи- вающего поля. Связь между % и р взаимно однозначна, в чем вы могли убедиться, ре- шив задачу 6.1. Поэтому в заданный интервал углов между % и рас- сеиваются лишь те частицы, прицельный параметр у которых лежит в ин- тервале между /X/) и /Xz)+t4Xz)- Число рассеянных частиц равно произве- дению п на площадь кольца между окружностями с радиусами /X/) и /Xz)+^/Xz)> т. е. dN = 2яр dp n . Подставив это выражение в (6.14), найдем 153
Компьютерное моделирование физических процессов в пакете МА TLAB do- 2лд dp = 2лд(/) dp{x) dX dx (6.15) Разделив обе части выражения (6.15) на d%, получаем формулу для дифференциального сечения рассеивания: ^ = 2^)^. (6.16) dx d% Анализ выражения (6.16) показывает, что для нахождения дифференци- ального сечения рассеивания необходимо знать зависимость р = р(%}. Выше мы научились, решая уравнения движения альфа-частицы в кулонов- ском поле ядра атома золота, вычислять зависимость % = х{р} В связи с тем, что функция Х~Х[Р} является однозначной, нахождение функции Р ~ р{ х) > обратной к данной, не вызывает затруднений. Однако в выраже- ние (6.16) помимо функции р-р{х} входит и ее производная, которая не может быть вычислена без дополнительных действий, так как функция Р-Р^х} определена на неравномерной по переменной % сетке. Выход из создавшейся ситуации состоит в решении классической интерполяционной задачи: нахождении значений функции в промежуточных точках по извест- ным в конечном числе точек значениям функции (узловым точкам). Одним из наиболее популярных в настоящее время подходов к решению данной задачи является подход, основанный на использовании сплайнов (полином третьей степени) [2]. В связи с тем, что подробное рассмотрение теории сплайн-интерполяции выходит за рамки нашей книги, мы ограничиваемся только описанием примера, демонстрирующего использование функции од- номерной сплайн-интерполяции. Для вычисления дифференциального сечения рассеивания нами исполь- зуется следующий алгоритм: 1. Задать интервал изменения прицельного параметра р. 2. Задать шаг изменения дискретного параметра Ад 3. Вычислить для каждого значения прицельного параметра д числен- ные решения системы ОДУ (6.9) и определить соответствующие углы рас- сеивания 4. Решить задачи сплайн-интерполяции для функции д = д(х ) на рав- номерной сетке по переменной %. 5. Вычислить на равномерной сетке по переменной ^численным диффе- ренцированием производную функции д = д(/). 6. Вычислить в соответствии с (6.16) дифференциальное сечение рассеи- вания. 154
6. Моделирование движения электрических зарядов в электрических и магнитных полях Для реализации описанного алгоритма необходимо выполнить следую- щую последовательность команд: » clear all % очистка рабочего пространства » global Q q М % задание глобальных переменных » Q=79; % заряд рассеивающего центра » q=2; % заряд рассеиваемой частицы » М=4; % масса частицы » Тшах=2*10Л7; % длительность временного интервала, на котором % ищется численное решение системы ОДУ (6.9) » dt=Tmax/2000; % шаг интегрирования » х0=-10Л6; % х-я координата начальной точки » vx0=0.1; % х-я составляющая начальной скорости » vy0=0; % у-я составляющая начальной скорости » Ymin=0; % минимальное значение прицельного параметра » Ymax=10A5; % максимальное значение прицельного параметра » N=100; % число интервалов разбиения отрезка [Ymin,Ymax] » dy=(Ymax-Ymin)/N; % шаг разбиения % вычисление значений угла рассеивания для N+1 значения % прицельного параметра » for i=l:N+l y(i)=(i-l)*dy; [Т Y]=ode45('CenterPole,,[0:dt:Tmax],[x0 vxO y(i) vyO]); Ml=length(T); xi(i)=acos(Y(Ml,2)J(Y(Ml£).A2+Y(Ml,4).A2).A0.5); end; » figure(l); plot(y,xi); % визуализация зависимости угла % рассеивания от прицельного параметра % задание параметров сетки для вычисления интерполированных % значений зависимости р = р(/) » xl=min(xi); » x2=max(xi); » Nxi=1000; » dxi=(x2-xl)/Nxi; »i=l:Nxi+l; » Xi(i)=xl+dxi*(i-l); % вычисление координат узлов сетки » Yi=interpl(xi,y,Xi,'spIain'); % вычисление интерполированных % значений зависимости р = /?(/) » dro=abs(diff(Yi)Jdxi); % численное дифференцирование % зависимости р - р( %) » j=l:Nxi; 155
Компьютерное моделирование физических процессов в пакете МА TLAB » dsigma(j)=2*pi*Yi(j).*dro(j); % вычисление дифференциального % сечения рассеивания » xil(j)=Xi(j); » plot(xil,dsigma) % визуализация зависимости дифференциального % сечения рассеивания от угла Результаты выполнения описанной выше последовательности команд представлены на рис. 6.4 и 6.5. 2 10 10* Рис. 6.4. Зависимость угла рассеивания от прицельного параметра 10^ 6 Рис. 6.5. Зависимость дифференциального сечения рассеивания от угла рассеивания О 0 5 1 1 5 2 2.5 3 3.5 Зависимость дифференциального сечения рассеивания от угла рассеива- ния выглядит на первый взгляд несколько неожиданно, так как в выражение для вычисления дифференциального сечения (6.16) входят две монотонные d.0\ z) функции: р(/), ------ . Причина присутствия колебаний на рис. 6.5 объяс- 156
6. Моделирование движения электрических зарядов в электрических и магнитных полях няется тем, что решение системы дифференциальных уравнений, возвра- щенное функцией ode45, оказывается недостаточно точным, и, как следст- вие, с погрешностью вычисляются значения угла рассеивания. Далее зави- симость / - подвергается процедуре сплайн-интерполяции, которая не может устранить присутствующую в исходных данных погрешность. Да- лее интерполированная последовательность подвергается процедуре чис- ленного дифференцирования, которая, как известно, приводит к обязатель- ному увеличению погрешности, содержащейся в исходных данных. Следст- вием этого и являются результаты, представленные на рис. 6.5. При использовании решений системы ОДУ (6.9), полученных более точным численным методом, реализуемым функцией odel 13, отмеченной особенно- сти не возникает (рис. 6,6). Естественной платой за более точное решение является примерно двукратное увеличение времени счета. 6 3 2 Рис. 6.6. Зависимость дифференциального сечения рассеивания от угла рассеивания, вычисленная по численному решению уравнения функцией odel 13 Анализ зависимостей дифференциального сечения рассеивания от угла, представленных на рис. 6.5 и 6.6, показывает, что данная зависимость меня- ется в широком динамическом диапазоне. Для их представления удобно ис- пользовать графики, при построении которых на оси oY откладываются значения 1п(А<т) (полулогарифмический масштаб). Для построения данного графика в пакете MATLAB используется команда semilogx: » semilogy(xil,dsigma); результат выполнения которой представлен на рис. 6.7. 157
Компьютерное моделирование физических процессов в пакете MATLAB ю'; ю'' 10* 10? 10" ю’ 10f 10s 0 0.5 1 1.5 2 2.5 3 35 Рис. 6.7. Зависимость дифференциального сечения рассеивания от угла рассеивания в полулогарифмическом масштабе Задача 6.3. Численное моделирование опыта Резерфорда В опытах Резерфорда происходило рассеивание потока альфа-частиц на ядре атома золота, значения прицельных параметров у которых на- ходились в некотором интервале значений [0;ртах], и затем проводился подсчет числа частиц, попавших в интервал углов [х, X + Ajz]. Если счи- тать, что распределение альфа-частиц в потоке по прицельному пара- метру было равномерным (т. е. любое значение прицельного параметра из интервала [0; ртах ] является равновероятным), то можно построить математическую модель опыта Резерфорда, следуя алгоритму: 1. Задать Np чисел, имеющих значения прицельных параметров, равномерно распределенных на интервале [0; ртах] (плотность потока частиц Np п = -±--.) Л-Ртах 2. Для каждой i-той частицы вычислить угол рассеивания Xi 3. Задать число интервалов Nint, на которые будет разбиваться отрезок L^min ’ -£тах ] Для генерации матрицы, содержащей случайные числа, в пакете MATLAB используется функция rand(n,m), где п - число строк матрицы, т - число столбцов матрицы. Например, для генерации строки состоящей из 5 элементов, необходимо выполнить команду » rand(l,5) Для генерации вектор-столбца команду » rand(5,l) 158
6. Моделирование движения электрических зарядов в электрических и магнитных полях ^fmax ^fmin 4. Вычислить количество частиц ANj, попавших в интервал [Xi, х, + А/] • 5. Вычислить «экспериментальные» значения дифференциального сечения рассеивания для каждого интервала углов \сул _ 1 ДУ,- Д/ п ^х 6. Создайте в пакете Mathcad документ, реализующий описанный выше ал- горитм. 7. Постройте на одном чертеже «теоретическую» и «эксперименталь- ную» зависимости дифференциального сечения рассеивания от угла. Сравните полученные результаты. 8. Исследуйте, как зависит величина отклонения между «теоретической» и «экспериментальной» зависимостями от плотности потока частиц и величины элементарного угла l\x 9. Пересчитайте созданный вами документ не менее 10 раз, сохраняя при этом результаты вычислений в отдельных файлах. Проведите сравни- тельный анализ полученных результатов. Проведите усреднение полу- ченных зависимостей и сравните отклонение между теоретической и усредненной «экспериментальной» зависимостями дифференциально- го сечения рассеивания от угла рассеивания. Задача 6.4 Задача о рассеивании заряженной частицы в поле кулоновского центра имеет аналитическое решение da — - ТС dX ( \2 cos — а 2 2 sin3 2 2 (6.17) где v^- скорость частицы на бесконечно большом удалении от рассеи- вающего центра: а - — . 4же-0 1. Запишите формулу (6.17), используя введенные выше безразмерные пере- менные. 2. Вычислите значения дифференциального сечения рассеивания для различ- ных углов рассеивания X- Постройте график зависимости дифференци- ального сечения рассеивания от угла %. 159
Компьютерное моделирование физических процессов в пакете МА TL.AB 3. Сравните результаты численных расчетов дифференциального сечения рассеивания и расчетов по формуле (6.17). Чем можно объяснить обна- руженные отличия? (Указание. В связи с большим динамическим диапа- , dcr зонам изменения функции — при сравнении результатов, полученных dX численным и аналитическим методами, используйте полулогарифмиче- ский график, при построении которого по оси ординат откладываются 1 (da>\ । значения logl- .) VdXJ Другой подход к решению рассматриваемой задачи основан на использо- вании закона сохранения углового момента L-mv^p-mr1-—-, (6.18) где — угловая скорость частицы, г - расстояние между частицей и рассеивающим центром, и закона сохранения энергии: 2 ^у- + 17(г) = Е, (6.19) л r mvL где Е = —- . 2 В цилиндрической системе координат выражение (6.19) принимает вид ™ (г2 + г2ф2 )+ U(r) = Е. (6.20) Выразив — из (6.18) и подставив в (6.20), получаем dt л z2 тД +.± -+U(r)-E. (6.21) 2 2тг2 Отсюда f 7 I2 t= l-[E-U(r)]- (6.22) V т т Г или, разделяя в (6.22) переменные и интегрируя: Г dr / = I 3-const. (6.23) J o Г2 160
6. Моделирование движения электрических зарядов в электрических и магнитных полях Если в (6.18) в качестве независимой переменной использовать расстоя- ние г, то можно записать dr .dt (6.24) dtp _ dp(dr) 1 _ L dr dt _dt _ mr2 Подставляя (6.22) в (6.24), разделяя переменные и интегрируя, находим: (р = I -у===£======== + const. (6.25) ^2m[£-t/(r)]-~- Формулы (6.23) и (6.25) решают поставленную задачу в общем виде. Формула (6.25) определяет связь между углом поворота и радиус- вектором, т. е. уравнение траектории. Формула (6.23) определяет в неявном виде зависимость расстояния от времени. В точке поворота, где Г = 0 квадратный корень в (6.22), а вместе с ним и подынтегральные выражения в (6.23), (6.25) меняют знак. Если от- считывать угол <р от направления радиуса-вектора, проведенного в точку поворота, то примыкающие с двух сторон к этой точке отрез- ки траектории будут отличаться только знаком угла <р при одинаковых значениях г. Это означает, что траектория движения рассеиваемой частицы будет симметрична относительно выбранного направления, поэтому обе асимптоты орбиты пересекают указанную прямую под одинаковыми углами (рис. 6.1). Обозначим угол между асимптотой и указанной прямой tp(i. Тогда, как видно из рисунка, угол отклонения час- тицы х при ее пролете мимо центра есть Х = |я--2^0|. Угол <рй определяется согласно (6.25) интегралом L э “ у аг «’О = I ' где rmin - корень уравнения fl[E-U(r)]---~=O. V т т г (6.26) (6.27) (6.28) 6—1576 161
Компьютерное моделирование физических процессов в пакете MATLAB Задача 6.5 1. Запишите уравнения (6.22), (6.23), (6.25), (6.27) в безразмерном виде. 2. Используя обезразмеренные уравнения (6.23), (6.25), проведите вычисле- ния и постройте траекторию движения альфа-частицы в электро- статическом поле ядра атома золота. Сравните траекторию движе- ния с аналогичной зависимостью, полученной выше решением уравнений движения. Объясните полученные результаты. 3. Используя уравнение (6.26) и обезразмеренное уравнение (6.27), вычисли- те зависимость р - р(%} и изобразите ее графически. Сравните дан- ную зависимость с аналогичной зависимостью, полученной выше реше- нием уравнений движения. Объясните полученные результаты. 4. Вычислите значения дифференциального сечения рассеивания для различ- ных углов рассеивания X- Постройте график зависимости дифферен- циального сечения рассеивания от угла %. 5. Сравните результаты численных расчетов дифференциального сечения рассеивания, полученных решением уравнений движения и прямым вы- числением угла рассеивания, с результатами, получаемыми по формуле (6.17). Чем можно объяснить обнаруженные отличия? Какой метод расчета оказывается более точным? 6.3. Моделирование движения электрических зарядов в постоянном магнитном поле Для описания движения заряда в постоянном магнитном поле при задан- ной зависимости напряженности магнитного поля от координат необходимо решить следующую систему ОДУ _ d(mvx) _ у, dp.. d(mv.,) г хт ~ * В(х’ У> z)]v • (6.29) at at dp d(mv) r 0z xi у = = ф x B(x, y, z)j. at at Далее в данном разделе рассмотрим моделирование движения электри- ческих зарядов в постоянном однородном магнитном поле В при релятиви- стских и нерелятивистских скоростях. При движении со скоростями много меньшими скорости света система ОДУ принимает вид 162
6. Моделирование движения электрических зарядов в электрических и магнитных полях (6.30) Предваряя численное решение системы ОДУ (6.30), введем безразмер- ные переменные t =t/T, В = В/\В\, ? = v/c (с- скорость света), R - R/cT , в которых система ОДУ принимает следующий вид: at rriQ = №31) dt rriQ ^‘LWxSi dT m0 Для выбора единиц измерения времени заметим, что на электрический заряд, движущийся в плоскости, перпендикулярной напряженности магнит- ного поля, действует сила, перпендикулярная его скорости. Следовательно, в данном случае заряд будет двигаться по окружности (ларморовской ок- ружности) радиуса R, который можно найти из условия равенства центро- бежной силы и силы Лоренца (6.32) Откуда R (633) Вспоминая, что период обращения материальной точки, двигающейся по окружности с равномерной скоростью, равен длине окружности, деленной на модуль линейной скорости, и используя (6.33), найдем Т = 2jtR = 2лпг? . (6.34) v q В\ Из (6.34) видно, что выбор в качестве единицы измерения времени пе- риода обращения заряда по ларморовской окружности позволяет записать систему ОДУ (6.31) в следующем виде 163
Компьютерное моделирование физических процессов в пакете MATLAB ^•=М’ *4=2<г(»л-’Д) at = 2^ X й]у = - ?А ). (6.35) at = 2я[р х - 2я(рА - 1\Д) at Отметим, универсальность системы ОДУ (6.35), заключающуюся в том, что в выбранной системе единиц коэффициенты системы не зависят от па- раметров заряда и напряженности магнитного поля, которые входят в без- размерные начальные условия: радиус-вектор начального положения заряда Rg = r/cT и вектор начальной скорости v0 = v0/c . Легко видеть в однород- ном поле система уравнений (6.35) является замкнутой, так как уравнения зависят только от трех неизвестных функций vx (t),vz (f) • Найдя чис- ленное решение (6.35), далее интегрированием зависимостей vx (f),vy (t),v, (t) можно определить зависимости x(t),y(t),z(t). Однако оказывается более удобным дополнить (6.35), тремя уравнениями для координат: dx _ dy _ dz. ------------------------= V, , — = v„, — = v, dt dt dt так как, решив более общую систему ОДУ, состоящую из 6 дифференци- альных уравнений одновременно, можно найти зависимости x(r),y(t),z(t) и (f)’^v (г)’^ (?) Дополнительный аргумент в пользу данного подхода состоит в том, что общая система уравнений распадается на две независи- мые системы только для однородного магнитного поля, для неоднородного поля следует решать систему ОДУ, состоящую из 6 дифференциальных уравнений первого порядка. Для нахождения решения общей системы уравнений движения следует создать m-файл, содержащий описание вектор-функции, стоящей в правой части системы ОДУ. Ниже приводится листинг соответствующего файла LorenzForce.m % листинг файла LorenzForce.m function f=LorenzForce(t,z) % задание функции, возвращающей значения первых производных global Н f=zeros(6,l); % задание вектор-столбца размерности 6x1 164
6. Моделирование движения электрических зарядов в электрических и магнитных полях % задание координат вектор-функции, стоящей в правой части % общей системы ОДУ f(l)=z(2); f(2)=2*pi*(H(3)*z(4)-H(2)*z(6)); f(3)=z(4); f(4)=-2*pi*(H(3)*z(2)-H(l)*z(6)); f(5)=z(6); f(6)=2*pi*(z(2)*H(2)-z(4)*H(l)); Далее необходимо выполнить следующую последовательность команд: » global Н; » Н=[0 0 1]; % напряженность магнитного поля % начальные условия » х0=0; » у0=0; » z0=0; » vx=0.1; » vy=0; » vz=0.01; % решение системы ОДУ »[t R]=ode45('LorenzForce',[0:10/1024:10],[хО vxO у0 vyO z0 vzO]); % построение траектории движения частицы » plot3(R(:,l),R(:,3),R(:, 5),х0,yO,zO, 'o', 'MarkerSize', 6); » axis square; grid on Результат выполнения приведенной последователь- ности команд представлен на рис. 6.8. 165
Компьютерное моделирование физических процессов в пакете MATLAB Задача 6.6 1. Постройте проекции траектории движения на соответствующие коор- динатные плоскости. 2. Проекция траектории движения на плоскость, перпендикулярную векто- ру напряженности магнитного поля, является окружностью. Опреде- лите ее радиус и период обращения по окружности. Объясните полу- ченные результаты. 3. Исследуйте зависимость величины шага спирали от скорости движения заряда? 4. Постройте зависимости скорости и ее проекций на соответствующие координатные плоскости от времени. 5. Исследуйте зависимость точности и устойчивости численного решения системы ОДУ (6.36) от шага интегрирования. Обратимся к анализу особенностей движения заряда, двигающегося с релятивистской скоростью, в постоянном электромагнитном поле. Для этого необходимо разрешить уравнение (6.2) с массой, зависящей от скорости движения по закону (6.2а), относительно первой производной скорости. Подставляя (6.2а) в (6.2) и выполняя дифференцирование по- лучаем: d , , dV dy _ -—(moyv)-moy-—~ + mov--- = F, (6.37) at at at где сила F задается уравнением (6.1). Так как dy_d{ 1 1 (vvQ_/3(pi>) то (6.37) принимает вид тоу V + тД —= F . (6.38) с2 Умножая обе части выражения (6.38) скалярно на V, получаем ivl2 И1о/ (vV) + «о/ Ц- (Vv) = m0/3(vР) = (Fv). с Откуда (vv) = ^. (6.39) т0Г Подставив (6.39) в (6.38), получаем уравнение движения, разрешенное относительно производной 166
6. Моделирование движения электрических зарядов в электрических и магнитных полях d\> I ( е У ( еУ\\ т0 = F - - F . (6.40) dt с \ с)) Уравнение (6.40) описывает движение электрических зарядов в произ- вольном постоянном электромагнитном поле. При движении в посто- янном магнитном поле сила Лоренца F = перпендикулярна скоро- сти, следовательно, всегда (Гу)=0, поэтому уравнение движения принимает вид т^ - 1 , (6.41а) dt у V с* 1 или в координатной записи at .±L = J_[VxS] (6-416) at dt m$ При выборе, как и ранее, в качестве единиц измерения времени периода вращения заряда массой т$ по ларморовской окружности Т, скоро- сти - скорость света с, расстояния - сТ, система ОДУ записывается в виде: = 2^ х §1 = 2^Д - at dV^ =2я-[9х5]у = 2фД-РД)71-|9|2 - (6.42) dt = 2л"[у х j?]. = 2л’(рх5у --|?|2 Задача 6.7 1. Создайте т-файл, содержащий описание функции, возвращающей значе- ния правой части системы дифференциальных уравнений (6.42), и про- моделируйте движение зарядов в постоянных однородных магнитных полях с релятивистскими скоростями. 2. Постройте проекции траектории движения на соответствующие координатные плоскости. Сравните траектории движения, полученные при одинаковых начальных скоростях, решив нерелятивистские и релятивистские уравнения движения. 167
Компьютерное моделирование физических процессов в пакете MATLAB 3. Проекция траектории движения на плоскость, перпендикулярную векто- ру напряженности магнитного поля, является окружностью. Опреде- лите ее радиус и период обращения по окружности. Сравните получен- ные результаты с аналогичными значениями, полученными для нереля- тивистских уравнений движения. Объясните полученные результаты. 4. Исследуйте зависимость величины шага спирали от скорости движения заряда? 5. Постройте зависимости скорости и ее проекций на соответствующие координатные плоскости от времени. 6. Исследуйте зависимость точности и устойчивости численного решения системы ОДУ (6.42) от шага интегрирования. 6.4. Моделирование движения электрических зарядов в постоянных электрических и магнитных полях В этом параграфе мы рассмотрим особенности движения электрических зарядов с нерелятивистскими и релятивистскими скоростями в скрещенных постоянных однородных электрических и магнитных полях. Для описания движения зарядов со скоростями много меньшими скорости света необхо- димо найти решение систему ОДУ (6.3), считая, что масса заряда не зави- сит от его скорости то ~ У< z)+[v х В(х, у, г)]Л) at • mo-jL = 4(^y(x,y,z) + [vxB(x,y,z)]y). (6.43) at то^ = (х, у, z) + [г X В(х, у, ?)] ) at Выбирая, как и ранее, в качестве единиц измерения времени период вра- щения заряда массой по ларморовской окружности Т, скорости - скорость света с, расстояния - сТзапишем систему ОДУ (6.43) в виде = 2лр х В = 2лЁх + 2v(yxBz - v.Б ) at • х Я],. = 2лЕу + 2я(у.Вх - vxB.), (6.44) = 2/г[р х В\ = 2яЁ. + 2я-(?хВ - V Вх) at ‘ 168
6. Моделирование движения электрических зарядов в электрических и магнитных полях где £, = (i = x,y,z ). Для однозначного описания движения необходимо задать безразмерные начальные условия: радиус-вектор начального положения заряда Ro = R/cT и вектор начальной скорости Vo = V0/c . Рассмотрим более подробно случай, допускающий аналитическое реше- ние: движение во взаимно перпендикулярных электрическом и магнитном полях. Направление вектора В выбираем за ось oZ, а плоскость, проходя- щую через векторы В и Ё, за плоскость YoZ (рис. 6.2). Тогда систему уравнений движения (6.44) запишем в виде 5f = 2л- = -2тг ХЙг + 2л- Ёу . (6.45) ? = 2л- Ez Из третьего уравнения видно, что вдоль оси oZ заряд двигается равно- мерно ускоренно, т. е. z = z£zt2 + vOzt. • (6.46) Умножая второе уравнение системы (6.45) и складывая с первым, на- ходим —(% + $) + 2л-«(£ + $) = 2л-«7ц,. (6.47) dt Анализ уравнения (6.47) показывает, что его можно рассматривать как уравнение относительно переменной t + $ . Как известно, интеграл этого уравнения есть сумма частного интеграла уравнения (6.47) и частного инте- грала однородного уравнения (уравнение (6.47) без правой части). Первый из них есть % + $ = ае~2*", второй равен Ёх. Таким образом, t-н? = . (6.48) Постоянная а в (6.48) (в общем случае комплексная) находится из на- чальных условий. Рассмотрим далее случай, когда в начальный момент времени скорость заряда направлена вдоль оси оХ: t(0) = vx(), у(0) = 0. В этом случае постоянная а оказывается вещественной: a = vx0- Еу. (6.49) 169
Компьютерное моделирование физических процессов в пакете МА TLAB Подставив (6.49) в (6.48) и отделив вещественную и мнимую часть, найдем: j? = acos(?rz)+ £v, у --asm^Tvl). (6.50) Из (6.50) видно, что компоненты скорости частицы в плоскости XoY яв- ляются периодическими функциями времени, средние значения которых равны (х) = Еу,(у) = 0, (6.51) т. е. частица в скрещенных электрическом и магнитном полях движется со средней скоростью в направлении, перпендикулярном плоскости YoZ. Эту ско- рость называют скоростью электрического дрейфа. Вспоминая, что обезразме- ренный вектор напряженности магнитного поля есть единичный вектор, можно записать безразмерную скорость дрейфа в векторном виде как =[££]. (6.52) Все формулы данного параграфа справедливы при условии малости ско- рости заряда по сравнению со скоростью света, которое в безразмерном ви- де имеет вид «1. Аналогичное требование справедливо и для скорости дрейфа, которое выполняется при условии, что обезразмеренные напряжен- ности электрического и магнитного полей удовлетворяют условию Ey«Hz. (6.53) Интегрируя уравнения (6.50) еще раз и выбирая постоянные интегриро- вания так, чтобы при t = 0 х=у=0, получаем: X = sin(2;rz) + E..t 27Г ' . (6.54) У = Y~(c°s(;t?)-i) 2тг Уравнения (6.54) задают в параметрическом виде кривую, называемую трахоидой. Задача 6.8 I. Запишите законы изменения координат заряда и выражения для скоро- сти дрейфа в размерных переменных. 2. Запишите условие (6.53) в размерных единицах. Задача 6.9 Проведите моделирование в пакете MATLAB движения нерелятивист- ского заряда в скрещенных электрическом и магнитном полях: 1. Выполните численные расчеты при условии 0, vv = vz = 0 . 170
6. Моделирование движения электрических зарядов в электрических и магнитных полях 2. Убедитесь в справедливости полученных выше аналитических результа- тов (формулы 6.49, 6.50 - 6.52, 6.54). 3. Постройте траекторию движения частицы в трехмерном пространст- ве и ее проекции на соответствующие координатные плоскости. 4. Проведите расчеты для значений начальной скорости, удовлетворяющих условиям \а\ >)£у|,|а| = |£v|,|a| >|£v[, и сравните траектории движения и их проекции на координатные плоскости. 5. Проведите расчеты для значений начальной скорости, удовлетворяющей условию а = Ёу, и проанализируйте вид траектории заряда, объясните полученные результаты. 6. Проведите расчеты и проанализируйте особенности движения при ус- ловии 0, vv О, v2 * О. 7. Исследуйте особенности движения заряда в параллельных однородных постоянных электрическом и магнитном полях. 8. Запишите закон сохранения заряда для рассматриваемого случая в без- размерном виде и оцените точность выполнения для полученных чис- ленных решений. Для описания движения релятивистского заряда в скрещенных электри- ческом и магнитном полях необходимо находить решение системы ОДУ (6.40). Выбрав, как и ранее, в качестве единиц измерения времени период вра- щения заряда массой т0 по ларморовской окружности Т, скорости - скорость света с, расстояния - сТ систему ОДУ запишем в виде: ГГж=2<+2л-(гД-гД.) F.. = 2лё., + - vft) У I \ С, f Pz=2nEz+2^xBy-VyBx>) = + + ’ (6’55) = [Ру - Vy fax + Ру Vy + if- Л “IX ~Vz(PxVX +PyVy + ^X)k1H“|2 Задача 6,10 Промоделируйте движение релятивистского электрического заряда, описываемое системой ОДУ (6.55), в скрещенных электрических и маг- нитных полях. 171
Компьютерное моделирование физических процессов в пакете МА TLAB 1. Проведите численные расчеты при условии vpt 0, v, = vz = О и сравните с аналогичными зависимостями, полученными при решении системы ОДУ (6.45). С каких скоростей начинают проявляться отличия в зако- нах движения? 2. Опишите релятивистское движение заряда в параллельных однородных электрическом и магнитном полях. 3. Опишите релятивистское движение заряда во взаимно перпендикуляр- ных однородных постоянных электрическом и магнитном полях (рас- смотреть случаи Ё - Йz,Ey > Йг,Еу < Й.). В каком направлении про- исходит наиболее быстрое возрастание скорости движения заряда? ЛИТЕРАТУРА 1. Ландау Л. Д., Лифшиц Е. М. Механика. М.: Наука, 1958. 2. Носач В. В. Решение задач аппроксимации с помощью персональных компьютеров. М.'. МИКАП, 1994. 3. Ландау Л. Д., Лифшиц Е. М. Теория поля. М.: Наука, 1988. 4. Угаров В. А. Специальная теория относительности. М.: Наука, 1977. 5. Арцимович Л. А., Лукьянов С. Б. Движение заряженных частиц в электрических и магнит- ных полях. М.: Наука, 1978. 172
Глава 7 ФУРЬЕ-АНАЛИЗ НЕПРЕРЫВНЫХ И ДИСКРЕТНЫХ ФУНКЦИЙ 7.1. Введение Одним из эффективных подходов решения задач из различных разделов физики (в первую очередь теории колебаний и волновой оптики) является подход, основанный на спектральном разложении функций, являющихся решением тех или иных уравнений (метод Фурье). В то же время в традици- онных учебниках по физике использование данного метода ограничено дос- таточно узким кругом задач, имеющих аналитические решения. Выбранный нами в данной книге подход, основанный на нахождении численных реше- ний уравнений, описывающих поведение физических систем, и сущест- вующая возможность вычисления спектров таблично заданных функций существенно расширяют возможности данного метода и, как следствие, по- зволяют повысить наглядность и физическую содержательность излагаемо- го материала. Отметим, что в данном разделе мы не претендуем на абсо- лютную математическую строгость изложения материала, которая, по мне- нию Р. Хэмминга, «скорее связана с внутренними потребностями мате- матики и эстетики, чем с нуждами физического мира» [1], но пытаемся, в первую очередь показать полезность данных математических понятий для решения реальных физических задач и научить применению их на практике. 7.2. Разложение периодических сигналов в ряды Фурье По определению периодической функцией называют функцию, отве- чающую условию: s(t) = s(t + пТ),п = 1,2,..., (7.1) где Т- период функции. Для нахождения спектрального разложения функции s(t) введем в рас- смотрение следующие наборы функций: 1/'/т, д/2/Т sin(2TT t/T), y[z/T sin(4?r til"),.., -Jl/T sin(2?r ти/Т}... --J2/T cos(2^-//T), v'2/Т cos(2^2//T),.., -Jz/T cos(2^n//T)...
Компьютерное моделирование физических процессов в пакете МА TLAB 0,т п 1,т = п *0 ; 2,т = п =0 Любая функция из (7.2), которую для краткости обозначим m„,(z), удов- летворяет условию периодичности (7.1). Рассмотрим три следующих интеграла: т — J cos(2?r mt/T) cos(2?r nt/T)dt - о т — f cos(2?r mz/T) sin (2;т nt/T} = 0 ; Т J о (7.3) т — | si п (2тг mt IT )sin(2zr ntfT )dt = о 0,т?п 1,т = п ^0 . 0, т = п = О Функции, удовлетворяющие условию (7.3), называются ортогональны- ми, а систему функций (7.2) называют ортонормированным базисом, обра- зованным гармоническими функциями с кратными частотами. Условие ор- тогональности можно записать в компактной форме, используя символ Кронекера: т |и, (г)и*(г)А = ^ , (7.4) о где ГО, г * к Sik =1. . , • = к Разложим произвольную периодическую функцию s(t) в ряд: 00 (7-5) 1=0 Представление (7.5) называется обобщенным рядом Фурье функции s(t) в выбранном базисе. Коэффициенты данного ряда находятся умножением (7.5) на базисную функцию «(.(г) и интегрированием по периоду функции s(t)'. Т х т j5(r)^(z)rfz = jUjUkdt . (7.6) О '=0 о Откуда, используя свойство ортонормированности (7.4), найдем 174
7. Фурье-анализ непрерывных и дискретных функций Т ck = s(t)ukdt. (7.7) О Подставляя в (7.7) набор функций (7.2), найдем значения коэффициентов ряда: т 2 г ао = „ s(t)dt, (7.8а) 1 * о т ап = ~ J j(?)cos(2tt п/Т)dt, (7.86) о т bn = — ^ i,(r)sin(2?r njT)dt. (7.8в) о Введя основную частоту а> = 2л)Т последовательности, образующей пе- риодическую функцию s(t), запишем ряд Фурье для периодического сигнала s(f) = —+ cos(nat') + bn sin(n<y/)). (7.9) 2 П=1 Анализ (7.9) показывает, что функция s(t) содержит независящую от времени постоянную составляющую и бесконечный набор гармонических колебаний, так называемых гармоник с частотами <оп = па> (и = 1,2,...), кратными основной частоте последовательности. Можно показать, что имеет место равенство . т 2 =° 1 +ь2к] (7.Ю) О к=\ Если записать коэффициенты ряда Фурье в виде ап = Ancosq>n,bn = A„sin<p„, где 4 =^an+bndg<pn =ьп/ап , то получим эквивалентную форму ряда Фурье: X X0 = y+ ^4C0S(«<y/-^l)- (7.U) 1 И=1 175
Компьютерное моделирование физических процессов в пакете МА TLAB Спектральное разложение периодической функции можно выполнить, используя систему базисных функций в виде экспонент с мнимыми показа- телями: которые, как легко убедиться, вычислив интеграл т т о о являются ортогональными. Ряд Фурье в данном случае принимает вид ^=4- icne‘,,ai <7-13) п=-ос с коэффициентами т cn=-^\s(t)e-ino>,dt. (7.14) о На практике принято использовать и другую форму записи ряда Фурье: ос s(0 = £c„e'nQ’' , (7.15) n=-oo где т (7.16) о Выражения (7.13) - (7.16) представляют собой ряд Фурье в комплексной форме. Спектр функции s(t) в соответствии с формулами (7.15), (7.16) содер- жит компоненты на отрицательной полуоси частот, причем С_л = С*, по- этому слагаемые с положительными и отрицательными частотами объеди- няются в пары,например: Спе'"м1 +С_пе^‘ = +|С„К,("й"^) =2iC,Jcos(«<y/-^) Таким образом, отрицательная частота является не физическим, а мате- матическим понятием, вытекающим из способа представления комплексных чисел. 176
7. Фурье-анализ непрерывных и дискретных функций Задача 7.1 1. Найдите аналитически коэффициенты ряда Фурье периодической после- довательности прямоугольных видеоимпульсов (рис. 7.1) с известными параметрами т,Т,А. u(t) Рис. 7.1 2. В радиотехнике отношение q=TfT называют скваженностъю последо- вательности. Постройте и сравните зависимости амплитуды спек- тральных гармоник от частоты па> при различной скваженности по- следовательности. 7.3. Эффект Гиббса Эффект Гиббса возникает при разложении в ряд Фурье разрывных функций. Изучим основные его проявления на примере разложения прямо- угольной импульсной функции .. [-1/2,0 <t<T/2 ' [l/2,T/2<t<T которая имеет скачок, равный 1 в точке разрыва Т/2. Формальное разложе- ние в ряд Фурье находится подстановкой функции s(t) в формулы (7.8), вычислением интегралов, оказывающихся равными ак = о> 1 [1 + (-1)*+1] — - ,к - четное Ьк= к---------J = \nk п [ОД - нечетное и подстановкой выражений для коэффициентов в (7.9): 177
Компьютерное моделирование физических процессов в пакете МА TLAB Несмотря на то, что полученное разложение позволяет познакомиться с основными особенностями эффекта Гиббса, мы предварим дальнейшее рас- смотрение этого вопроса описанием последовательности команд, позво- ляющей получить в пакете MATLAB, разложение в ряд Фурье произволь- ных функций. Для решения поставленной задачи необходимо создать следующие т- файлы: FF.m (содержит описание функции, разлагаемой в ряд Фурье), AF.m (описание функции, возвращающей значение заданного коэффициен- та разложения в ряд Фурье по косинусам в соответствии с (7.8а), (7.86), BF.m (описание функции, возвращающей значение заданного коэффициен- та разложения в ряд Фурье по синусам в соответствии с (7.8в)). Далее при- водятся листинги данных файлов. % листинг файла FF.m function z=FF(t,T) % описание функции, раскладываемой в ряд Фурье N=length(t); for i=l:N if t(i)<0 z(i)=0; end; if (t(i)>=0)&(t(i)<=T/2) z(i)=l/2; end; if (t(i)>T/2)&(t(i)<=T) z(i)=-l/2; end; if t(i)>T z(i)=0; end; end; % листинг файла AF.m function z=AF(k,T) % описание функции, возвращающей значение k-го коэффициента dt=T/lOOO; t=O:dt:T; 178
7. Фурье-анализ непрерывных и дискретных функций % вычисление значения подынтегральной функции F=FF(t,T).*cos(2*pi*k/T*t); z=2/T*trapz(t,F); % вычисление интеграла % листинг файла BF.m function z=BF(k,T) % описание функции, возвращающей значение k-го коэффициента dt=T/1000; t=O:dt:T; % вычисление значения подынтегральной функции F=FF(t,T).*sin(2*pi*k/T*t); z=2/T*trapz(t,F); % вычисление интеграла Далее необходимо выполнить следующую последовательность команд: clear all % очистка рабочей области Nf=9; % число гармоник k=l:Nf; Т=1; % длительность импульса A0=AF(0,l); % вычисление А(0) в соответствии с (7.8в) for k=l:Nf % вычисление коэффициентов А(к), В(к) A(k)=AF(k,T); B(k)=BF(k,T); end; % вычисление значений усеченного ряда Фурье на временном % интервале [0,1] Np=1000; t=0:T/Np:l; for i=l:Np+l S=A0/2; for k=l:Nf S=S+A(k)*cos(2*pi*k/T*t(i))+B(k)*sin(2*pi*k/T*t(i)); end; s(i)=S; end; % визуализация усеченного ряда Фурье и исходной функции plot(t,s,t,FF (t,T)-') Результаты выполнения описанной выше последовательности команд представлены на рис. 7.2. Сравнение графиков исходной функции и функции, являющейся резуль- татом разложения в ряд Фурье, представленных на рис. 7.2, обнаруживает их отличие. Обнаруженное отличие между исходной функцией и усеченным рядом Фурье носит название эффекта Гиббса. 179
Компьютерное моделирование физических процессов в пакете MATLAB .о а---1---------1--1——1------1----1--—t----।--- О 0.1 02 03 0.4 0.5 0.6 0.7 0.8 0.9 1 Рис. 7.2. Исходная функция и усеченный ряд Фурье (N=9) Для выявления причины обнаруженного эффекта следует изменить в приведенном выше документе число гармоник ряда Фурье и пересчитать документ заново. Графики исходной функции и ее ряда Фурье при исполь- зовании 18 гармоник ( Nf - 27) представлены на рис. 7.3. Анализ получен- ных результатов позволяет сделать качественный вывод о том, что увеличе- ние числа членов усеченного ряда Фурье приводит к уменьшению отличия между функциями f(t) и г(г). 1 ------------- —L- - -i- -i_ _-L Г -_1_- ----- --------- О 0.1 02 03 04 05 06 0.7 08 09 1 Рис. 7.3. Исходная функция и усеченный ряд Фурье (N=27) 180
7. Фурье-анализ непрерывных и дискретных функций Задача 7.2 Для количественных характеристик отличия между функциями f(t) и s(t ) при различном числе членов усеченного ряда Фурье можно исполь- зовать максимальное значение функции s{t) - f(t) и дисперсию данной функции. 1. Постройте при различных значениях числа членов усеченного ряда Фурье Nf: а) графики функций f(t) - s(t); б) оцените периоды колебаний функции и сравните его с периодами ко- лебаний последнего удержанного члена ряда Фурье. 2. Постройте зависимости максимального значения функции и ее среднеквадратичного отклонения от числа членов усеченного ряда Фурье на временном интервале [0,05;0,045]. (Примечание: для вычисле- ния среднеквадратического отклонения используйте функцию std(v), v - вектор, содержащий значения функции f(t) Решив задачу 7.2, вы определили, что период колебаний функции f(t) - s(t) равен периоду либо первого отброшенного члена, либо последнего удержанного члена. К. Ланцош предложил способ уменьшения эффекта пульсаций за счет сглаживания усеченного ряда Д' /„ , X , V (7.17) за счет интегрирования (усреднения) по этому периоду. При выборе в качестве интервала сглаживания периода последнего чле- на усеченного ряда Фурье (здесь для того, чтобы продемонстрировать ис- чезновение этого члена N - номер последнего удержанного члена, но на практике N берется как номер первого отбрасываемого члена) сглаженное значение hN(t) получим как среднее от sN(t): t+(T/2N) \sN(№- IN J ' t-(T/2N) Подставляя (7.17) в (7.18), получим (7.18) 181
Компьютерное моделирование физических процессов в пакете MATLAB ,, AT N s~ T7 “ t+(7/2W) J - t-(T/2N) r+(T/2JV) (+(T/2JV) " 2 Th [ sin [2 лк/Т (t + 7722V)] - sin[2^/T (r - 7722V)]] d,<------------— ---------------— ? — ... I J , f cos[2fflt/7’ (t + 7722V)] - cos[2fflt/T (r - 7722V)]] ’ I Wr J J Применяя известные тригонометрические формулы, окончательно получаем N hN^=^ + (2лк . (2лк atcos -----1 +otsin ------1 К I I К I ep (7.19) где cr(N,k) - так называемые сигма-множители a(M^)=Sin^/f?/). (7.20) лк/N Таким образом, сглаженный ряд Фурье есть исходный ряд Фурье с ко- эффициентами, умноженными на соответствующие сигма-факторы. Отме- тим, что эффект сглаживания достигается за счет того, что при к = N сиг- ма-фактор N-ro члена оказывается равным нулю. С физической точки зрения формулу (7.19) можно трактовать как на- блюдение исходной функции sN(t) через узкое просвечивающее прямо- угольное окно шириной Т/N. Наблюдаемая функция hN(t) есть средняя интенсивность света от исходной функции sN(t). Она оказывается более яркой, когда функция sN(t) больше, и менее яркой, когда функция меньше. Задача 7.3 Дополните описанный выше документ блоком, позволяющим проводить сглаживание усеченного ряда Фурье, и проведите сравнительный анализ отклонения между функциями f(t) и hN(t), аналогично тому, как это было сделано в задаче 7.2. 182
7. Фурье-анализ непрерывных и дискретных функций 7.4. Спектральный анализ непрерывных непериодических сигналов Рассмотрим обобщение метода рядов Фурье на случай непериодических сигналов, позволяющее получать их спектральные характеристики. В тео- рии обработки радиотехнических сигналов она называется задачей анализа. Пусть функция s(t) задана на временном интервале конечной длитель- ности [0,7]. Дополнив данную функцию такими же сигналами, периодиче- ски следующими через интервал времени Т, получим изученную в преды- дущем параграфе периодическую последовательность sp(t), которая может быть представлена в виде комплексного ряда Фурье 00 Sp(t)= ^Спе^’ (7.21) Н=-о0 с коэффициентами т = . (7.22) о Для возвращения к одиночному интервалу устремим к бесконечности период повторения Т, при этом: 1. Частоты соседних гармоник па> и (и + 1)<у окажутся сколь угодно близкими, поэтому в формулах (7.21), (7.22) дискретную переменную па> можно заменить непрерывной переменной а). 2. Коэффициенты Сп станут неограниченно малыми из-за наличия вели- чины Т в знаменателе формулы (7.22). Для нахождения предельного вида (7.21) при Т —>со введем понятие спектральной плотности мощности, воспользовавшись тем, что коэффици- енты ряда Фурье образуют комплексно сопряженные пары: С„ = Апе^,С_п = Апе-^, а каждой паре отвечает простое гармоническое колебание А,,^™1^ + = 2дп cos(n<yZ с комплексной амплитудой 2Апе,<р" = 2Сп . На малом интервале частот \а> в окрестности некоторого выбранного значения частоты гуо будет содержаться N = Аа>/а> = АсоТЦя отдельных 183
Компьютерное моделирование физических процессов в пакете МА TLAB пар спектральных составляющих, частоты которых отличаются сколь угод- но мало, поэтому составляющие можно складывать, предполагая, что они имеют одну и ту же частоту и характеризуются одинаковым комплексными амплитудами ОС 2СпЛ -ос Таким образом, комплексная амплитуда эквивалентного гармонического сигнала, отображающая вклад всех спектральных составляющих, содержа- щихся внутри интервала Асу , равна 00 ос ДА = — (s(t)e-'£U"'dr= — (з(Г)е"ч'сй . (7.23) 0 Т J я J —ос -ос Из (7.22) видно, что можно ввести функцию, называемую спектральной плотностью функции s(f): X $(й>) = J s(t)e~ia>tdt. (7.24) Обратной к задаче анализа является задача нахождения вида функции s(t) по его известной спектральной плотности, называемая в теории обра- ботки радиотехнических сигналов задачей синтеза. Для ее решения предпо- ложим, что непериодический сигнал получается из периодической последо- вательности, когда ее период Т ->оо. Воспользовавшись формулами (7.21) и (7.22), запишем 00 1 j(r)=lim £-5(л®>,пйИ. (7.25) П=-х Входящий в (7.25) коэффициент 1/Т при любом целом п пропорциона- лен разности между частотами соседних гармоник : = = + (7.26) Т 2я 2я Подставляя (7.26) в (7.25), получаем: s(t) = lim — V1 S(n(o)e"'a>l[<y(n +1) - па] (7.27) Г—>cc 2я Так как частотные интервалы между соседними гармониками неограни- ченно сокращаются, сумму в (7.27) можно заменить интегралом 184
7. Фурье-анализ непрерывных и дискретных функций 5(0= ~ ^S(a))e,a,,da. (7.28) -ос Данная формула называется обратным преобразованием Фурье функции s(t). Полученный фундаментальный результат формулируется следующим образом: функция s(t) и его спектральная плотность связаны прямым и об- ратным преобразованиями Фурье: 5(й>)= j (7.29а) -оо 5(f) = у- jS(co)eia,lda}. (7.296) -ОС В математике доказано, что соотношения (7.29) справедливы для абсо- лютно интегрируемых функций, т. е. функций удовлетворяющих условию ||5(^г<оо. (7.30) Данное условие существенно ограничивает класс допустимых функций, од- нако, с одной стороны, в современной математике разработан аппарат так на- зываемых обобщенных функций, позволяющих разумным образом вычислять спектральные плотности неинтегрируемых функций, с другой, все реальные сигналы, регистрируемые в физических экспериментах, имеют конечную дли- тельность, а потому автоматически удовлетворяют условию (7.30). Перечислим без доказательства основные свойства преобразования Фурье. 1. Линейность преобразования Фурье (спектр линейной комбинации функций s। (t)<-> Sj(®) есть линейная комбинация спектров исходных функций с аналогичными коэффициентами: atst (t) - а^со)). i i 2. Спектр вещественной функции 5(г) является комплексной функцией: оо ос ,$(&>)= j*5(r)cos(<y г) — t j5(f)sin(<y t)= , -X -x причем |A(<y)sin(<y/) = 0, |/?(/y)cos(an) = 0. (7.31) 185
Компьютерное моделирование физических процессов в пакете MATLAB 3. Спектральная плотность функции, смещенной во времени s(t-t0), связана со спектральной плотностью исходной функции (s(l) 3(<у)) — Го) —> . 4. Спектральная плотность произведения функций (s(z) 3(<у), v(z) о V(<y)) есть свертка спектров исходных функций 5. Функция, спектр которой представлен в виде произведения 3(<у)= 31(<у)32(<у) , причем 3[((у)<-> хДг) и 32(о>) <-> х2(0 является сверткой сигналов во временной области 3(<у)<-э . 6. Скалярное произведение двух функций x(z) <-» 3(<у), v(z) <-> V(<y) с точностью до коэффициента пропорционально скалярному произведению их спектральных плотностей (.v, v)= J.v(r)v*(z)c/z = ~ |з(«у)7*((у)с/(у . Отметим, что последнее свойство позволяет вычислить спектральную плотность для бесконечно протяженных неинтегрируемых функций: функ- ции постоянной величины .v(z) = А = const <-> З(щ) = 2лА8(со); (7.32) монохроматической комплексной экспоненциальной функции s(t) = Aexp(i&>0/) <-> 2яА<5(<у-бУ0); (7.33) спектральную плотность гармонических колебаний s(z) = Acos(<y0z) <-> S(со) = лА[<5(со - щ) + 5(<у + coq)], (7.34) s(t) = A sin(corf) <-> S(co) = -1лА[8(со -co0) + <5(co + д^)], (7.35) где <5(x~a) - дельта-функция Дирака, обладающая следующими свойствами: . [О, хФа £(х-а) = { , (7.36) [оо, х = а 186
7. Фурье-анализ непрерывных и дискретных функций j#(x-a)dx = l, (7.37) ]/(х)г>(х-аХг = /(а) (7.38) 7.5. Спектральный анализ дискретных функций На практике наиболее часто приходится находить спектры функций, за- данных в дискретные моменты времени, к таковым относятся как реальные сигналы, регистрируемые с помощью аналого-цифрового преобразователя (АЦП), так и любые зависимости, задаваемые таблично. Например, решения дифференциальных уравнений и систем ОДУ, вычисляемые в дискретные моменты времени. Далее мы будем рассматривать только задачу спектраль- ного анализа функций, заданных на равномерной временной сетке, т. е. че- рез равный промежуток времени А, называемый интервалом дискретизации, Д — tm~ tm-l ~ ~ ’ (7.39) так как любую дискретную функцию можно, используя процедуру интерпо- ляции привести к равномерной временной сетке. Для нахождения спектральной плотности дискретной функции Sd[(o) заметим, что переход от непрерывной функции ,v(z) к дискретной функции sd (f) можно описать, введя в рассмотрение обобщенную функцию, /7(0= £<?(/-*Д), (7.40) называемую дискретизирующей последовательностью. Учитывая фильтрующее свойства дельта-функции (7.33), дискретная функция, есть скалярное произведение непрерывной функции s(t) и функ- ции (0 = (40. 7(0) = J 40 X~= (741) -ос = (..., х(- 2А), х(- А), х(0), ДА), л(2А), ...) 187
Компьютерное моделирование физических процессов в пакете MATLAB Так как функция 77(f) определена лишь в точках tk = kk (k = 0,±1,±2,...) интегрирование в (7.36) можно заменить суммированием, при этом роль дифференциала будет играть интервал дискретизации А: д,/ (f) - А A(f - М), (7.42) k=-oc т. е. с точностью до коэффициента пропорциональности А интеграл (7.41) равен произведению функции s(t) и дискретизирующей последовательно- сти 77(f). Будем считать, что для функций s(t) и 77(f) известны их спек- тральные плотности 5(щ) и 5;/(<у), соответственно. В соответствии со свойством 4 (см. раздел 7.3) спектр произведения двух функций равен свертке спектров этих функций Sd(*>) = ~ [ Sq(£)$(щ- №. (7.43) 2?г J Для нахождения спектральной плотности функции 77(f) разложим дан- ную функцию в ряд Фурье. В соответствии с (7.16) д С„ = - J A(f)el 2/r = - . (7.44) о Подставляя (7.44) в (7.15), получаем (7.45) Подставив (7.45) в (7.29а) и учтя (7.33), найдем (й>) = - f ei2m'ISe-i0>,dt = 8(a) - 2т!А). (7.46) -х Л = -Х п = -00 Из (7.46) видно, что спектр дискретизирующей последовательности со- стоит в частотной области из бесконечной совокупности дельта-импульсов, при этом функция 5^(®) является периодической с периодом 2?г/А с"1. Подставляя (7.46) в (7.43) и меняя порядок суммирования и интегриро- вания, находим 188
7Фурье-анализ непрерывных и дискретных функций Sd((!j)~ у.5(щ-2ли/А) П = ~ОС (7.47) Из (7.46) видно, что спектр дискретной функции представляет собой сумму бесконечного числа «копий» исходного спектра непрерывной функ- ции, расположенной на оси частот через одинаковые интервалы 2я/А (рис. 7.4). Как видно из рис. 7.4, для действительных функций s(t), имеющих спектр, симметричный относительно точки <у = 0 и ограничен- ный верхней граничной частотой а>и - lrfu , условие отсутствия наложения отдельных копий спектра записывается в виде £ f <± A J“ ~ 2А (7.48) и -.t ...... < .... -Дг/Д-гг/Д 0 2я/Д Рис. 7.4. Спектральная плотность модулированной импульсной последовательности при различных значениях верхней граничной частоты: а - верхняя граничная частота велика; б - верхняя граничная частота мала Выражение для нахождения спектральной плотности функции sd(t) по ее дискретным значениям можно получить, подставив (7.42) в (7.24): зс зс зо оо S(Z(®) = jsd(t)e-"'ea,dt = A j ^sk3(t-kAyi‘uldt = ^^jske-ia)k& (7.49) —ос k——^ С другой стороны спектральная плотность была найдена выше другим способом (см. выражение (7.46)), поэтому справедливо соотношение оо X А V’"a<rA = ^Х/ш-гял/А), (7.50) к--х п=-<с называемое формулой суммирования Пуассона. Из (7.50) видно, что однозначно найти функцию 5rf((y)no значениям функции sd(t), вообще говоря, невозможно из-за эффекта наложения копий спектра. Единственное исключение составляет случай, когда исходная функция х(/) имеет спектр, удовлетворяющий условию (7.48), тогда оче- 189
Компьютерное моделирование физических процессов в пакете МА TLAB видно, что спектр дискретной функции Sd(a>) совпадает со спектром не- прерывной функции 5((у) 0,ю< -л/Д (7.51) Полученный результат является следствием теоремы Котельникова, имеющую следующую формулировку: произвольный сигнал, спектр ко- торого не содержит частот выше fu Гц, может быть полностью вос- становлен, если известны отсчетные значения этого сигнала, взятые через равные промежутки времени \r2.fu • (Здесь под восстановлением имеется в виду вычисление значений функции в любой момент времени, не совпадающий с моментами дискретизации.) 7.6. Спектральный анализ дискретных функций конечной длительности В предыдущем параграфе при решении задачи о нахождении спектраль- ной плотности дискретной функции мы предполагали, что значения этой функции заданы в неограниченном числе точек на временной оси. На прак- тике получить столь обширные сведения о поведении функции оказывается невозможным. Это обстоятельство приводит к тому, что всегда спектраль- ный анализ проводится на временном интервале конечной длительности. Рассмотрим особенности спектрального представления дискретной функции, заданной на временном интервале конечной длительности [0,7] N отсчетами s0,sl,s2,.-.,sN_l, взятыми соответственно в моменты времени О, Д,2Д,...,(N - 1)Д . Полное число отсчетов = 7'/Д. Используя подход, развитый в предыдущем параграфе, поставим в соответствие исходной непрерывной функции s(t) ее дискретное пред- ставление N-1 5Дг) = Д^^Д(г-М). (7.52) к=0 Дискретная последовательность sd(t) представима рядом Фурье 190
7. Фурье-анализ непрерывных и дискретных функций 5^ = \^Спе‘2ЛП,1Т ’ <7'53) /1--СС где т Сп=-^ \sd^e-^nt!Tdt. (7.54) ГД J о Подставляя (7.52) в (7.54) и вводя безразмерную переменную £ = f/A, получим с„ 1 /VA ^sk8(t-k^4Tdt = О *=О = - ky>2*nilNdt = J -k)e-i2™^df. ™ о k=o П Г=о о Используя фильтрующее свойство дельта-функции, получаем N-1 c.‘-cY.v~‘2""t"‘ <7-55> /v *=о Формула (7.55) определяет последовательность коэффициентов, обра- зующих дискретное преобразование Фурье (ДПФ), которое имеет следую- щие свойства. 1. ДПФ есть линейное преобразование. 2. Число коэффициентов С0,С1,С2,...,СЛГ_1, вычисляемых в соответст- вии с (7.55), равно числу отсчетов дискретной последовательности. 3. Коэффициент Со (постоянная составляющая) есть среднее значение дискретной последовательности. 4. Если N— четное число, то CN/2 = w ’ t=0 5. Для вещественной дискретной последовательности, коэффициенты ДПФ, номера которых расположены симметрично относительно N/2 , обра- зуют сопряженные пары: N-l N-1 с - 1 V"1 ( -»2>r(/V—„)£/N _ 1 V V j'Lmk/N - С* Cn-"~N Lske ~N^k k=0 k=0 191
Компьютерное моделирование физических процессов в пакете МА TLAB поэтому можно считать, что коэффициенты CN/2Ai,...,CN^ отвечают отри- цательным частотам. Задача 7.4 Вычислите, используя пакет MATLAB, ДПФ дискретной последователь- ности, заданной восьмью равноотстоящими отсчетами - (1,1,1,1,0,0,0,0) и изобразите графически абсолютные значения ко- эффициентов ДПФ, называемых спектром мощности. 1. Сколько различных гармоник имеет ДПФ данной последовательности? 2. Считая длительность интервала дискретизации равной 1 с, вычислите частоты этих гармоник и величины Af- - fi+l - / (расстояние между гармониками). Как изменится результат, если интервал дискретизации будет равен 0,1 с, 0,5 с, 2 с? 3. Какова верхняя граничная частота спектра дискретной последователь- ности при указанных длительностях интервала дискретизации? Задача 7.5 Вычислите, используя пакет Mathcad, ДПФ дискретной последова- тельности, заданной восьмью равноотстоящими отсчетами {Уд. } = (1,1,1,1,0,0,0,0,0,0,0,0,0), и изобразите графически абсолютные значения коэффициентов ДПФ. 1. Сколько различных гармоник имеет ДПФ данной последовательности? 2. Считая длительность интервала дискретизации равной 1 с, вычислите частоты этих гармоник величины Afj = fj+i - fi (расстояние между гармониками)? Как изменится результат, если интервал дискретизации будет равен 0,1 с, 0,5 с, 2 с? 3. Какова верхняя граничная частота спектра дискретной последователь- ности при указанных длительностях интервала дискретизации? 4. Сравните полученные результаты с результатами задачи 7.3. К чему приводит дополнение дискретной последовательности нулями? Почему граничные частоты спектров дискретных последовательностей, имеющих различное количество членов, но одинаковый интервал дис- кретизации, оказываются одинаковыми? Если для дискретной последовательности sQ,sl,s2,...,sN_i найдены ко- эффициенты ДПФ C0,Ci,C2,...,CN_l, то восстановление исходной дис- кретной последовательности может быть осуществлено в соответ- ствии с (7.53). При этом, как очевидно, бесконечный ряд Фурье стано- вится рядом с конечным числом членов: 192
7. Фурье-анализ непрерывных и дискретных функций л(г) = Со + 2|С] cos(2zr t/T + <pl) + 2|C2!cos(4^'?/7' + <р2) +... , / , \ - <7-56) + 2Сл,7со5^я//7 + ^/2) где <pi - arg(C(), i = 1,2,..., N/2 - фазовый угол коэффициента ДПФ. Для нахождения формулы восстановления дискретной последователь- ности s0,sl,s2,...,sN_i по известным коэффициентам ДПФ C0,Cl,C2,...,CN_l умножаем (7.54) на базиснуюexp(i2mk/N) функцию и проводим суммирование по индексу п: JV-1 JV-1 JV-1 X ’ (-> ilnnklN _ 1 X ’ UnnkjN X ’ -UnnmjN _ Lrne ~ N Lf Lsme и=0 /1=0 in—0 N-l N-l \ ) N m=0 /1=0 Так как базисные функции являются ортогональными N-1 ^ei2^k-m)n/N = , (7.58) и=0 где 8тк - символ Кронекера: (1,к = т **" [О, к Ф т Подставляя (7.57) в (7.56), получаем N-l N-l , N-l /и=0 n=Q m-Q Откуда N-l xk = ^cneiUnk/N. (7.59) n=0 Задача 7.6 Используя пакет MATLAB и коэффициенты ДПФ, полученные в задачах 7.3, 7.4, проверьте правильность формул (7.56) и (7.59). 1.1. Быстрое преобразование Фурье Из формул (7.54) и (7.58) видно, что для вычисления ДПФ или обратного ДПФ последовательности из N элементов требуется выполнить N1 операций с комплексными числами. Если число элементов обрабатываемых массивов 7—1576 193
Компьютерное моделирование физических процессов в пакете MATLAB составляет порядок тысячи и более, то время, необходимое на выполнение этих преобразований резко возрастает и теряется возможность обработки сигналов в реальном масштабе времени. В 60-е годы XX века Кули и Тьюки был предложен метод вычисления коэффициентов Фурье, позволивший снизить объем вычислений до Wlog2lV операций. Он получил название алгоритма быстрого преобразо- вания Фурье (БПФ). В настоящее время процедуры, реализующие алгоритм БПФ, входят во все математические библиотеки, используемые при написа- нии программ на языках программирования высокого уровня, и специали- зированные пакеты для математических вычислений. В связи с тем, что подробное рассмотрение алгоритма выходит за рамки нашей книги, мы рас- смотрим только основную идею БПФ для случая, когда число отсчетов N = 2Р, р - целое число. Разобьем входную последовательность на две части с четными и нечетными номерами: = } > {sk }<Э ={52t + l} > где к = 0,1,2,... N/2 -1. Это позволяет представить n-Й коэффициент ДПФ в виде -,^2* -,^(2^ . „ N . р N - 2ке + s2k+\e s к=0 V - /V/2—i j “'и* ft ляп N/z-i -i——, ~ S2kEe N/2 +e N 2 s^we N/2 ” I t=0 k=0 (7.60) (7.61) Из (7.60) видно, что первая половина коэффициентов ДПФ исходного сигнала с номерами от 0 до N/2—X выражается через коэффициенты ДПФ двух частных последовательностей: .2яп Сп=СпЕ+е'~^~СпО, (7.62) где п = 0,1,2,... N/2 -1. Так как последовательности коэффициентов массивов {^. }£и {^ }0 яв- ляются периодическими с периодом N/2 , то СцЕ = Cn+N/2E > С/1О = ^ntN/20 (7.63) Подставляя (7.63) в (7.62) и учитывая, что 194
7. Фурье-анализ непрерывных и дискретных функций ,2z(n+N/2) .2л п .2л п е' » = е~Ь[е'~{Г =-е‘~"~, получаем выражение для второй половины множества коэффициентов ДПФ: _.2яп Cn+Nl2=CnE-e~‘^Cn0, (7.64) где п = 0,1,2,...N/2-i. Формулы (7.62), (7.64) лежат в основе алгоритма БПФ: последователь- ности отсчетов с четными и нечетными номерами вновь разбиваются на две части. Процесс продолжается до тех пор пока не получается последователь- ность, состоящая из одного элемента. ДПФ данной последовательности совпадет с сами элементом. Затем последовательно находят коэффициенты ДПФ предыдущих последовательностей. В пакете MATLAB быстрое одномерное преобразование Фурье реализо- вано парой функций, выполняющих прямое и обратное БПФ: fft/iffi. Данные функции используются как для действительных, так и для комплексных по- следовательностей, при этом длина последовательностей может быть про- извольной. Обращение к функциям: - возвращает дискретное преобразование Фурье 2т-мерного векто- ра, аргумент которого есть результат дискретизации через равные проме- жутки времени некоторой функции. Результат работы программы - комплексный вектор размерности 2т+1. Элементы вектора, возвращаемого функцией fft, вычисляются по формуле W-1 ‘..“X'v'2”'*"'. k=0 где А - число элементов вектора v; ~ обратное дискретное преобразование Фурье, комплексного век- тора, содержащего значения ДПФ. Вектор v должен иметь 2т+1 элементов. Результат работы программы действительный вектор размерности 2'"+1. Элементы вектора, возвращаемого функцией ifft, вычисляются по формуле 1 N-1 Ч 2V'2'*" k=0 где N - число элементов вектора v. Отметим, что для всех векторов спра- ведливо соотношение iffi(ffi(v')')=v, 195
Компьютерное моделирование физических процессов в пакете MATLAB fft(v,n) - возвращает дискретное преобразование Фурье 2"-мерного век- тора, аргумент которого есть результат дискретизации через равные проме- жутки времени некоторой функции. Результат работы программы есть ком- плексный вектор размерности 2"+1. Если n>length(y) последовательность, хранящаяся в векторе v, дополняется нулями; - обратное дискретное преобразование Фурье, комплексного вектора, содержащего значения ДПФ. Результат работы программы - комплексный вектор размерности 2"+1. Если п > length(v) последователь- ность, хранящаяся в векторе v дополняется нулями. В качестве примера использования функций вычисления БПФ пакета MATLAB рассмотрим задачу о вычислении спектра функции, являющейся суммой двух периодических функций s(t) = Aj sin(2/r /jr) + А2 sin(2/r f2t), где А! =0.8, Д=40 Гц, А2=0.4, f2~90 Гц, заданной набором дискрет- ных значений в А=8192 точках на интервале [0,2] с. Для решения задачи не- обходимо выполнить следующую последовательность команд: » N=8192; % число точек для вычисления функции » i=l:N; » Tmax=2; % длительность временного интервала в секундах » t(i)=Tmax/(N-l)*(i-l); % задание временной сетки » fl=40 % частота первой составляющей в Гц » f2=90 % частота второй составляющей в Гц % вычисление мгновенных значений функции » f(i)=0.8*sin(2*pi*fl*t(i))+0.4*sin(2*pi*f2*t(i)); » figure(l);plot(t,f); % вычисление спектра » c=fft(f); % вычисление нормированного амплитудно-частотного спектра »j=2:N/2; » Cm(j-l)=abs(c(j-l))/(N/2); » Freq(j-l)=(j-l)/Tmax; % вычисление вектора частот в Гц » p!ot(Freq,Cm); » axis([0 100 0 1]); Результат выполнения описанной выше последовательности команд представлен на рис. 7.5 и 7.6. 196
7. Фурье-анализ непрерывных и дискретных функций Рис. 7.5. Зависимость мгновенных значений функцииf =f(t) от времени Задача 7.7 Вычислите спектр функции s(t) = Asin(2nfst + л/S) А=3, fs=/0 Гц по N=2/o известным значениям на интервале [0,2] с. Изменился ли вид спектра по сравнению с ранее рассмотренным случаем? Сравните фазы гармоник, имеющих частоту 10 Гц, в первом и во втором случае. 197
Компьютерное моделирование физических процессов в пакете MATLAB Задача 7.8 Вычислите спектр функции s(t) = A, sin(2;r j\t + ^)+ А2 sin(2?r f2t + <р2), где A;=J, ft=10 Гц, ф;=л/8, А2=0,5, f2=/5 Гц, у2=л/3 по N=2;o извест- ным значениям на интервале [0,2] с, изобразите его графически и опре- делите фазы соответствующих спектральных гармоник. Задача 7.9 Для разделения функций, входящих в функцию s(t), заданную в преды- дущей задаче, можно использовать полосовую фильтрацию, которая заключается в умножении спектра функции 5(а>)на весовую функцию w(co) [О,бУ и выполнении обратного преобразования Фурье. Используя полосовую фильтрацию, проведите разделение функций, входящих в функцию s(t). Сравните отклонение функций, значения которых определены в резуль- тате полосовой фильтрации функции s(t), от исходных функций. Задача 7.10 Исследуйте численно спектральный состав функции вида s(t) = Um(] + m cos(Q/ + Фо ))cos(«y0r + <р0 ), которую в радиотехнике используют для описания сигналов с ампли- тудной модуляцией, при различных значениях параметров. Проанализи- руйте вид спектра при различных значениях параметров. Получите раз- ложение функции в ряд Фурье аналитически и сравните полученные ре- зультаты с результатами численного анализа. Проведите аналогичные исследования для функций вида ^1') = ит [ N \ 1 + m, cos(Q,7 + Ф,) к /=1 cos(a^)? + <р0), s(t) = Um cos(a>0t + т sin Q.t) (сигнал с частотной модуляцией), s(t) = Um cos(<y0f + пц sin Q]/ + m2 sin Q20 > s(t) = Um cos(<y0? + p /2) (сигнал с линейной частотной модуляцией). 198
7. Фурье-анализ непрерывных и дискретных функций Задача 7.11 В первой главе нами была подробно рассмотрена задача построения траектории движения Марса в системе координат, связанной с Землей, в которой была вычислена зависимость расстояния s(t) между Землей и Марсом от времени. Проведите спектральный анализ функции .s(t) и определите значения: постоянной составляющей функции s(t), ам- плитуду несущей и ее частоту, глубину амплитудной модуляции и час- тоту модулирующей функции. ЛИТЕРАТУРА 1. Хемминг Р. В. Цифровые фильтры. М.: Советское радио, 1980. 2. Баскаков С. И. Радиотехнические цепи и сигналы. М.: Высшая школа, 1988. 3. Марпл С. Л. Цифровой спектральный анализ и его приложения. М.: Мир, 1990. 4. Оппенгейм А. В., Шафер Р.В. Цифровая обработка сигналов. М.: Радио и связь, 1979. 5. Рабинер Л., Голд Б. Теория и применение цифровой обработки сигналов. М.: Мир, 1978. 6. Бендат Дж. Пирсол А. Прикладной анализ случайных данных. М.: Мир, 1989. 7. Джекинс Г., Ватте Д. Спектральный анализ и его приложения. М.: Мир. Вып. 1, 1971. Вып. 2, 1972. 199
Глава 8 МОДЕЛИРОВАНИЕ КОЛЕБАТЕЛЬНЫХ ПРОЦЕССОВ 8.1. Линейный гармонический осциллятор Один из наиболее распространенных типов движения механических сис- тем представляют собой малые колебания, которые система совершает вблизи положения устойчивого равновесия. Наиболее простым с математи- ческой точки зрения оказывается описание движения систем, имеющих од- ну степень свободы. Примером такой системы является тело массой т, рас- положенное на абсолютно гладкой горизонтальной поверхности и прикреп- ленное к свободному концу пружины жесткостью к (рис. 8.1). Будем описывать положение тела координатой х и примем за начало отсчета (х = 0) точку равновесия груза на пружине. При смещении тела из положе- ния равновесия х = 0 на небольшое расстояние х со стороны пружины бу- дет действовать возвращающая сила, пропорциональная величине смещения и направленная в сторону положения равновесия: F = -kx. (8.1) «-• Рис. 8.1 Знак минус в (8.1) указывает на то, что сила стремится вернуть тело в положение равновесия. На основании второго закона Ньютона тХ = -кх. (8.2) Разделив обе части уравнения на массу т и введя обозначение Гк = д - , (8.3) V т
8. Моделирование колебательных процессов запишем уравнения движения линейного гармонического осциллятора в виде Х + «оХ = 0, (8.4) где а>0 - циклическая частота. Уравнение (8.4) является линейным дифференциальным уравнением второго порядка. Аналитическое решение данного уравнения хорошо из- вестно: x(t) = Acos(<y0r + J), (8.5) где А, 8 - постоянные, называемые амплитудой и начальной фазой, опреде- ляются из начальных условий для координаты х и скорости v = dx/dt. По определению период периодической функции есть наименьшее вре- мя, через которое движение повторяется, т. е. x(t+ Т) = x(t). (8.6) Так как период функции косинус равен 2л, то величина а>0Т соответст- вует одному периоду колебания: (OqT = 2л, откуда находим связь между Щд и Т Т = —= --|2= = 2л,&. (8.7) ®о -jk/m V к Частота колебаний v представляет собой число периодов в одну секунду и определяется выражением и = (8.8) Необходимо отметить, что в соответствии с (8.7) период колебаний зави- сит от отношения к/m, но не зависит от А и 8 Это означает, что период колебаний линейного гармонического осциллятора не зависит от амплитуды колебаний. Легко показать, что полная энергия линейного гармонического осцил- лятора 1,1, E = -mv2 +-кх2, (8.9) где первый член - это кинетическая энергия, второй - потенциальная энергия. Предваряя рассмотрение более сложных случаев периодического движе- ния физических систем, уравнения движения большинства из которых не допускают аналитического решения, продемонстрируем общий подход 201
Компьютерное моделирование физических процессов в пакете МА TLAB к нахождению и анализу численных решений уравнения движения на при- мере линейного гармонического осциллятора (8.4). Вычисленные зависимо- сти х(г), v(z) полностью описывают движение одномерного линейного гармонического осциллятора. С другой стороны, пару значения функций {x(r;i), v(tn)} в выбранный момент времени tn можно рассматривать, как ко- ординаты некоторой точки в двумерном пространстве, называемом фазовой плоскостью. Кривая, образованная на фазовой плоскости, при нанесении точек {х(г,), v(f()} в последовательные моменты времени, называется фазо- вой траекторий. Для нахождения численного решения уравнения движения линейного гармонического осциллятора (8.4) и их визуализации следует привести ОДУ второго порядка к системе дифференциальных уравнений первого порядка, затем создать m-файл, содержащий определение функции, стоящей в правой части системы ОДУ. Ниже приводится листинг соответствующего файла Oscillator .m % листинг файла Oscillator.m function dy=Oscillator(t,z); % функция стоящая в правой части системы ОДУ первого порядка, % эквивалентной ОДУ (8.4) global omega; dy=zeros(2,l); % задание вектор-столбца размерности 2x1 dy(l)=z(2); dy (2)=-omega А 2*z(l); Далее необходимо выполнить следующую последовательность команд: » global omega; » k=9; % коэффициент жесткости » m=l; % масса осциллятора » T=2*pi*(k/m)A0.5; % период колебаний » omega=2*pi/T; % циклическая частота » R0=[0.5 1]; % начальные условия »[t Z]=ode45('Oscillator',[0:5*T/N:5*T],R0); % решение системы ОДУ » figure(l); plot(t,Z(:,!)); % визуализация зависимости x=x(t) » figure(2); plot(t,Z(:,2)); % визуализация зависимости v=v(f) » figure(3); plot(Z(:,l),Z(:,2)); % визуализация фазовой плоскости » figure(4);comet(Z(:,l),Z(:,2)); % визуализация движения на фазовой % плоскости в динамике 202
8. Моделирование колебательных процессов Результаты выполнения приведенной последовательности команд пред- ставлены на рис. 8.2-8.4. Рис. 8.3. Зависимость скорости гармоничесвкого осциллятора от времени Рис. 8.2. Зависимость координаты гармонического осциллятора от времени Рис. 8.4. Фазовая траектория гармонического осциллятора 203
Компьютерное моделирование физических процессов в пакете МА TLAB Задача 8.1 1. Вычислите полную энергию гармонического осциллятора для тех мо- ментов времени, в которые известны значения координаты и скорости. Постройте график временной зависимости величины Дл - (£л - Ео)/Ео . Как меняется данная величина во времени? 2. Постройте график зависимости отклонения между численными значе- ниями координаты и скорости и аналитическими. Как меняются дан- ные величины во времени? Оцените точность полученного численного решения по координате и по скорости. 3. Дополните описанный выше документ блоком, позволяющим проводить спектральный анализ численных решений ОДУ (8.4): вычислять спектр зависимостей x(t), v(t), строить графики спектральных плотностей Sx(f), Sv(f) и определять, используя данные графики, значения циклической частоты й)0 =2я f0 и периода колебаний Т. 4. Для различных значений а>() вычислите соответствующее им значение периодов Т. Предположив, что величина Т пропорциональна (к/т)а, оцените показатель степени, построив график зависимости Т -Т{к/т) в дважды логарифмическом масштабе. 5. Вычислите значения амплитуды А и полной энергии Е для начальных ус- ловий л'(0) = 4, v(0) = 0 и х(О) = О, v(O) = 4, выбрав в обоих случаях значе- ния к, т, при которых <у0 = 2. Какая величина определяет значение амплитуды А? 6. Постройте зависимости потенциальной и кинетической энергий от вре- мени. В какие моменты времени эти зависимости достигают своего наибольшего и наименьшего значения? Где находится в данный момент осциллятор? 7. Вычислите и сравните средние значения кинетической и потенциальной энергий за один период колебания. 8. Вычислите зависимости х(?) для различных значений амплитуды А и по- кажите, что форма данной функции и ее период не зависят от А при фиксированном значении отношения к/т. В каких единицах необходимо измерять время для того, чтобы величина x(t)/А не зависела от А и к/т ? Как будет выглядеть уравнение движения линейного гармониче- ского осциллятора (8.4) в данном случае? 204
8. Моделирование колебательных процессов 9. Как видно из рис. 8.4, фазовая траектория линейного гармонического ос- циллятора является эллипсом. Дополните документ блоком, позволяю- щим вычислять размеры его большой и малой полуосей. Будут ли отли- чаться фазовые траектории для различных начальных условий? Какие физические величины определяют размеры большой и малой полуосей эллипса? Запишите аналитическое уравнение эллипса, проведите его анализ и сравните свои выводы с результатами, полученными при чис- ленных расчетах. Задача 8.2 Уравнения, описывающие поведение линейного гармонического осцилля- тора получены в предположении малости амплитуды колебаний, что позволяет записать силу, возвращающую осциллятор в положение рав- новесия в виде (8.1). Для описания движения с конечными амплитудами выражение для возвращающей силы будет содержать члены, пропор- циональные второй и более высоким степеням х, а уравнение движения примет следующий вид: х+а^х = -ах2. (8.10) Проведите сравнительный анализ решений уравнения (8.10) при различ- ных значениях параметра а и решений уравнения (8.4), используя зави- симости x(t),v(t) фазовую траекторию и график спектральной плот- ности. 8.2. Математический маятник Рассмотрим движение груза массой т, прикрепленного к одному из кон- цов жесткого стержня длиной L, другой конец которого закреплен в точке подвеса. Такая система, как известно из опыта, будучи выведенной из по- ложения равновесия будет совершать колебания. Для описания движения данной системы в первом приближении исполь- зуют модель, в которой пренебрегают трением в точке подвеса, массой стержня по сравнению с массой груза, и считают, что вся масса груза при- ложена в одной точке. Данная модель называется математическим маятни- ком (рис. 8.5). Так как движение груза происходит по дуге окружности ра- диуса L с центром в точке 0, то положение груза характеризуется углом от- клонения стержня от вертикали 0. При движении по окружности линейная скорость и ускорение груза равны v = Ld9 , (8.11) dt 205
Компьютерное моделирование физических процессов в пакете МА TLAB В принятой модели на математический маятник действуют две силы: сила тяжести mg, направленная вертикально вниз, и сила реакции стержня (рис. 8.5). Равнодей- ствующая этих сил, равная, как видно из рис. 8.5, -mg sin в , направлена в сторону уменьшения угла. Следовательно, уравне- ние движения математического маятника записывается в виде: mL—— = -mgsin0, (8.13) dt или (8-14) Уравнение (8.14) оказывается нелинейным, его решение, как и решения большинства нелинейных уравнений, не выражается через элементарные функции, что определяет необходимость получения его численного решения. Однако при достаточно малых углах, при которых sin 9 « 9, уравнение становится линейным Вводя обозначение 4 = -^. dt2 L (8.15) (8.16) и сравнивая уравнения (8.4) и (8.15), видим, что они оказываются одинако- выми. Следовательно, результаты, полученные в разделе 8.1 для линейного гармонического осциллятора, могут быть использованы при описании ма- тематического маятника. В частности, период малых колебаний математи- ческого маятника Этт IJ Т = -— = 2я\—, (8.17) N g не зависит от амплитуды колебаний. 206
8. Моделирование колебательных процессов Получим выражение для полной энергии математического маятника, яв- ляющейся интегралом движения. Как видно из рис. 8.5, потенциальная энергия математического маятника U, отсчитываемая от точки равновесия маятника, U = mgh = mgL(\ - cos 0). (8.18) v 1 2 1 T2(d3Y Кинетическая энергия равна - mv = —mL — , поэтому полная энергия 2 2 \ dt ) I (d()\2 E = -ml}\ — \ + mgL(l - cos 3). (8.19) 2 у dt J Уравнение (8.19) позволяет получить формулу, связывающую период колебания математического маятника и угол начального отклонения. Для d3 этого разрешим уравнение (8.19) относительно —: dt — = ±J-^1-(E-mgL(l-cos3)). (8.20) dt \ mL Из (8.20) видно, что переменные разделяются J —~2 (Е- mgL(l - cos д')) V mL Интегрируя (8.21), находим выражение для периода колебаний матема- тического маятника T = 2j -еа d3 г2 —у (Е - mgL(i - cos 3)) mL (8.22) где 30 - начальный угол отклонения маятника. При движении маятника из начального положения с нулевой начальной скоростью Е - mgL(l - cos 6*0), поэтому г— Т \2L г dd Т= I - . V 8 dcos3-cos30 -о,. (8.23) Задача 8.3 Создайте в пакете MATLAB документ, позволяющий находить числен- ное решение уравнения движения математического маятника (8.15). Получите численное решение уравнения движения при различных на- 207
Компьютерное моделирование физических процессов в пакете MATLAB чальных углах отклонения и проведите их сравнительный анализ, ис- пользуя зависимости x(f),v(f), фазовую траекторию и график спек- тральной плотности. 1. Сравните спектральные плотности при малых и конечных углах откло- нения маятника от вертикали. В чем проявляется отличие линейных и нелинейных колебаний математического маятника? 2. Используя графики спектральных плотностей Sx(f), постройте зави- симость периода колебаний математического маятника от начального угла отклонения? Качественно объясните получаемые результаты. 3. Используя формулу (8.23), постройте зависимость периода колебаний математического маятника от начального угла отклонения. Сравните полученный результат с аналогичными результатами, полученными при анализе спектров Sx(f). 4. Как выглядят фазовые траектории математического маятника при различных значениях начального угла отклонения? Возможности пакета MATLAB позволяют не только получить количе- ственные характеристики движения математического маятника, яв- ляющиеся в известной мере статическими, но и получить динамическую картинку, демонстрирующую его движение. Для создания анимации движения математического маятника необхо- димо в качестве первого шага вычислить соответствующие декартовы координаты по известной зависимости угла отклонения маятника от времени, хранящейся в матрице Z, возвращенной функцией ode45. Как видно из рис. 8.6, при нахождении маятника в первом, втором, третьем и четвертом квадрантах координаты х, щим формулам: x(t) = £sin(?r - y(t) = £cos(?r - 0(tj) x(f) = £sin(?r - 0(f)), y(t) = £cos(?r - 0(f)) x(f) = -£sin 0(f), >(f) = -£cos0(f) x(f) = £sin 0(f), y(f) = -L cos 0(f) у соответственно по следую- х Рис. 8.6 208
8. Моделирование колебательных процессов Для создания анимационного клипа необходимо выполнить следующую последовательность команд: » clear all % очистка рабочей области » global omega » g=9.8; % ускорение свободного падения » L=l; % длина маятника » T=2*pi*(g/L)A0.5; % период колебаний » omega=2*pi/T; % циклическая частота » phi0=pi*0.995; % начальный угол » R0=[phi0 0]; % начальные условия » N=5000; % числов узлов временной сетки » [t Z]=ode45('Oscillator',[0:3*T/N:3*T],R0); % решение уравнения % движения % вычисление декартовых координат маятника » for i=l:N+l if Z(i,l)>pi/2 Sl(i,l)=L*cos(Z(i,l)-pi/2); Sl(i,2)=L*sin(Z(i,l)-pi/2); end; if Z(i,l)<-pi/2 Sl(i,l)=-L*cos(abs(Z(i,l))-pi/2); Sl(i,2)=L*sin(abs(Z(i,l))-pi/2); end; if (-pi/2<=Z(i,l))&(Z(i,l)<=pi/2) Sl(i,l)=L*sin(Z(i,l)); Sl(i,2)=-L*cos(Z(i,l)); end; end; % визуализация мгновенных значений координат маятника (рис. 8.7) » figure(l); plot(t,Sl(:,l),t,S2(:,2)); % координаты подвеса » Sa(l,l)=0; » Sa(l,2)=0; % координаты маятника » Sa(2,l)=Sl(l,l); » Sa(2,2)=Sl(l,2); % отображение маятника в момент времени t=0 (рис. 8.8) » figure(2); plot(Sa(:,l),Sa(:,2),Sa(2,l),Sa(2,2),'o'); » axis([-1.2 1.2-1.21.2]); 209
Компьютерное моделирование физических процессов в пакете MATLAB » set(gca,'nextplot','replacechildren'); % включение режима перерисовки % графиков в одном и том же окне » к=1; » % создание анимационного клипа » for i=l:100:length(Sl) Sa(2,l)=Sl(i,l); Sa(2,2)=Sl(i,2); C=plot(Sa(:,l),Sa(:,2),Sa(2,l),Sa(2,2),'o'); F(k)=getframe; k=k+l; end; » movie(F,l) % однократное воспроизведение клипа Задача 8.4 Проанализируйте зависимости x(f),y(t) и убедитесь в правильности работы программы, вычисляющей зависимости x(t), y(t). Задача 8.5 Дополните созданный ранее документ блоком, позволяющим одновре- менно анимировать движения линейного и нелинейного математиче- ских маятников. Рис. 8.7. Зависимости координат от времени (сплошная кривая - координата х, пунктирная кривая- координата у) 210
8. Моделирование колебательных процессов 1 0.8 - 06 0.4 - 0.2 - 0 - - 0.2 - - 0.4 - • 0.6 - - 0.8 -1 - .......I_____I_____I_____i-----i______J-----1-----1-----i-----1------1---- -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 Puc. 8.8. Положение маятника в момент времени t-0 8.3. Затухающие колебания Из опыта известно, что в большинстве реальных колебательных систем присутствует трение. Это приводит к тому, что в отсутствие подкачки энер- гии в колебательную систему амплитуда колебаний уменьшается до ее пол- ной остановки. Такие колебания называются затухающими. В качестве примера колебательной системы, совершающей гармонические колебания, рассмотрим движение груза на пружине (рис. 8.1). При движении с малыми скоростями, как было подробно обсуждено в гл. 3, можно использовать мо- дель, в которой сила трения пропорциональна первой степени скорости движения. В этом случае уравнения движения можно записать в виде: d2x о dx dt dt (8.24) где у - коэффициент затухания. Задача 8.6 1. Создайте в пакете MATLAB т-файл, содержащий описание функции, стоящей в правой части системы дифференциальных уравнений, экви- валентной уравнению (8.24). 2. Проведите расчеты и постройте зависимости x(t\v(t) для колебатель- ной системы с параметрами со,. = 3, х(0) = 1, у(0) = 0, у = 0,5 . 211
Компьютерное моделирование физических процессов в пакете MATLAB 3. Определите частоту и период колебаний осциллятора, используя спектр функции x(t). Сравните спектры и частоту колебаний со случаем отсутствия затухания. Проведите расчеты для нескольких значений у е [0,5;4] и постройте график зависимости частоты колебаний от ко- эффициента затухания. Попробуйте определить аналитическое выражения данной функции. 4. Можно определить амплитуду как максимальное значение функции х(/) на одном периоде колебаний. Вычислите время релаксации т, определяе- мое как время, за которое амплитуда колебаний уменьшается в еа 2,72 раз относительно максимального значения. Покажите, что значение т неизменно в течение всего времени колебаний. Проведите расчеты для нескольких значений у е [0,5;4] и постройте график зависимости време- ни релаксации от коэффициента затухания. Качественно объясните полученную зависимость. 5. Постройте график зависимости полной энергии от времени для различ- ных значений коэффициента затухания. Если энергия маятника умень- шается не монотонно, объясните причину это явления. б. Вычислите средние значения кинетической, потенциальной и полной энергий по полному периоду. Постройте графики зависимости этих средних от номера периода. Проведите сравнительный анализ времен- ных зависимостей этих средних от т при различных значениях коэффи- циента затухания у 7. Проведите вычисления и постройте зависимости x(r),v(f) для у=4,5,6,7 и 8. Будет ли осциллятор совершать колебательные движения для всех значениях у? Определим положение равновесия как точку, в которой амплитуда колебаний становится меньше некоторого заданного значе- ния, например, 10'3. Дополните использованную вами последователь- ность команд командами, позволяющим вычислять время достижения равновесия. Постройте зависимость времени достижения равновесия от коэффициента затухания. 8. Осциллятор называется критически затухающим при данном значении (о0, если у равно наименьшему значению, при котором переход к поло- жению равновесия происходит монотонно. Для каких значений у будет иметь место критическое затухание при <у0 = 3, а>й-1? 9. Постройте фазовые диаграммы для случаев ®0 =3, у = 0,5, 2, 4, 6, 8. Проанализируйте особенности фазовых диаграмм при различных вели- чинах коэффициента затухания и объясните причину их качественных отличий. 212
8. Моделирование колебательных процессов 8.4. Вынужденные колебания линейного гармонического осциллятора При воздействии на линейный гармонический осциллятор внешней пе- ременной силы Г(г) система будет совершать движение, которое от в отли- чие от рассмотренных в предыдущих параграфах называется вынужденны- ми колебаниями. Соответствующее уравнение движения имеет вид: 2 dx F(t) Х = -ф-у - + v at т (8.25) Задача 8.7 1. Создайте в пакете MATLAB документ, позволяющий находить численное решение уравнения (8.25) для силы —— = Aq cos(® г) . (8.26) т 2. Проведите расчеты и постройте зависимости x(t), v(t) для колебатель- ной системы с параметрами ®0 = 3, х(0) = 1, v(0) = 0, у = 0,5, Aq = 1, со = 2. Сравните полученные результаты с результатами предыдущей задачи. В чем состоит качественное отличие поведения функции x(t) от случая невозмущенного движения? Чему равны период и частота и функции х(?) после нескольких колебаний? 3. Проведите расчеты и постройте зависимости x(z), v(f) для начальных условий х(0) = 0, v(0) = 1. Чему равны период, частота и функции x(t) после нескольких колебаний? Существует ли у функции x(f) предельная форма, которая не зависит от начальных условий? Зависит ли поведе- ние функции x(f) от начальных условий на коротких временах? Выдели- те переходную часть функции x(t), которая зависит от начальных ус- ловий и затухает со временем, и установившуюся часть, определяющую поведение функции на больших временах и независящую от начальных условий. 4. Вычислите и сравните спектры исходной функции х(г), части функции x(t), соответствующей переходному периоду, части функции x(t), со- ответствующей установившемуся движению. 5. Вычислите функцию х(7) и ее спектр для а)0 = 1 и а)0 = 4. Чему равны в каждом случае период и частота установившихся колебаний функции х(/) ? Какие параметры влияют на частоту установившихся колебаний? 213
Компьютерное моделирование физических процессов в пакете МАTLAB Убедитесь в том, что установившееся движение описывается формулой x(t) = А(®) cos(® t + б), где 8 - разность фаз между приложенной силой и установившимися ко- лебаниями. Вычислите 8 для со0= 3, 0,5, и значений со = 0; 1,0; 2,0; 2,2; 2,4; 2,6; 2,8; 3,0; 3,2; 3,4. Повторите расчет для у = 1,5 и постройте график за- висимости д(<х>) для обоих значений у. Дайте качественное объяснение полученной зависимости. (Указание. Для оценки 8 используйте спектр стационарной части функции x(t).) 6. Постройте и проанализируйте фазовую диаграмму для случаев а>0 - 3, у = 0,5; 2; 4; 6; 8. Как выглядят фазовые диаграммы при различных у? Объясните обнаруженные отличия. Задача 8.8 Результаты предыдущей задачи показывают, что в установившемся режиме характер колебаний линейного гармонического осциллятора с трением зависит от частоты, приложенной к нему силы. Одна из ха- рактеристик этих колебаний — амплитуда, являющаяся некоторой функцией частоты внешней силы. 1. Для начальных условий x(O) = O,v(O) = O вычислите значения функции А(а>), называемой амплитудно-частотной характеристикой, для со = 0; 1,0; 2,0; 2,2; 2,4; 2,6; 2,8; 3,0; 3,2; 3,4; 3,6; 3,8; 4,0; 5,0; 6,0 при <Уо=3,у = О,5. Постройте график функции А(а>) и качественно объясните поведение этой функции. При наличии у функции А(®) максимума определите соответствующее данной точке значение частоты а>т (резонансная частота). Сравните значение собственной частоты гармонического осциллятора а>0 и резонансной частоты а>т. 2. Вычислите значение функции А(&>) в точке ю = ют и отношение Ай>/(от , где Аа> является «шириной» резонанса. (Величина Асу определя- ется как ширина интервала частот между точками амплитудно- частотной характеристики, равными Ат/42 .) Проведите вычисления при а)0=Ъ,у = 0,1; 0,5; 1.0; 2.0 и оцените вид зависимостей Ати Ай)/а>т от у. 3. Вычислите среднюю за период колебаний кинетическую энергию осцил- лятора в установившемся режиме при указанных выше параметрах ко- 214
8. Моделирование колебательных процессов лебателъной системы и внешней силы. Сравните резонансную частоту кинетической энергии и резонансную частоту амплитуды. Задача 8.9 Исследуйте и опишите особенности движения линейного гармоническо- го осциллятора под влиянием силы F(t): F(t) - const = Fo; F(t')~ Asin(/ft); F(t) = at; F(t) = Foe~al; F(t) = Foe~al cos(M считая, что в начальный момент времени система находится в поло- жении равновесия (х(0) = 0, у(0) = О/ Рассмотрите случаи, когда а,/3«со0\ a,p = ci)Q, Р = а>$, а,р»со0. Задача 8.10. Демонстрация принципа суперпозиции в динамике ли- нейных систем 1. Рассмотрите движение линейного гармонического осциллятора с трени- ем под действием периодической силы (8.10) при ю0 = 3, х(0) = О, v(0) = 0, у = 0,5 , со = 2 для двух случаев Aq = 1,2 Как соотносятся за- висимости x(f) в установившихся режимах? Какой результат будет получен при Aq = 4 ? Удовлетворяют ли переходные режимы для различ- ных внешних сил тем же соотношениям, что и установившиеся режимы? 2. Вычислите отклики на внешние силы Fl, F2, F3 и F1+ F2+ F3 при со =2, Ко=О,5; а>-4, А.о=О,25; со = 6, Kq=0125. Сравните спектры установив- шихся режимов функций x(t) и сформулируйте принцип суперпозиции для решений линейных уравнений. 3. Проведите расчеты, аналогичные расчетам в п.2, для математического маятника, движение которого описывает уравнением (8.14). Применим ли принцип суперпозиции к нелинейным системам? ЛИТЕРАТУРА 1. Ландау Л. Д., ЛифшицЕ. М. Механика. М.: Наука, 1958. 2. Мандельштам И. Л. Лекции по теории колебаний. М.: Наука, 1972. 3. Матвеев А. Н. Механика и теория относительности. М.: Высшая школа, 1986. 4. Гулд Х.,Тобочник Я. Компьютерное моделирование в физике. М : Мир, 1990.4. 1. 215
Глава 9 МОДЕЛИРОВАНИЕ ВОЛНОВЫХ ЯВЛЕНИЙ 9.1. Введение В данной главе мы продолжаем рассмотрение колебательных движений, начатое в гл. 8, в которой были рассмотрены гармонический осциллятор, линейный и нелинейный математические маятники. Здесь в качестве базо- вой математической модели выбрана линейная цепочка связанных гармони- ческих осцилляторов. С помощью данной модели при достаточно большом числе частиц оказывается возможным изучить основные особенности вол- новых движений (в первую очередь показать, что энергия передается вдоль цепочки, хотя каждый осциллятор колеблется вблизи своего положения равновесия), осуществить в пределе непрерывной цепочки переход к ли- нейному волновому уравнению. Далее мы рассмотрим такие фундаменталь- ные понятия волновой теории, как бегущая волна, стоячая волна, волновой пакет, фазовая скорость, групповая скорость, дисперсия, интерференция, дифракция, рефракция, поляризация, принцип Ферма. 9.2. Моделирование свободных колебаний цепочки связанных гармонических осцилляторов Модели, представляющие собой линейные цепочки (рис. 9.1), состоящие из конечного или бесконечного числа связанных осцилляторов, оказались весьма эффективными и в настоящее время используются в различных об- ластях физики: физике твердого тела, физике сплошных сред, химической физике, радиофизике и др. (Например, в [1] для описания системы трех свя- занных электрических колебательных контуров использована модель, представляющая собой систему шариков с массами т/, т2, т3, связанных между собой пружинками одинаковой жесткости к.) Используя модели ли- нейных цепочек, оказывается возможным естественным образом осущест- вить переход к волновым процессам и ввести такие понятия, как длина вол- ны, групповая скорость, фазовая скорость, дисперсия и др. Рис. 9.1
9. Моделирование волновых явлений Отмеченные обстоятельства определяют целесообразность рассмотрения данных моделей в соответствующих курсах физики и компьютерного моде- лирования. Однако необходимо отметить два важных обстоятельства. Во- первых, аналитические решения уравнений движения длинных линейных цепочек (N > 3) могут быть получены только для относительно небольшого числа случаев [2]: 1) к0 = kj = ... = kN_j, m0 = ml - ... = ; 2) k0 = k2 = k4 =..., = k3 - k5 = ...; m0 - m, =... = ; 3) k0 — kj =... = kN_i, m0=m2=m4 =..., ml = m3 =m5 =...; 4) kt: = к * kN, i = 0, -1, т$ = =... = ,5) kj =k, i = 0,1, ...,N , m. = m * mN^, i = 0,1,..., TV - 2 . Во-вторых, большинство этих решений оказываются весьма громоздкими и для их последующего анализа прихо- дится использовать ПК. Запишем уравнения движения для каждой массы колебательной систе- мы, представленной на рис. 9.1: тьхо=-кохо-к1(хо-х1) mjXj = -kj (х, - Xj_j) - ki+l (xz - xz+1), i = 1... TV - 2. (9.1) mN-lXN-l = ~^N-l (ЛЛМ ~ XN~2 ) ~ ^NxN-l Для удобства дальнейшего решения запишем уравнение (9.1), введя обо- значение со^р =ка1тр,ъ следующем виде: х0 = -<ЦдаХ0 - ®io(xo - X]) ' xi = ~<°ii (xi ~ xi-i) “ (xz - xM j), i = 1... TV - 2. (9.2) XN-\ = ~6)N-lN-l(xN-l ~xN-2^~a>NN-ixN-\ Следуя общему подходу к решению рассматриваемой задачи, изложенному в [3], ищем решение системы дифференциальных уравнений (9.2) в виде: Xj=AjeJ(o,,i = 0,l..N-l. (9.3) Подставив (9.3) в систему (9.2), сгруппировав члены, пропорциональные Aj, и записав систему в матричном виде, получим: В-А = 0, (9.4) где ( 4 ь 217
Компьютерное моделирование физических процессов в пакете MATLAB В - трехдиагональная матрица, элементы которой вычисляются по сле- дующим правилам: ®оо = ~а> + ^оо + > ®oi ~ ~a}w > , В, = -со2 + щ2 + , В,+1 = -®21(., i = 2,..N - 2, (9.5) ^N-lN-2 ’ &N-IN-1 = ~®2 +&N-IN-1 +li)NN-l- Необходимым и достаточным условием существования решения систе- мы уравнений (9.4) является равенство нулю определителя матрицы В \а>2-а>2\ = 0. (9.6) Уравнение (9.6), называемое характеристическим уравнением, является уравнением степени N - 1 относительно а)2. Оно имеет в общем случае N-1 различных вещественных положительных корней а>2,сс = 1,.JV-1. Каждому собственному числу щ2 соответствует собственный вектор Еа, являющийся решением уравнения П-За=б)2а~а, (9.7) где <1 - трехдиагональная матрица элементы которой вычисляются по сле- дующим правилам: ^00 = ^00 + ®10 ’ «01 = -бУ10 ’ «М-1 = ~^2, Па = (О21 + й)2+и ’ niiU=-d)2¥li,i = 2,..N~2, (9.8) «ЛГ-1ЛГ-2 =~coN-lN-l’ ^N-lN-l =a>N-lN-l +(oNN-l- Частоту ty2,a = 1,..У-1 называют частотой нормальных колебаний, а вектор Еа - вектором нормального колебания, отвечающего а-й частоте. Вектор нормального колебания га меняется во времени по закону ra = 5aC0S(®«?+ '?’«) (9-9) Общее решение системы дифференциальных уравнений (9.2) х(г), есть суперпозиция всех векторов нормальных колебаний га : W-1 x(0 = 2C«SaCOS(£yaZ+?’«) (9.10) а=0 где Са, <ра - произвольные постоянные, определяемые из начальных условий. Скорость движения масс можно определить, продифференцировав (9.10) по времени: 218
9. Моделирование волновых явлении N-\ *(0 = СаВа(оа sin(®at + (ра ) . (9.11) <2=0 Для решения задачи Коши системы дифференциальных уравнений (9.2) необходимо задать значения координат х(0) и скоростей х(0) каждого тела системы в начальный момент времени и решить систему уравнений лм ^(о)=2с«3« cos(^) Г1° (9.12) *(°) = -£Ca3a®asin(Pa) а=0 относительно неизвестных Са, <ра . Запишем (9.12) в матричном виде (х(°Л Г® zwc) be(O)J\Z 0vJ\cJ’ (9.13) где Z - нулевая матрица, размерности (V-lxN -9 (9-14) йЬ—О ^“0 ®0~1 ®1—1 k “b-w-i “t-w-i (9-15) C0cos(p0) A (9.16) чСл;_1 cos(^?w_1)> ' Cosin(po) 4 S-N~\ s'n(^-l)/ (9.17) Система уравнений (9,13) оказывается нелинейной, однако блочная структура матрицы позволяет найти решение данной системы, не прибегая к 219
Компьютерное моделирование физических процессов в пакете MATLAB численным методам. Для этого, сначала, решив две линейные системы уравнений ОС] = х(0), 0VC2=*(O), найдем векторы С1( С2, затем координаты вектора С С: = Jc? + cv;, i = o,i,.. .N -i, (9.18) (9.19) (9.20) и далее значения начальных фаз каждого нормального колебания: <pt - arctan С, (9.21) Отметим, что функция arctan на интервале [0;2л] является двузначной (рис. 9.2), поэтому для выбора правильных значений данной функции необ- ходимо контролировать знаки числителя и знаменателя дроби в выражении (9.21). Как очевидно из рис. 9.2, правильное значение угла выбирается по следующим правилам: Рис. 9.2. К выбору правильного значения угла arctai при sin(x) > 0, cos(x) > 0 <9 = ( (sin(x) ) . / \ „ tt + arctanl -- npHsin(x) < 0,cos(x) > 0 (cos(x)) (sin(x) \ „ л + arctan------- при sin(x) < 0, cos(x) < 0 ^cos(x)) „ (sin(x) A / x „ , , „ 2zr + arctan ---- при sin(x) > 0, cos(x) < 0 (cos(x) J (9.22) 220
9. Моделирование волновых явлений Предваряя описание решения задачи об описании колебаний цепочки связанных осцилляторов, приведем алгоритм ее решения: 1. Задать число тел, образующих цепочку N. 2. Задать массы тел т(, г=0,1..., N-9. 3. Задать значения коэффициентов жесткости пружин к\, (=0,1..., N. (Отметим, что для описания движения цепочки со свободным концом дос- таточно положить кц = 0 или kN = 0.) 4. Вычислить элементы матрицы Q в соответствии с (9.8). 5. Найти собственные числа матрицы Q. 6. Найти собственные векторы , соответствующие набору собствен- ных частот со а . 7. Задать начальные условия х(0), х(0). 8. Решить систему линейных уравнений (9.18), (9.19) относительно век- торов С| и С2 соответственно. 9. Вычислить координаты вектора С в соответствии с (9.20). 10. Вычислить значения начальных фаз нормальных колебаний де в со- ответствии с (9.21). 11. Определить законы движения тел, образующих колебательную сис- тему в соответствии с (9.10) и (9.11). 12. Провести анализ полученных законов движения. Данный алгоритм в пакете MATLAB реализуется следующей последова- тельностью действий: » clear all » N=3; % число тел колебательной системы » ш=[1 2 1]; % массы тел колебательной системы » к=[1 111];% жесткости пружин колебательной системы » R0=[-0.2 0 -0.3]; % смещения тел в момент времени t = 0 » v0=[l -3 0]; % скорости тел в момент времени t = 0 % вычисление элементов матрицы = ка1тр » for alpha=l:N+l for beta=l:N omega(alpha,beta)=k(alpha)/m(beta); end; end; »i=l:N; »j=l:N; 221
Компьютерное моделирование физических процессов в пакете MATLAB % вычисление элементов матрицы OMEGA в соответствии с (9.8) » OMEGA(ij)=0; » for i=l:N if i==l OMEGA(i,i)=omega(l,l)+omega(2,l); OMEGA(l,2)=-omega(2,l); end; if i>l if i<N OMEGA(i,i-l)=-omega(i,i); OMEGA(i,i)=omega(i,i)+omega(i+l,i); OMEGA(i,i+l)=-omega(i+l,i); else OMEGA(i,i-l)=-omega(i,i); OMEGA(i,i)=omega(i,i)+omega(i+l,i); end; end; end; » [Sigma,Teta]=eig(OMEGA); % вычисление собственных значений и % собственных векторов матрицы OMEGA » Teta=TetaA0.5; % вычисление собственных частот » for i=l:N forj=l:N SigmaV(j,i)=-Teta(i,i)*Sigma(j,i); end; end; » Cl=SigmaA-l*RO'; % решение системы уравнений (9.18) » C2=SigmaVA-l*vO'; % решение системы уравнений (9.19) » С=(С1.А2+С2.А2).А0.5; % вычисление координат вектора С » clear alpha % вычисление фазы нормальных колебаний в соответствии с (9.21), (9.22) » for i=l:N if C(i)==0 a!pha(i)=0; else alpha(i)=atan(C2(i)JCl(i)); if Cl(i)<0 alpha(i)=pi+alpha(i); end; ifCl(i)>0 if C2(i)<0 222
9. Моделирование волновых явлений alpha(i)=2*pi+alpha(i); end; end; end; end; » N=length(OMEGA); » N1=2A13; % число узлов временной сетки » j=l:Nl; » Tmax=80; % правая граница временного интервала »t(j)=(j-l)/(Nl-l)*Tmax; % координаты узлов временной сетки % вычисление значений координат тел в узлах временной сетки »for j=l:Nl s=zeros(N,l); for i=l:N s=s+C(i)*Sigma(:,i).*cos(Teta(i,i)*t(j)+alpha(i)); end; X(:j)=s; end; % вычисление значений скоростей тел в узлах временной сетки » for j=l:Nl s=zeros(N,l); for i=l:N s=s+C(i)*Sigma(:,i).*Teta(i,i)*sin(Teta(i,i)*t(j)+alpha(i)); end; Xv(:J)=-s; end; % визуализация зависимостей мгновенных значений смещений и скорости % от времени » figure(l);figure(l);pIot(t,X(l,:),'-k',t,X(2,:),'--k',t,X(3,:),':k') » figure(2);plot(t,Xv(l,:),'-k',t,Xv(2,:),'--k',t,Xv(3,:),':k') % построение траектории движения тел на фазовой плоскости » figure(3);plot(X(l,:),Xv(l,:)) » figure(4);plot(X(2,:),Xv(2,:)) » figure(5) ;p!ot(X(3,: ),Xv(3,:)) % вычисление спектров зависимостей смещений тел системы от времени » cl=fft(X(l,:)); » c2=fft(X(2,:)); » c3=fft(X(3,:)); »j=2:Nl/2; % вычисление спектральной плотности смещений тел » Cml(j-l)=abs(clG-l))/(Nl/2); » Cni2(j-l)=abs(c2(j-D)/(Nl/2); 223
Компьютерное моделирование физических процессов в пакете МА TLAB » Cm3(j-l)=abs(c3(j-l))/(Nl/2); » Freq(j-l)=(j-l)/Tmax; % вычисление частот спектральных гармоник % визуализация спектральных плотностей смещений тел »figure(3);semilogy(Freq,Cml,'-k',Freq,10*Cm2,'—к',... Freq^00*Cm3,':k') » axis([0 2.5 10Л-3 2000]) Результаты выполнения приведенной выше последовательности команд представлены на рис. 9.3-9.8. Рис. 9.3. Зависимость мгновенных значений смещений тел от времени Рис. 9.4. Зависимость мгновенных значений скорости движения тел от времени О 10 20 30 40 50 60 70 80 224
9. Моделирование волновых явлений Рис. 9.6. Фазовая траектория второго тела 8—1576 225
Компьютерное моделирование физических процессов в пакете МА TLAB Рис. 9.8. Спектры функций x(t, ) (масштаб по оси oY - полулогарифмический, для большей наглядности графики сдвинуты друг относительно друга) 226
9. Моделирование волновых явлений ЗАМЕЧАНИЯ 1. Описанная последовательность команд позволяет проводить анализ движения линейной цепочки с произвольным числом масс. Однако вводить данные при больших значениях W недостаточно удобно. Поэтому для ана- лиза колебаний длинных линейных цепочек нужно сначала создать файлы, содержащие значения масс, коэффициентов жесткости пружин, начальные смещения и координаты вектора начальной скорости, используя, например, программу электронных таблиц Excel. При этом следует расположить ис- ходные данные в одном столбце и сохранить их в файле в формате «Тек- стовый файл (разделители-пробелы)». В этом случае, созданный файл бу- дет иметь расширение txt. Обратите внимание, что файл нужно размещать в папке, имеющей название, состоящее из букв английского алфавита, имя файла также должно состоять из букв английского алфавита. Чтение данных из файлов данных типов осуществляется командой dlmread. Например, ес- ли значения масс пружинок сохранены в файле mass.txt, находящемся на диске С в папке Data, считывание данных осуществляется следующей ко- мандой: m = dlmread('C:\Data\mass.txt'). Обратите внимание, что при соз- дании файла необходимо использовать настройку, при которой для разделе- ния целой и дробных частей действительных чисел используется точка. Для установки соответствующего стандарта ввода действительных чисел необ- ходимо выполнить следующую последовательность команд операционной системы Windows: Пуск => Настройка => Панель управления => Язык и региональные стандарты => Настройка, затем в поле Разделитель целой и дробной части установить «.».) 2. Для нахождения собственных чисел и собственных векторов матрицы нами использовалась функция eig. При обращении » d = eig(A) функция возвращает вектор-столбец, содержащий собственные значения матрицы А. При обращении »[V,D] = eig(A) функция возвращает две матрицы, диагональная матрица V содержит соб- ственные значения матрицы А, матрица D - собственные векторы, записан- ные в виде вектор-столбцов. Задача 9.1 1. Исследуйте свободные колебания системы, состоящей из двух связанных осцилляторов. Вычислите зависимости x^t), X0(t), Xj(r), jtj(f) для на- чальных условий хо(О) = О.5, хо(О) = О, х1(0) = 0, Х](0) = 0 считая, что {k0 = к2 = 1 ,к} = 0.8, т$ = mt = 1}, {к0 = к2 = 1 ,kt = 1, m0 = m, =1} 227
Компьютерное моделирование физических процессов в пакете MATLAB на временном интервале [0;800], выбрав временную сетку, состоящую из 214 точек. Что представляют собой изучаемые движения? 2. Проанализируйте удвоенные спектры зависимостей x0(f),Xj(r) (Здесь множитель 2 учитывает тот факт, что в спектре функции одной частотной компоненте соответствуют две гармоники с положитель- ной и отрицательной частотами (см. раздел 7.7)) Как соотносятся ко- ординаты экстремумов спектров зависимостей x0(f), х1(0 с собст- венными частотами, значения которых возвращаются в вектор Е ? Как соотносятся значения экстремумов спектров зависимостей х0(г), х,(г) со значениями коэффициентов, входящих в выражение (9.11)? (Указа- ние. В выбранных в описанном выше документе обозначениях зависимо- сти координат тел колебательной системы имеют вид: хо (0 = ©о,oQ cos (Eot + а0) + 0О jCj cos (Ejf + , X! (r) = ©i oG cos + «о) + ® 1,1Q cos (Е]Г + cq).) 3. В чем причина различий между значениями коэффициентов, входящих в выражения для x0(f), Xj(z), и значениями экстремумов соответст- вующих спектров? Как меняется точность спектральной оценки коэф- фициентов, входящих в выражения для x0(f), хфр), при изменении шага временной сетки? Как меняется точность спектральной оценки коэф- фициентов, входящих в выражения для x0(r), Xj(r), при длительности сигнала? Объясните полученные результаты. Задача 9.2 Решите задачу 9.1, считая, что {k0 = к2 = 1 ,к[ = 0.2, т$ = пц - 1}. Как меняются частоты каждого колебания при ki =0.1. Задача 9.3 Решите задачи 9.1, 9.2 для начальных условий хо(О) = О.5, х0(0) = 0, Xj(O) = 0.5, Х[(0) = 0. Получите выражения для кинетической и потен- циальной энергий каждой частицы. Пользуясь законом сохранения энер- гии, справедливого для всей системы, проверьте полученные выражения. Вычислите и изобразите энергию каждой частицы как функцию време- ни графически, и качественно опишите ее поведение. Исследуйте, как зависит частота колебаний от жесткости пружин к0 = к2,к1. Объяс- ните полученные результаты. 228
9. Моделирование волновых явлений Задача 9.4 Решите задачи 9.1, 9.2 для начальных условий хо(О) = О.5, Ло(О) = О, %!(()) =-0.5, X] (0) - 0. Вычислите и изобразите графически энергию каждой частицы как функцию времени и качественно опишите ее пове- дение. Проведите исследование и определите, как зависит частота ко- лебаний от жесткости пружин k0 = &2Л1- Объясните полученные ре- зультаты. Сравните полученное значение частоты с соответствую- щим значением, найденным в предыдущей задаче. Задача 9.5 Решите задачи 9.1-9.2, считая, что {к0=к2=1, ^=0.2, т0 = 1,т2 = 2}. Как меняются частоты каждого колебания при кх =1 ? Исследуйте зависимость частот собственных колебаний от массы тел колебательной системы. Задача 9.6 Дополните описанный выше документ модулем, позволяющим решать обратную задачу: по известным значениям собственных частот и со- ответствующим им собственным векторам определять начальные ус- ловия, при которых возбуждается только одна мода колебаний. Про- верьте правильность работы модуля, задав соответствующие началь- ные условия, вычислив зависимости х0(?), Xj(r) и проанализировав спектр данных зависимостей. Задача 9.7 Как известно [4], при сложении двух колебаний Xj(f) = Acos(<sy), x2(t) = Acos(®2f) c равными амплитудами и близкими частотами a>lt а)2, отвечающим следующему условию: аэ2=со1±\аэ, где /5а>«а\,а)2, в рассматриваемой системе всегда возникают биения, т. е. зависи- мость координаты от времени описывается зависимостью х(?) = [2А cos(®modr)]cos(®ffl/JZ/), где <4midi = (®1 + «2 )/2, a)mod = I®, - ®2|/2. 1. Используя результаты задачи 9.3, выберите значения коэффициентов же- сткости пружин, обеспечивающих возникновение в системе биений. Ис- пользуя результаты задачи 9.6, определите начальные условия, при кото- рых в системе связанных осцилляторов возникают биения. Для найденных начальных условий вычислите зависимости x0(f), x0(f), Х|(/), Xj(z). 229
Компьютерное моделирование физических процессов в пакете MATLAB 2. Определите значения comidl, a>mod, задайте функцию x(t), вычислите мгновенные значения смещения, описываемого данной функцией, и ото- бразите их на графике. Сравните полученные результаты с результа- тами расчетов по формуле (9.10). Таким образом, в результате решения задач 9.1-9.6 можно сделать сле- дующие выводы: движение колебательной системы, состоящей из двух свя- занных осцилляторов, всегда представляет сумму двух движений, имею- щих различные частоты (нормальные колебания). Существуют начальные условия, при которых в системе возбуждается только одно нормальное ко- лебание. При {к0 - к2 * , /и0 = тх = 1} нижняя частота нормальных коле- баний = -Jk0/m , верхняя частота нормальных колебаний ®2 = J(k0 + 2кх )/т . При возбуждении нормальных колебаний с частотой частицы колеблются в фазе, с частотой ®2 частицы колеблются в про- тивофазе. При определенных значениях масс, коэффициентов жесткости пружин и начальных условиях в колебательной системе возникают биения. Задача 9.8 Рассмотрите движение колебательной системы, состоящую из трех связанных осцилляторов, считая, что {к0 = к4 = 1, кх = к2 = к2 - 0.2, т,- =1, i = 0,1,2 }, с ненулевыми начальными условиями. Опишите зави- симость смещения частиц от времени. Задача 9.9 Решите задачу 9.8 с начальными условиями, приведенными в табл. 9.1, полагая все начальные скорости равными нулю. Таблица 9.1. Начальные условия для задачи 9.10 х0(0) *1(0) х2(0) Случай 1 0.5 0.5 0.5 Случай 2 0.5 -0.5 0.5 Случай 3 0.5 0 -0.5 Задача 9.10 Рассмотрите движение колебательной системы, состоящей из N свя- занных осцилляторов (N > 10), считая, что /т( =1,1 = 0,1,...,1V-1, kj = 1, у = 0,1, ...,1V/, при различных начальных условиях. 230
9. Моделирование волновых явлений 1. Сравните численные значения собственных частот со,, с известным ана- литическим результатом <» =2,1—sinl——-—1,5 = 1,2,...,N [2, зада- ет <2(7V + l)y /Г 5 ча JV° 7.11, где К, =---- называют волновым вектором s-й моды s 2(W+l) колебаний. Постройте зависимость <os =a>s(K). 2. Величину v j = cos /Кs называют фазовой скоростью колебаний. Пост- ройте график зависимости Vj и убедитесь в том, что при s ~ 1 (длинноволновой предел) фазовая скорость не зависит от волново- го вектора. Задача 9.11 1. Рассмотрите движение колебательной системы, состоящей из N свя- занных осцилляторов (N > 10), считая, что fm, =l,i = O,l,...,W-l, , =l,j = O,1,...,NЗадайте начальные условия хо(О) = О.5, x,(O) = O,i = l,2,...,2V-l. 2. Вычислите мгновенные значения функций х, (t), i = 0,1,..., N -1. 3. Используя мгновенные значения функций х, (г), i - 0,1,..., /V -1, определи- те скорость распространения возмущений в линейной цепочке. (Указа- ние. Для нахождения скорости распространения возмущения следует определить временные интервалы tn (n=l,2,...,N -1), в течение которых смещение п-го тела превысит заданное значение (например, 10'2), затем по зависимости n=f(tj, используя линейную регрессию*, оценить угловой коэффициент линии регрессии.) * В пакете MATLAB для нахождения наклона линии регрессии в смысле наименьших квадратов необходимо выполнить следующую последовательность команд: % задание исходных данных » t=[012 34]'; »у=[0.1 0.9 2.1 2.9 4.15]'; % решение системы уравнений метода наименьших квадратов » X=[ones(size(t)) t]; » а=Х\у; » Т=0:0.01:4;Т=Т'; % задание временной сетки для вычисления значений % аппроксимирующей функции » Y=[ones(size(T)) Т]*а; % вычисление значений аппроксимирующей функции » plot(t,y, 'о',Т, У,% визуализация исходи, данных и аппроксимирующей функции 231
Компьютерное моделирование физических процессов в пакете МА TLAB 4. Для того чтобы убедиться в независимости вашей оценки скорости распро- странения возмущений от N, повторите расчеты для больших значений N. 5. Проведите исследование и определите зависимость скорости распро- странения возмущения от массы тел, образующих колебательную сис- тему, и жесткости пружин. 6. Рассмотрите «неупорядоченную» систему при помощи приписывания телам колебательной системы различных масс (например, с помощью генератора случайных чисел). Как влияет беспорядок на скорость рас- пространения возмущения? 7. Рассмотрите «неупорядоченную» систему при помощи приписывания пружинам колебательной системы различных жесткостей (например, с помощью генератора случайных чисел). Как влияет беспорядок на ско- рость распространения возмущения? Задача 9.12 Используя описанный выше документ, решите задачу 7.4 из задачника [2]. 9.3. Моделирование вынужденных колебаний цепочки связанных гармонических осцилляторов Для описания движения цепочки связанных гармонических осциллято- ров под действием вынуждающей силы следует добавить в правую часть системы уравнений движения (9.2) соответствующие выражения для внеш- ней силы. Дальнейшее рассмотрение ограничим случаем, когда сила прило- жена к точке А колебательной системы (рис. 9.1), что для достаточно длин- ных цепочек не приводит к потере общности. Система дифференциальных уравнений в данном случае принимает сле- дующий вид: 2 2 < ч Г(?) А?о - ~®00Х0 “ ®ю(х0 ~ Х1 /и0 • х< = -rfi (xi - Xi-1) - «,41, (х, - x,+i). i = 1 • W - 2. (9.23) XN-l = ~a,N-lN-l(xN-l “ XN-1)~ a,NN-lxN-l Будем искать численное решения системы (9.23). Напомним, что ранее нам уже приходилось решать системы дифференциальных уравнений второго по- рядка (см. гл. 4,6). Для этого нами использовался следующий алгоритм: 1) задать вектор-функцию, возвращающую значения первых производ- ных системы ОДУ (размерность функции 2/V); 232
9. Моделирование волновых явлений 2) задать вектор, содержащий начальные условия (х,(0), Х,(0), (=1,2...У-1); 3) обратиться к одной из функций, возвращающих таблицу, содержа- щую численное решение системы ОДУ, например функции ode45; 4) провести визуализацию полученных численных решений. Описание функции, возвращающей значения первых производных сис- темы ОДУ (9.23), мы разместили в файле EulerZ.m, листинг которого при- водится ниже. % листинг файла Euler2.m function z=euler2(t,x) % описание функции, возвращающей значения первых % производных global k m А Omega N=length(m); % число тел колебательной системы z=zeros(2*N,l); z(D=x(2); - z(2)=-(k(l)/m(l))*x(l)-(k(2)/m(l))*(x(l)-x(3))+F(t,A,Omega); К=3; for i=2:N-l z(K)=x(K+l); z(K+l)=-(k(i)/m(i))*(x(K)-x(K-2))-(k(i+l)/m(i))*(x(K)-x(K+2)); K=K+2; end; z(2*N-l)=x(2*N); z(2*N)=-(k(N)/m(N))*(x(2*N-l)-x(2*N-3))-k(N+l)/m(N)*x(2*N-l); function f=F(t,A,Omega) % функция, описывающая внешнюю вынуждающую силу f= A*sin(Omega*t); Далее для нахождения и визуализации численного решения системы ОДУ (9.23), описывающих систему, совершающую свободные колебания, необходимо выполнить следующую последовательность команд: » clear all; » global k m A Omega » N=16; % число тел колебательной системы » n=l:N; » m(n)=l; % задание масс тел »i=l:N+l; 233
Компьютерное моделирование физических процессов в пакете МА TLAB » k(i)=l; % задание жесткостей пружин колебательной системы » n=l:2*N; % начальные условия » R0(n)=0; » R0(l)=0.5 » А=0; % амплитуда внешней вынуждающей силы » Omega=0.0; % частота внешней вынуждающей силы » Tfin=50*pi; % правая граница временной сетки » Np=2A13-l; % число узлов временной сетки » [T,M]=ode45('euIer2',[0:Tfin/Np:Tfin],R0); » sul>plot(4,4,l);plot(T,M(:,l));axis([0 40 -0.5 0.5]);title('n=l'); » subplot(4,4,5);plot(T,M(:,3));axis([0 40 -0.5 0.5]);title('n=2'); » subplot(4,4,9);plot(T,M(:,5));axis([0 40 -0.5 0.5]);title('n=3'); » subplot(4,4,13);plot(T,M(:,7));axis([0 40 -0.5 0.5]);title('n=4'); » subplot(4,4,2);plot(T,M(:,9));axis([0 40 -0.5 0.5]);title('n=5'); » subplot(4,4,6);plot(T,M(:,ll));axis([0 40 -0.5 0.5]);title('n=6'); » subpIot(4,4,10);piot(T,M(:,13));axis([0 40 -0.5 O.5]);title('n=7'); » subplot(4,4,14);pIot(T,M(:,15));axis([0 40 -0.5 0.5]);title('n=8'); »subplot(4,4,3);p!ot(T,M(:,17));axis([0 40 -0.5 0.5]);title('n=9'); » subplot(4,4,7);plot(T,M(:,19));axis([0 40 -0.5 0.5]);title('n=10'); » subpIot(4,4,ll);pIot(T,M(:,21));axis([0 40 -0.5 O.5]);title('n=ll'); » subpIot(4,4,15);plot(T,M(:,23));axis([0 40 -0.5 O.5]);title('n=12'); » subplot(4,4,4);plot(T,M(:,25));axis([0 40 -0.5 0.5]);title('n=13'); » subplot(4,4,8);plot(T,M(:,27));axis([0 40 -0.5 0.5]);title('n=14'); » subplot(4,4,12);plot(T,M(:,29));axis([0 40 -0.5 0.5]);title('n=15'); » subplot(4,4,16);plot(T,M(:,31));axis([0 40 -0.5 0.5]);title('n=16'); Результат выполнения приведенной выше последовательности команд представлен на рис. 9.9. Одной из основных проблем численного решения ОДУ и систем ОДУ явля- ется проблема выбора шага интегрирования А/, поскольку при достаточно большом шаге интегрирования возникают неустойчивые решения, т. е. реше- ния, погрешность которых начинает возрастать во времени экспоненциально быстро. Один из способов проверки устойчивости метода заключается в кон- троле величины полной энергии, которая в случае свободных колебаний долж- на сохраняться, поэтому для проверки правильности выбора шага интегрирова- ния А/ можно использовать следующий алгоритм: 1. Задать начальные смещения и скорости тел цепочки связанных осцилляторов. 2. Задать временной интервал, на котором ищется решение системы ОДУ. 3. Задать число точек, в которых ищется численное решение системы ОДУ. 4. Найти решение системы ОДУ. 234
9. Моделирование волновых явлений 5. Вычислить значения энергии системы связанных осцилляторов в каж- дый момент времени. 6. Проанализировать изменение энергии системы во времени на задан- ном временном интервале и оценить точность выполнения закона сохране- ния энергии. 7. При неудовлетворительной точности решения повторить пп. 3-6. 8. При удовлетворительной точности решения перейти к анализу выну- жденных колебаний. Рис. 9.9. Зависимость мгновенных значений смещения тел колебательной системы от времени °— Как очевидно, для реализации описанного выше алгоритма необходимо уметь вычислять энергии каждого из тел системы в заданные моменты вре- мени. Для решения данной задачи можно использовать функцию Еп, описа- ние которой мы сохранили в файле En.m. % листинг файла En.m function E=En(N,m,k,M) K=length(M); % число строк матрицы решений К1=1; for j=l:N for i=l:K if j>l 235
Компьютерное моделирование физических процессов в пакете MATLAB if j<N e(i)=0.5*m(j)*M(i,2*j).A2+... 0.25*k(j)*(M(i,2*j-l)-M(i,2*j-3)).A2+... 0.25*k(j+l)*(M(i,2*j-l)-M(i,2*j+l)).A2; end; end; if j==l e(i)=0.5*m(l)*M(i,2)A2+0.5*k(l)*M(i,l)A2+... 0.25*k(2)*(M(i,l)-M(i,3))A2; end; if j==N e(i)=0.5*m(N)*M(i,2*N)A2+0.5*k(N+l)*M(i,2*N-l)A2+... 0.25*k(N)*(M(i,2*N-l)-M(i,2*N-3))A2; end; end; en(:,Kl)=e'; K1=K1+1; end; E=en; Для вычисления мгновенных значений энергии тел колебательной сис- темы и ее полной энергии необходимо выполнить следующую последова- тельность команд: » clear all; » global k m A Omega » N=16; » n=l:N; » m(n)=l; »i=l:N+l; » k(i)=l; » n=l:2*N; » R0(n)=0; » R0(l)=0.5; » A=0.0; » Omega=0.0; » Tfin=50*pi; » Np=2A13-l; » (T,M]=ode45('euler2'9[0:Tfin/Np:Tfin],R0); » E=En(N,m,k,M); » plot(T,E(l,:),T,E(8,:),T,E( 16 236
9. Моделирование волновых явлений » for i-1 :Np+l s=E(i,:); Efull(i)=sum(s); end; » figure(l);pIot(T,E(:,l),T,E(:,4),T,E(:,8),T,E(:,12)) » axis([0 30 0 0.25]); » figure(2);plot(T,Efull) Результаты выполнения приведенной выше последовательности команд представлены на рис. 9.10 и 9.11. 0.25 Рис. 9.10. Мгновенные значения энергий выбранных тел колебательной системы Рис. 9.11. Зависимость полной энергии системы от времени 237
Компьютерное моделирование физических процессов в пакете МА TLAB Анализ зависимости мгновенной энергии колебательной системы от време- ни, представленная на рис. 9.11, показывает, что полная энергия отклоняется от своего первоначального значения по линейному закону. При этом максималь- ная величина отклонения, характеризующая точность численного решения, на выбранном временном интервале не превосходит 0.24%. Задача 9.13 Используя документ, описанный в разделе 9.2, найдите точные значения зависимостей координат тел системы связанных осцилляторов от вре- мени, совершающей свободные колебания. Сравните зависимости коор- динат тел системы связанных осцилляторов от времени, найденные численным решением системы ОДУ (9.2), с точными значениями. Оце- ните точность численного решения. Для анализа движения системы связанных осцилляторов под действием вынуждающей силы следует в приведенной выше последовательности ко- манд задать отличными от нуля значения переменных А и Omega. Задача 9.14 Рассмотрите движение колебательной системы, состоящей из N свя- занных осцилляторов (N > 10), считая, что {mt -l,i = Q,l,...,N-1, Лу-=1,У = 0,1.N }, при начальных условиях {х{(0) = 0, Х1(0) = 0) под действием внешней силы f(t) - Asin(Qr), приложенной в т. А. 1. Найдите частоты собственных колебаний a>s,s =0,l,...,N-1 рассмат- риваемой системы связанных гармонических осцилляторов. 2. Исследуйте движение каждого из тел системы связанных осцилляторов при Q = a>s, s = 0,1,..., IV -1, используя для этого зависимости х, (г), v;(t), E,(t) i = 0,1,..., N -1 и их спектры. 3. Исследуйте движение каждого из тел системы связанных осцилляторов при условии {£1 е [min(<yv); max(a>s)], £2^cos,s = 0,1, ...,N -1 /. 4. Опишите движение колебательной системы при Q«min(®s) и Q»max(®s). Как зависит амплитуда колебаний от номера частицы при Q » тах(буд.) ? 5. Опишите движение колебательной системы при Q < min(®v) и Q > тах(®,). 6. Исследуйте зависимость скорости распространения возмущений в ли- нейной цепочке от частоты возбуждающей силы. Объясните получен- ный результат. 238
9. Моделирование волновых явлений 7. Исследуйте зависимость скорости распространения возмущений в ли- нейной цепочке от массы тел системы связанных осцилляторов. 8. Исследуйте зависимость скорости распространения возмущения в ли- нейной системе от жесткости пружин. В результате решения задачи 9.14 можно сделать следующие выводы: в линейной системе связанных гармонических осцилляторов происходит пе- редача энергии вдоль цепочки от левого конца цепочки к правому. Рассмат- риваемая система обладает фильтрующими свойствами, не пропуская коле- бания с частотами Q « min(®,.) и Q » тах(ш5). При воздействии на сис- тему внешней вынуждающей силы с частотой Q, отвечающей условию Q « min(<y(), система совершает колебания как единое целое с частотой, рав- ной частоте внешней вынуждающей силы. При воздействии на систему внеш- ней вынуждающей силы с частотой Q, отвечающей условию Q » max(®s), амплитуды колебаний частиц убывают к правому концу цепочки. Задача 9.15 Решите задачу 9.14, считая, что {т, =l,i = 0,2,...,N -1, т, = 2,i = 1,3,...,N kt =1, j = 0,1,... ,N }. I f Iff J fj f f f J Задача 9.16 Решите задачу 9.14, считая, что {mt =1,i = 0,1,...,N -1, = l,j = 0,2,...,N, k = =2,j = \,3,...,N-1}. Задача 9.17 Решите задачу 9.14, считая, что система, состоит из осцилляторов различных масс (задавая массы, например, с помощью генератора слу- чайных чисел). Как влияет беспорядок на поведение системы и скорость распространения возмущения? Задача 9.18 Решите задачу 9.14, считая, что система состоит из осцилляторов с одинаковыми массами, соединенными пружинами различной жестко- сти (задавая значения коэффициентов жесткости, например, с по- мощью генератора случайных чисел). Как влияет беспорядок на поведе- ние системы и скорость распространения возмущения? 239
Компьютерное моделирование физических процессов в пакете МА TLAB 9.4. Моделирование волновых движений В предыдущем разделе мы обнаружили, что в системе из N связанных осцилляторов колебания отдельных тел приводят к распространению энер- гии вдоль цепочки на произвольные расстояния. Данный факт указывает на аналогию между колебанием цепочки связанных осцилляторов и волнами, распространяющимися в непрерывных средах. Для того, чтобы осуществить переход от колебаний дискретной цепочки осцилляторов массой т, связан- ных пружинками одинаковой жесткости к, длина которых в равновесном состоянии равна а, к волновому движению непрерывной среды, рассмот- рим уравнению движения z-ro тела —-----------(2zz-m,+1 —U;_p, i = 2,3,...N — 2, (9.24) dt m где и,- - смещение t-ro тела относительно положения равновесия. При N—><ю, а—>0 и постоянной длине цепочки, можно заменить в (9.24) н((г), где i - дискретная переменная на функцию м(х,г), где х - непрерывная переменная. Данная замена позволяет записать (9.24) в следующем виде: S2zz(x,t) ка2 1 г , х ~ , х , м ~ ----3— =------— [и(х + а,г)-2и(хд) + м(х-а,г)1. (9.25) дГ т а1 Разложив функцию и(х,г) в ряд Тэйлора в точках х±а , , х , . . ди а2 д2и u{x + a,t) = u(x,t)±a— -I-х- + ..., дх 2 дх2 и подставив в (9.25), получим d2u(x,t) _ ка2 д2и _ 2 ’ (9.26) dt т дх2 Вводя обозначения /л = т/а , Т = к/а (Т - натяжение, ju - линейная плот- ность массы), v2 = Т/ ц , запишем (9.26) в следующем виде: Уравнение (9.27) называется волновым уравнением. Непосредственной подстановкой в (9.27) легко убедиться в том, что любые функции вида f(x-vt),f(x + vf) являются его решениями. При этом на прямых, опреде- ляемых уравнениями х ± vt = const, решения уравнения остаются постоян- 240
9. Моделирование волновых явлений ными. Так как волновое уравнение (9.27) является линейным, решения вол- нового уравнения удовлетворяют принципу суперпозиции, т. е. любая функция вида N [/)(л - vt) + /,(х + у?)] (9.28) /=1 также является решением волнового уравнения (9.27). Следовательно, по- ведение волны произвольной формы можно описать, представляя ее в виде набора синусоидальных волн (ряда Фурье). Данный подход мы используем в дальнейшем для анализа движения волнового пакета в среде с дисперсией. Анализ особенностей решений волнового уравнения, следуя выбранному в нашей книге подходу, будем проводить численно. Для описания эволюции решений волнового уравнения в пакете MATLAB в качестве первого шага необходимо создать три файла: файл Wave.m, содержащий функцию, опи- сывающую решение волнового уравнения в момент времени t - 0; файл WaveP.m, содержащий функцию, описывающую волну, распространяю- щуюся в положительном направлении оси оХ; файл WaveN.m, содержащий функцию, описывающую волну, распространяющуюся в отрицательном на- правлении оси оХ. % листинг файла Wave.m function z=Wave(A,x) % функция, решение волнового уравнения в момент времени t = 0 z=A*exp(-x.A2/4); % листинг файла WaveP.m function z=WaveP(A,x,v,t) % функция, описывающая волну, распространяющуюся в % положительном направлении оси оХ z=W ave(A,x-v*t); % листинг файла WaveN.m function z=WaveN(A,x,v,t) % функция, описывающая волну, распространяющуюся в % отрицательном направлении оси оХ z=W ave( А,х+v*t); Затем для вычисления значений соответствующих функций и визуализа- ции решений волнового уравнения необходимо выполнить следующую последовательность команд: 241
Компьютерное моделирование физических процессов в пакете MATLAB » clear all; % задание пространственной сетки » xmin=-2*pi; » xmax=2*pi; » Nx=101; »i=l:Nx; » x(i)=xmin+(xmax-xmin)/(Nx-l)*(i-l); % задание временной сетки »tmin=0; »tmax=50; » v=0.05; » Nt=101; » j=l:Nt; »t(j)=tmin+(tmax-tmin)/(Nt-l)*(j-l); % вычисление значений функций, описывающих решение % волнового уравнения »fori=l:Nt for j=l:Nx Ml(ij)=WaveP(l,x(j),v,t(i)); M2(ij)=WaveN(l,x(j),v,t(i)); end; end; % визуализация решений волнового уравнения » figure(l);plot(x,Ml(l,:),x,Ml(40,:),'--',x,Ml(80, » figure(2);plot(x,М2(1,:),х,М2(40,х,М2(80, » [X,Y]=meshgrid(x,t); % задание двумерных матриц, используемых % для визуализации функций, % зависящих от двух переменных » figure(3);surf(X,Y,Ml);colormap gray » figure(4);surf(X,Y,M2);colormap gray » figure(5);contourf(Ml,15);colormap gray » figure(6);contourf(M2,15);colormap gray Результаты выполнения приведенной выше последовательности команд представлены на рисунках 9.12-9.17. 242
9. Моделирование волновых явлений Рис. 9.12. Функция up(x,t) в фиксированные моменты времени t=0, 40, 80 Рис. 9.13. Функция u„(x,t) в фиксированные моменты времени t=0, 40, 80 Рис. 9.14. Поверхность, описываемая функцией up(x,t) Рис. 9.15. Поверхность, описываемая функцией u„(x,t) 243
Компьютерное моделирование физических процессов в пакете MATLAB 1С 20 30 40 50 60 ?С 40 90 ’ 00 10 20 30 40 53 $0 70 ВО 90 100 Рис. 9.16. Карта линий уровня функции u^fx.t) Рис. 9.17. Карта линий уровня функции u„(x,t) Как видно из рис. 9.12-9.17 функции up(x,t), un(x,t) описывают волны, распространяющиеся, соответственно, в положительном и отрицательных направлениях оси оХ. (Такие волны называются бегущими.) Отметим, что форма данных волн во времени остается неизменной. Задача 9.19 Замените в описанном выше документе функцию ехр(х2/2) на функцию (171 Л „ cos----х . Проанализируйте поведение решении волнового уравнения \ Я. / для различных значений К. Рассмотрите решение волнового уравнения при 1 = 0 — функцию w(x,0). Чему равен период функции и(х,0), назы- ваемый длиной волны? Рассмотрите решение волнового уравнения при х = 0 - функцию и(0,1). Чему равен период функции u(O,t), называемый периодом волны? Убедись в том, что отношение периода функции w(x,0) к периоду функции и(О,г) равно скорости распространения вол- ны V. Получите этот же результат аналитически. Задача 9.20 Проанализируйте особенности распространения волны, описываемой функцией u(x,t) = 1 + sin(x-v/)+ - sin3(x- v/)+ -sin5(x- v/)) n L 3 5 (9.29) Какие значения длин волн и периодов представлены в (9.29)? 244
9. Моделирование волновых явлении Отметим, что наряду с длиной волны X и периодом волны Т в физике также часто используют величины: к- 2л( 2., называемую волновым вектором; f = \1Т, называемую частотой волны и со^2.:~Т — 27cjf. В данных обозначениях функция, описывающая гармоническую волну, за- писывается в виде u(xj)- Acos(kx-со г). (9.30) Используя (9.30), определите, какие волны (волновые числа и частоты волн) представлены в формуле (9.29). Задача 9.21 Проанализируйте особенности распространения волны u(x,r) = sin(x-v?) + sin(x + v/). Опишите получающуюся в результате волну. Задача 9.22 Рассмотрите случай двух гармонических волн одинаковой амплитуды, распространяющихся с одинаковой скоростью v = 1 в положительном направлении оси оХ, и имеющих разные частоты сщ= 1 и со2 =9.05. Опишите форму u(x,t) для различных времен t. Оцените скорость рас- пространения мелкомасштабных горбов амплитуды (фазовую ско- рость). Оцените скорость распространения низкочастотной огибаю- щей (групповую скорость). Сравните значения фазовой и групповой ско- ростей. 9.5. Фурье-анализ волновых пакетов, движущихся в среде с дисперсией Анализ выражения (9.30) показывает, что можно ввести фазовую функ- цию косиносоидальной бегущей волны, распространяющейся в положи- тельном направлении оси оХ, как аргумент волновой функции cos(ft> t - kx): ф(х,С) = cot -kx. (9.31) Если мы хотим следить за каким-либо гребнем волны (максимум cos^(x, ?)) или за ее впадиной (минимум cos^(x,/)), по мере увеличения времени переходить к все большим значениям х так, чтобы фаза ф(х,б) бы- ла постоянной. Условие постоянства фазы с математической точки зрения означает, что полный дифференциал функции ф(х, t), имеющий вид 245
Компьютерное моделирование физических процессов в пакете MATLAB dtp =[ — \dt + ( — \ix = <а dt -kdx, (9.32) \dtj \дх) равен нулю. Приравнивая (9.32) нулю, находим условие постоянства фазы: где Vf - фазовая скорость волны. Выражение (9.33) дает связь между фазовой скоростью волны, частотой волны и волновым вектором. Вообще говоря, условия распространения вол- ны определяются свойствами среды. При этом со, а, следовательно, и фазо- вая скорость, могут зависеть от волнового вектора к. Волны, у которых фа- зовая скорость зависит от волнового вектора, называются диспергирующи- ми. В противном случае волны называются недиспергирующими. Дисперги- рующая волна, представляющая собой суперпозицию бегущих волн с различными волновыми числами, будет менять свою форму по мере рас- пространения в пространстве, так как составляющие с различными длинами волн распространяются с различными скоростями. Продемонстрируем влияние дисперсии на распространение волн на при- мере задачи о движении волнового пакета в среде с дисперсией, под кото- рым мы будем понимать некоторую синусоидальную волну, имеющую ко- нечную протяженность в пространстве или во времени. Решение данной за- дачи основано на представлении волнового пакета в виде суперпозиции гармонических функций (метод Фурье) [6]. Рассмотрим задачу об описании движения волнового пакета, локализо- ванного в момент времени t = 0 в пространстве. Данное условие означает, что огибающая пакета является функцией, достаточно быстро стремящейся к нулю при х -> ±оо . Введем обозначение /(х) = и(х,0). (9.34) Условие «быстрого стремления функции к нулю» обеспечивает возмож- ность ее разложения в ряд Фурье. Если функция Дх) не периодическая функция по координате, то ее суперпозиция составляющих ее функций не- прерывна по переменной к, и выражается через интеграл Фурье сС Д(х) = jA(k)eikxdk, (9.35) -ОС где А(к) = j f(x)e~ikxdx . (9.36) 246
9. Моделирование волновых явлений Каждая гармоническая составляющая в (9.35) определяет собственную гармоническую волну с частотой а> = а)(к), т. е. каждая частотная состав- ляющая бегущей волны распространяется со своей собственной фазовой скоростью v -^1. (9.37) ' к Искомая функция и(х,г), описывающая бегущую волну, является супер- позицией гармонических бегущих волн, образующих начальное возмуще- ние. Это означает, что найти и(хд) можно заменой кх на (кх-со(к)Г) в ка- ждой гармонической составляющей суперпозиции (9.35): ОС и(х,г) = j A^Y^^dt. (9.38) -ОС Таким образом, алгоритм аналитического решения задачи достаточно прост. 1. Задать функцию Дх), описывающую начальное возмущение при t = 0. 2. Задать функцию а> = а)(к). 3. Определить функцию А(к), вычислив интеграл (9.36). 4. Определить функцию w(x,r), вычислив интеграл (9.37). Однако для того, чтобы использовать данный алгоритм при нахождении численных значений функции w(x,f), требуется его некоторая доработка, связанная прежде всего с тем, что вычисление интегралов в (9.36), (9.37), (9.38) приходится проводить на интервалах конечной длительности, т. е. проводить разложение функции не в интеграл, а в ряд Фурье. В данном слу- чае, как было показано в гл. 7, вместо (9.36), (9.37), (9.38), следует исполь- зовать следующие выражения: ЛГ-1 ? Дх) = eih'x , к =--------------- (9.39) „=0 Xmax xmin А(п)=------?---- \f(x)e~iknxdx,n = 0,\,...,N-1, (9.40) Хтах ~ xmin xmin u(x,t) = '£A(n)ei(,a,(x-x^)““tb')), (9.41) /1=0 где TV - число значений функции Дх). Для ускорения вычислений коэффициентов А(п') можно использовать БПФ. 247
Компьютерное моделирование физических процессов в пакете МА TLAB Таким образом, численное решение задачи о движении волнового пакета может быть найдено в соответствии со следующим алгоритмом. 1. Задать функцию Дх), описывающую начальное возмущение при t = 0. 2. Задать функцию а = а>(к). 3. Задать границы пространственного интервала, на котором ищется решение задачи. 4. Задать число узлов пространственной сетки. 5. Вычислить значения функции Дх) в узлах пространственной сетки. 6. Вычислить коэффициенты разложения функции Дх) в ряд Фурье. 7. Вычислить значения функции u(x,t) в заданный момент времени в со- ответствии с (9.41). Описанный выше алгоритм в пакете MATLAB реализуется следующей последовательностью действий: » clear all; » Nx=1024; % задание пространственной координатной сетки » j=l:Nx; » xmin=-10*pi; » xmax=60*pi; » x(j)=xmin+(xmax-xmin)/(Nx-l)*(j-l); » A=l; % амплитуда волнового пакета » k=0.5; % волновой вектора пакета » z=A*exp(i*k.*x).*exp(-(x/10).A2); % вычисление значений комплексной % функции,описывающей пакет % в момент времени t = 0 % визуализация волнового пакета » figure(l);plot(x,abs(z)) » figure(2);plot(x,real(z),x,imag(z),'—') % вычисление и визуализация спектра волнового пакета » s=fft(z); » m=2:200; » m=l:200;sl(m)=s(m+l); » figure(3) ;plot(2*pi*m/(xmax-xmin),abs(sl)) » k=2*pi/(xmax-xmin); % вычисление мгновенных значений решений % волнового уравнения в момент времени t = 50 »tl=50; » for j=l:Nx 248
9. Моделирование волновых явлений su=O; for n= I :Nx su=su+s(n)/Nx*exp(i*(k*n*(x(j)-xmin)-Omega(k.*n)*tl)); end; psi(j)=su; end; % вычисление мгновенных значений решений % волнового уравнения в момент времени t = 90 »tl=90; »for j=l:Nx su=0; for n=l:Nx su=su+s(n)/Nx*exp(i*(k*n*(x(j)-xmin)-Omega(k.*n)*tl)); end; psil(j)=su; end; % визуализация огибающей волнового пакета % в момент времени t = 0,50,90 »figure(4);plot(x,abs(z),x,abs(psi),x,abs(psil)); Результаты выполнения приведенных выше команд представлены на рис. 9.18-9.21. Рис. 9.18. Мнимая и действительная часть начального возмущения 249
Компьютерное моделирование физических процессов в пакете МА TLAB Рис. 9.19 Огибающая волнового пакета в момент времени I = О 200 Рис. 9.20. Спектр функцииf Рис. 9.21. Огибающие волнового пакета в моменты времени t=0,50,90 250
9. Моделирование волновых явлений Анализ результатов, представленных на рис. 9.18-9.21, показывает, что волновой пакет локализован на отрезке [-20,20]. Анализ спектра, представ- ленного на рис. 9.20. показывает, что в момент времени t = 0 пакет пред- ставляет собой суперпозицию синусоидальных волн, волновые числа кото- рых находятся в диапазоне [0;1]. Спектр имеет максимальное значение при кт — 0.5 , ширина спектра Ак а 1. В процессе движения меняется форма волнового пакета: происходит уменьшение высоты огибающей пакета при одновременном увеличении его ширины (расплывание волнового пакета в пространстве). Изменение формы волнового пакета происходит в соответ- ствии с законом сохранения энергии N 2^и(г,-,лп)2 = const. (9.42) л=0 Задача 9.23 1. Оцените фазовую скорость гармоники с волновым числом, равным кт. 2. Оцените фазовые скорости гармоник v?, волновые векторы к] 2 кото- рых удовлетворяют условиям 2)| = 0.5|S(A:m)j, 2) = 0.1|S(/cm) . Оцените разброс фазовых скоростей в каждом из рассматриваемых случаях. 3. Оцените групповую скорость движения пакета Vр (скорость движения его огибающей). Сравните данную величину с ее точным значением, по- лученным по известной формуле [5], _da>(k) р dk (9.43) к=кт 4. Оцените групповые скорости гармоник v ? , волновые векторы k{ 2 которых удовлетворяют условиям |s(^1>2 ) = 0.5|S(£,n) , \S(kl >2)| = 0.1[5(/:т)|. Оцените разброс групповых скоростей в каждом из рассматриваемых случаях. Задача 9.24 Дополните описанный выше документ фрагментом, позволяющим вы- числять мгновенные значения энергии волнового пакета, и проверьте выполнение закона сохранения энергии для пакета, локализованного при t-О в пространстве. 251
Компьютерное моделирование физических процессов в пакете MATLAB Задача 9.25 Дополните описанный выше документ фрагментом, позволяющим опре- делять ширину волнового пакета Ли при заданном значении его оги- бающей. 1. Используя описанный выше документ, оцените закон изменения ширины волнового пакета во времени (Ли/. 2. Сравните полученный результат с известной оценочной формулой, при- веденной в [5]. (Аи); = (Ди)0 + Avp/, (9.44) где (Аи)0 - ширина пакета при t = 0, Ли р - разброс групповых скоростей, (9.45) 3. Убедитесь в справедливости принципа неопределенности для волновых пакетов ЛЦЛи)' > 2я. (9.46) Задача 9.26 Решите задачи 9.24-9.26 для волновых пакетов с прямоугольной и тре- угольными формами огибающей. Задача 9.27 Задайте начальное возмущение в виде двух прямоугольных импульсов шириной Лх, разнесенных в пространстве на расстояние ЛХ . Опреде- лите, через какое время (время перекрывания импульсов) разрешение данных импульсов окажется невозможным. Рассмотрите случаи: Лх > ЛХ и Лх< ЛХ . Как зависит данный результат от значения к ? Рассмотрим другую постановку задачи о движении волнового пакета. Предположим, что передатчик, расположенный в точке х = 0, действует на непрерывную одномерную однородную открытую систему таким образом, что функция, описывающая бегущую волну в точке х - 0, имеет известную зависимость от времени/(f): /(г) = и(О,г). (9.47) При этом будем считать, что волновой пакет локализован во времени, т. е. огибающая пакета является функций достаточно быстро стремящейся к нулю при t —> се, Сделанное предположение позволяет представить функ- цию/(f) в виде интеграла Фурье: 252
9. Моделирование волновых явлений /(?) = (9.48) о где A(co) = ^flfi)e'io*dt. (9.49) о Каждая гармоника, как и в рассмотренном выше случае, определяет соб- ственную гармоническую бегущую волну с волновым числом к, значение которого определяется из дисперсионного соотношения к=к(со). (9.50) Здесь каждая частотная составляющая бегущей волны распространяется с фазовой скоростью (9.51) Искомая функция u(x,t), описывающая бегущую волну, является суперпозицией данных гармонических бегущих волн. Это означает, что найти и(л,г) можно заменой cot на (afik'fi-kx) в каждой гармонической составляющей суперпозиции (9.48). и(х,г) = j А(щ) e^-^Uco . (9.52) о Таким образом, алгоритм аналитического решения задачи, как и в пре- дыдущем случае, достаточно прост: 1. Задать функцию fit), описывающую начальное возмущение при х = 0. 2. Задать функцию к = к(со). 3. Определить функцию А(щ), вычислив интеграл (9.49). 4. Определить функцию u(x,t), вычислив интеграл (9.52). Однако для того, чтобы использовать данный алгоритм при нахождении численных значений функции и(х,/), требуется его некоторая доработка, связанная прежде всего с тем, что вычисление интегралов в (9.48), (9.49), (9.52) приходится проводить на временных интервалах конечной длитель- ности Т, т. е. проводить разложение функции не в интеграл, а в ряд Фурье. В данном случае, как было показано в гл. 7, вместо (9.48), (9.49), (9.52), необ- ходимо использовать следующие выражения: 253
Компьютерное моделирование физических процессов в пакете MATL AB N-l fit) = "^Ain} elC2^T)fl! , (9.53) /1=0 т A(n) = - Т J f(t) e-'^!T'}mdt, п = 0,1,... Л -1, (9.54) о М(х,г) = ^А(п)е'[(2-т/г)'"^((2?г/п',)л] , (9.55) /1=0 где N - число значений функцииДх). Для ускорения вычислений коэффициентов А(п) можно использовать БПФ. Таким образом численное решение задачи о движении волнового пакета может быть найдено в соответствии со следующим алгоритмом. 1. Задать функцию fit), описывающую начальное возмущение при t = 0. 2. Задать функцию к = к(а>). (Отметим, что при невозможности анали- тического обращения дисперсионного соотношения со = а>[к), следует для каждого заданного значения частоты cos =1tr s/T,s = ),...N соответствую- щее значение волнового числа находить численно, как корень уравнения cos = а)(к).) 3. Задать границы временного интервала, на котором ищется решение задачи. 4. Задать число узлов временной сетки. 5. Вычислить значения функции fit) в узлах временной сетки. 6. Вычислить коэффициенты разложения функции fit) в ряд Фурье. 7. Вычислить значения функции u(x,t) в заданный момент времени в со- ответствии с (9.55). Данный алгоритм для волнового пакета с дисперсионном соотношением вида<а(£) = к + а к2 реализуется следующей последовательностью действий: 1) создать файл К.т, содержащий описание функции к = к(со): % листинг файла К.т function z=K(Omega,Nu,alpha) % описание функции к = fc(&>) if alpha==0 z=Omega/Nu; else 254
9. Моделирование волновых явлений z=-l/(2*alpha)+((l/2*alpha).A2+Omega./(alpha*Nu))A0.5; end; 2) выполнить следующую последовательность команд: » clear all % задание временной сетки »tmin=0; »tmax=300; » Nt=1024; » j=l:Nt; »t(j)=tmin+(tmax-tmin)/(Nt-l)*(j-l); % вычисление и визуализация значений функции, описывающей % волновой пакет в момент времени t = О » Omega=0.7; » А=1; » z=A*exp(i*Omega*t).*exp(-((t-40)/10).A2); » figure(l );plot(t,real(z),t,imag(z)) % вычисление и визуализация спектра начального возмущения » s=fft(z); »j=l:200; » sl(j)=s(j+l); » freq=2*pi/(tmax-tmin)*j; » figure(2);plot(freq,sl) » v=l; % скорость движения пакета » alpha=0.5; % коэффициент, входящий в дисперсионное соотношение % вычисление значений функций, описывающих волновой пакет % в выбранных точках пространства, и их визуализация » omega=2*pi/(tmax-tmin); »х=50; » for j=l:Nt su=0; for n=l:Nt su=su+s(n)/Nt*exp(-i*(K(omega*n,v,alpha)*x-... omega*n*t(j))); end; psi(j)=su; end; » x=150; » for j=l:Nt su=0; 255
Компьютерное моделирование физических процессов в пакете MATLAB for n=l:Nt su=su+s(n)/Nt*exp(-i*(K(omega*n,v,alpha)*x-... omega*n*t(j))); end; psil(j)=su; end; » plot(t,abs(z),t,abs(psi),t,abs(psil)); Результат выполнения описанной выше последовательности команд представлен на рис. 9.22-9.25. Рис. 9.22. Мнимая и действительная части начального возмущения Рис. 9.23. Огибающая начального возмущения 256
9. Моделирование волновых явлений Анализ результатов, представленных на рис. 9.22, 9.23, показывает, что волновой пакет локализован на отрезке [20,60]. Анализ спектра, представ- ленного на рис. 9.24, показывает, что в точке х = 0, пакет представляет со- бой суперпозицию синусоидальных волн, частоты которых находятся в диапазоне [0.3;9.1]. Спектр имеет максимальное значение при ширина спектра &со «0.8 . В процессе движения меняется форма волнового пакета: происходит уменьшение высоты огибающей пакета при одновре- менном увеличении его ширины (расползание волнового пакета в простран- стве). Изменение формы волнового пакета происходит в соответствие с за- коном сохранения энергии (9.53). 70 60 50 40 30 20 10 о Рис. 9.24. Спектр функции, описывающей начальное возмущение Рис. 9.25. Огибающие волнового пакета в точках х~0,50,150 9—1576 257
Компьютерное моделирование физических процессов в пакете МА TLAB Задача 9.28 1. Оцените фазовую скорость гармоники с частотой, равной сот . 2. Оцените фазовые скорости гармоник v? , волновые векторы kl 2 кото- рых удовлетворяют условиям 2 )=0.5|5K)l, |ф112) = 0.1j5K)j. Оцените разброс фазовых скоростей в каждом из рассматриваемых случаях. 3. Оцените групповую скорость движения пакета vу (скорость движения его огибающей). Сравните данную величину с ее точным значением, по- лученным по известной формуле [5], dco(k} vp~------------------------------ (9.56) dk k=k(a>m) 4. Оцените групповые скорости гармоник v? , частоты которых а>12 удовлетворяют условиям 2) =0.5|S(cam Оцените разброс групповых скоростей в каждом из рассматриваемых случаях. Задача 9.29 Дополните описанный выше документ фрагментом, позволяющим вы- числять мгновенные значения энергии волнового пакета, и проверьте выполнение закона сохранения энергии для пакета, локализованного в точке х = 0 во времени. Задача 9.30 Дополните описанный выше документ фрагментом, позволяющим опре- делять ширину волнового пакета \и при заданном значении его оги- бающей. 1. Используя описанный выше документ, оцените закон изменения ширины волнового пакета во времени (Ди),. 2. Сравните полученный результат с известной оценочной формулой, при- веденной в [5], (Аи), = (Ди)0 + \cot, (9.57) где (Дг)0 -ширина пакета при t - О, Д&> - ширина спектра пакета. 3. Убедитесь в справедливости принципа неопределенности для волновых пакетов &(ДДи\ > 2я . (9.58) 258
9. Моделирование волновых явлений Задача 9.31 Решите задачи 9.28—9.30 для волновых пакетов с прямоугольной и тре- угольными формами огибающей. Задача 9.32 Антенна, находящаяся в точке х = 0, излучает два прямоугольных им- пульса шириной ДТ , разнесенных во времени на интервал АТ0. Опреде- лите, на каком удалении от антенны разделение данных импульсов окажется невозможным. Рассмотрите случаи: КГ > АТ0 и КГ < КГ0. Как зависит время перекрывания импульсов от значения а>т ? Задача 9.33 Модифицируйте описанный выше документ, дополнив его фрагментом, позволяющим вычислять значения волновых чисел, для пакетов с произ- вольным законом дисперсии. Используя модифицированный документ, опишите распространение волн на поверхности глубокой воды (длина волны много меньше слоя воды), имеющих следующее дисперсионное со- отношение co-gk+ — k3, (9.59) Р где g = 980 см/с, р ~ 1,0 г/см3, Т ~72 дин/см (коэффициент поверхност- ного натяжения). 1. Постройте графики зависимостей фазовой и групповой скорости движения волны от длины волны. При какой длине волны эти скорости равны? 2. Исследуйте движения волновых пакетов, распространяющихся по по- верхности глубокой воды, аналогично тому, как это было сделано в дан- ном разделе выше. (Указание. Корни уравнения (9.59) в пакете MATLAB можно найти сле- дующей последовательностью действий: 1. Создать файл dispw.m, содержащий описание функции f{co,k) = а> - gk + -к3 Р % листинг файла dispw.m function z=dispw(k) % описание функции f(ca,k} global omega g T го z=omega-g*k+T/ro*kA3; 259
Компьютерное моделирование физических процессов в пакете MATLAB 2. Выполнить следующую последовательность команд. » global omega g Т го; » g=980; » Т=72; » го=1; » omega=1000; » fzero('dispw',0) ans = 1.1250 Здесь для нахождения корня уравнения мы использовали функцию fze- ros, обращение к которой может быть выполнено несколькими способами: 1. Ггего('имя_файла',началы1ое_приближение) 2.1гего('имя_файла',[х1 х2]) (здесь xl, х2 - начальная и конечная точки интервала, на котором ищется решение уравнения, выбираемые из условия /(х1)-/(х2)<0) 3.1гего('имя_файла',начальное_приближениеДо1) £гего('имя_файла',[х1 x2],tol) (здесь tol - погрешность вычисления корня уравнения) 4. options = optimset('Display','iter'); а = 1гего(('имя_файла',начальное_приближение,options) а = Ггего('имя_файла',[х1 х2],options) (вывод на экран значений корня уравнения на каждом шаге итерационного процесса) 9.6. Интерференция и дифракция Под явлением интерференции понимают сложение волн, приходящих по отдельности от одного и того же точечного источника, либо волн, испу- щенных двумя точечными источниками и имеющих одинаковую частоту и постоянную разность фаз. Классическим примером интерференции свето- вых волн является опыт Юнга с двойной щелью, схема которого представ- лена на рис. 9.26. Источник света S, излучающий свет только одной частоты (монохроматический источник), помещен на одинаковом расстоянии от двух одинаковых отверстий, имеющих координаты (0,0,—<Z/2), (0,0,<//2) соот- ветственно. При этом размеры отверстий таковы, что их можно считать то- чечными источниками света, излучающими волны с одинаковой частотой и фазой (когерентные источники). На расстоянии L от точки с координатами (0,0,0) расположен экран, на котором наблюдается распределение интен- 260
9. Моделирование волновых явлений сивности волны, являющейся результатом интерференции волн, излученных когерентными точечными источниками. Для ответа на вопрос, какая картина будет наблюдаться на экране, полу- чим выражение, описывающее распределение интенсивности света от двух точечных источников. Электромагнитная волна, излучаемая монохромати- ческим источником света, является сферической волной. Напряженность электрического поля E(r,t), в точке, удаленной от источника на расстояние г определяется следующим выражением E(r,t) = —cos(кг-со t + ф), (9.60) г где А - амплитуда волны, ф - начальная фаза волны, которую далее для ко- герентных источников будем полагать равной нулю. Множитель 1/г отражает тот факт, что интенсивность света убывает с увеличением расстояния между источником и точкой наблюдения. Из принципа суперпозиции известно, что полное электрическое поле, созда- ваемое двумя источниками в точке Р, равно E(t) = Et+E2 = —cos(bj -cot) + -—cos(kr2 -cot). (9.61) ri r2 Напряженность электрического поля в точке Р, создаваемого N источни- ками света, положение которых в пространстве относительно системы ко- ординат XoY задано их радиусами-векторами Rt,i = 0,\,N-1, определяется по формуле ДМ , X E(r,f) = -------cosf —|r -#,-(У? |, (9.62) где г - радиус-вектор точки наблюдения. 261
Компьютерное моделирование физических процессов в пакете MATLAB Наблюдаемая интенсивность волны I в точке Р 1={Е2), (9.63) где ( ) означает усреднение по времени: т (е2) = -|е(г,г)2Л. (9.64) о Для вычисления среднего оказывается удобным преобразовать (9.63) следующим образом поскольку в соответствии с (9.60) Е = E(r,a>t) - E^r,~f t можно ввести безразмерную переменную £ = гП и записать интеграл (9.64) в следующем виде 1 1 (N~x О 0 V 1=0 1 1 cos Вычисление интеграла в (9.64) для произвольного количества источни- ков не встречает принципиальных трудностей, однако получающиеся в ре- зультате выражения оказываются весьма громоздкими и для их анализа приходится использовать ПК. В этих условиях представляется оправданным проводить вычисления интенсивности в соответствии с (9.65) сразу в чис- ленном виде. Алгоритм решения данной задачи достаточно очевиден. 1. Задать функцию, описывающую интенсивность световой волны, в со- ответствии с(9.65) 2. Задать количество источников света и длину излучаемой световой волны. 3. Задать расположение источников света (набор векторов Rti = 0,1, N -1). 4. Задать пространственную сетку, в узлах которой производится вычис- ление интенсивности световой волны. 5. Вычислить значения интенсивности в узлах пространственной сетки. Реализация описанного алгоритма осуществляется в пакете MATLAB следующей последовательностью действий: 1) создание файла Intensity.ш, содержащего описание функции, возвра- щающей значение интенсивности в заданной точке пространства в соответ- ствии с (9.65) % листинг файла Intensity.m function E=Intensity(Lambda,N,A,RO,r) % описание функции, возвращающей значение интенсивности 262
9. Моделирование волновых явлений % в заданной точке пространства в соответствии с (9.66) % аргументы функции: % Lambda - длина волны % N - число источников % А - вектор, содержащий значения интенсивностей источников света % R0 - матрица, столбцы которой содержат координаты источников света % г - вектор-столбец, содержащий координаты точки наблюдения su=0; ksi=0:10A-3:l; % задание сетки для вычисления интеграла в (9.67) Ni=length(ksi); % число узлов сетки % вычисление значений подынтегральной функции в (9.56) for i=l:Ni su=0; for j=l:N Rr=dot(r-R0(: j),r-R0(: j))A 0.5; su=su+A(j)/Rr*cos(2*pi/Lambda*Rr-2*pi*ksi(i)); end; f(i)=su.A2; end; E=trapz(ksi,f); % вычисление интеграла в (9.65) методом трапеций 2) выполнение следующей последовательности команд: » N=2; % число источников света % задание параметров и координат источников света »А(1)=1; » А(2)=1; » Lambda=5000*10A-7; » R0=[0 0 -0.1]; » Rl=[0 0 0.1]; » R=cat(2,R0',Rl') ; % создание матрицы, столбцы которой % содержат координаты источников света % задание сетки для вычисления распределения интенсивности % световой волны » Np=200; »i=l:Np; » zmin=-5; » zmax=5; »z(j)=zmin+(zmax-zmin)/(Np-l)*(j-l); » L=200; 263
Компьютерное моделирование физических процессов в пакете MATLAB % вычисление и визуализация интенсивности световой волны на отрезке % х - 0, у = L, ze[zmin,zmax] » for i=l:Np r=[0 L z(i)]'; I(i)=Intensity(Lambda, A,N,R,r); end; » plot(z,I/Imax); Результаты выполнения описанной выше последовательности команд представлены на рис. 9.27. Рис. 9.27. Распределение световой волны на отрезке х = 0,y = L, zg [zmm,zmax] Как показывает практика работы с данным документом, на вычисление интеграла (9.65) даже вдоль одной прямой пакету MATLAB требуется дос- таточно большое количество времени, которое, как очевидно, будет в Np раз больше при анализе распределения интенсивности на плоскости у = L. Можно устранить отмеченный недостаток, если вместо вычисления инте- грала (9.65), проводить усреднение напряженности суммарного электриче- ского поля по конечному числу точек интервала [0,1]. Функция, реализую- щая данное усреднение, имеет следующий вид: Е1(Л, А, А, R0, г, Nb) = —•... Nb + 1 Nh A I - ----- cos |г-Я0,| 1 2-ТГ Nb + \ (9.66) 264
9. Моделирование волновых явлений здесь Л - длина волны, А - амплитуда волны, N - количество источников света, R0 - составной массив, содержащий радиусы-векторы источников света, г - радиус-вектор точки наблюдения, Nb - число точек усреднения. Для реализации вычислений в соответствии с (9.66) необходимо создать файл, названный нами Intensityl.m, содержащий описание соответствую- щей функции. % листинг файла Intensity 1 .m function E=Intensityl(Lambda,A,N,RO,r,Nb) % описание функции, возвращающей значение интенсивности % в заданной точке пространства в соответствии с (9.66) % аргументы функции: % Lambda - длина волны % N - число источников % А - вектор, содержащий значения интенсивностей источников света % R0 - матрица, столбцы которой содержат коорд. источников света % г - вектор-столбец, содержащий координаты точки наблюдения % Nb - число точек усреднения su=0; % вычисление значений подынтегральной функции в (9.65) for i=l:Nb su=0; for j=l:N Rr=dot(r-R0(:j),r-R0(:j))A0.5; su=su+A(j)/Rr*cos(2*pi/Lambda*Rr-2*pi/Nb*i); end; f(i)=su.A2; end; E=mean(f); % усреднение значений подынтегральной функции % в соответствии с (9.66) Для вычисления распределения интенсивности в соответствие с (9.66) необходимо выполнить следующую последовательность команд: » N=2; % число источников света % задание параметров и координат источников света »А(1)=1; » А(2)=1; » Lambda=5000*10A-7; » R0=[0 0 -0.1]; » Rl=fO 0 0.1]; 265
Компьютерное моделирование физических процессов в пакете MATLAB » R=cat(2,R0',Rl' ); % создание матрицы, столбцы которой содержат % координаты источников света % задание сетки для вычисления распределения интенсивности световой % волны » Np=200; »i=l:Np; » j=l:Np; » L=200; » zmin=-5; » zmax=5; » z(j)=zmin+(zmax-zmin)/(Np-l)*(j-l); » Nb=3; % число точек усреднения % вычисление интенсивности световой волны на отрезке % х = 0, у = L, ze[zmin,zmax] » for i=l:Np r=[0 Lz(i)]’; Il(i)=Intensityl(Lambda,A,N,R,r,Nb); end; Анализ разности между значениями распределений интенсивностей I, II, вычисленными на отрезке х = 0, у = L, z e[zmin, zmax] (рис. 9.28), показыва- ет, что уже при усреднении по трем точкам абсолютное значение разности не превосходит 1-1O'10, поэтому далее при решении задач следует использо- вать функцию Intensity 1. Рис. 9,28. Абсолютное значение разности между значениями распределений интенсивностей I, 11, вычисленными на отрезке х = 0, у = L, -е[-тт, zmax] 266
9. Моделирование волновых явлений Для анализа пространственного распределения интенсивности необхо- димо выполнить следующую последовательность команд: % задание пространственной сетки » Np=200; % число узлов »i=l:Np; » xmin=-5; » xmax=5; » x(i)=xmin+(xmax-xmin)/(Np-l)*(i-l); »i=l:Np; » zmin=-5; » zmax=5; » z(i)=zmin+(zmax=zmin)/(Np-l)*(i-l); » L=200; % вычисление и визуализация распределения интенсивности % в соответствии с (9.66) » for i=l:Np for j=l:Np r=[x(j)Lz(i)]'; Il(ij)=Intensityl(Lambda,A,N,R,r,3); end; end; » plot(z,Il(:,20)/max(Il(:,20))) % распределение интенсивности % на отрезке х=-4.0452, y=L, ze[-5,5] » plot(z,11(20,:)/max(Il(20,:))) % распределение интенсивности % на отрезке хе[-5,5], z=-4.0452, y=L » contourf(X,Z,Il) » colormap gray » xlabel('x'); » ylabel('z') Результаты выполнения описанной последовательности команд пред- ставлены на рис. 9.29-9.31. 267
Компьютерное моделирование физических процессов в пакете МА TLAB 1 ooos Рис. 9.29. Распределение интенсивности на отрезке х=-4.0452, y~L, ze[-5,5] 0 9995 0 999 0.9985 0 998 0.9975 0.997 0 9985 Рис. 9.30. Распределение интенсивности на отрезке хеф5,5], z=-4.0452, y=L Рис. 9.31. Распределение интенсивности волны в плоскости y-L 268
9. Моделирование волновых явлений Задача 9.34 1. Используя описанный выше документ, проверьте, что координаты ми- нимумов интенсивности волны для выбранных геометрических размеров системы в плоскости у - L находятся из условия , (9.67) Я 2 где sin 0 ~ . L 2. Получите выражение (9.67) аналитически, проинтегрировав (9.65). 3. Исследуйте, как меняется положение первого минимума при изменении Я в диапазоне [4-10'4;6-10'4] мм. 4. Зафиксируйте значение Я и проваръируйте L от 1 до 300 мм. Как зави- сит положение максимума интенсивности от L при L»(xmax-xmin), (Утах~~Уmin) ’• Задача 9.35 Проанализируйте распределение интенсивности в плоскости у =L, для слу- чаев когда число щелей N = 3,4,...,20, считая, что A^S-IO4 мм, L=200 мм, d = 0.09. (Данная модель является моделью дифракционной решетки.) 1. Постройте зависимость максимального значения интенсивности от числа щелей N. 2. Как зависит расстояние между пиками от числа щелей? 3. Проваръируйте L от I до 300 мм. Как зависит положение максимума интенсивности от L при L»(xmax-xmin),( утах-ymin)? Задача 9.36 На практике ширина реальных щелей гораздо больше длины волны, по- этому более адекватной является модель, в которой щель рассматри- вается как набор когерентных источников сферических волн (принцип Гюйгенса). I. Рассчитайте распределение интенсивности света с длиной волны Я = 5 -10'4 мм от одной щели конечного размера, заменяя его N - 20 то- чечными источниками, отстоящими друг от друга на 0.001 мм. Опреде- лите ширину центрального пика интенсивности при L = 200 мм. Как соотносится ширина центрального пика с шириной щели? Как зависят полученные результаты от числа источников N? 2. Как зависит положение первого минимума дифракционной картины от длины волны, ширины щели и расстояния до экрана. 3. Проведите сравнительный анализ распределений интенсивности для L - 1 мм и L = 50 мм. 269
Компьютерное моделирование физических процессов в пакете MATLAB Задача 9.37 Исследуйте распределение интенсивности света при интерференции на системе двух щелей, используя модель щели конечной ширины. Для этого замените каждую из щелей 20 точечными источниками, отстоящими друг от друга на 0.0001 мм, расстояния между серединами щечей задайте рав- ными 0.1 мм. Как соотносится распределение интенсивности в данной мо- дели с аналогичными распределениями для двух точечных щелей? Как зави- сит распределение интенсивности от длины волны? Задача 9.38 Подход, использованный в задачах 9.36, 9.37, может быть применен для вычисления распределения интенсивностей волн, прошедших через от- верстия конечной ширины и высоты (дифракция). Для этого следует представить соответствующее отверстие как набор N когерентных источников сферических волн, равномерно распределенных по плоскости отверстия. Рассчитайте распределение интенсивности для прямо- угольного отверстия размером 1x3 мм, освещаемого светом длиной волны 2=5-10'4 мм. Сравните распределение интенсивностей для раз- личных значений Le[3,200] мм, определив предварительно для каждого L минимальные значения N, начиная с которых распределение интенсив- ности не зависит от числа источников. Постройте зависимость числа N от расстояния L. Рис. 9.32. К расчету интерференционной картины от протяженного источника Рассмотрим влияние размеров источника когерентного излучения на распределение интенсивности при интерференции на системе двух точеч- ных щелей (рис. 9.32). Предваряя численные расчеты, проведем качествен- ную оценку, позволяющую ввести величину, определяющую распределение интенсивности света в плоскости у = L. Заменим протяженный источник света двумя точечными источниками, расположенными соответственно в точках (0,-Ls,as/2), (0,-Ls,-aj2), и найдем распределение интенсивно- сти света в плоскости y-L. В соответствии с принципом Гюйгенса напря- 270
9. Моделирование волновых явлений женность поля электромагнитной волны в точке с координатами (О, L, z) есть сумма 4 волн: 1) волны, излученной источником, расположенным в точке (0,-L5,as/2), и прошедшей через отверстие S); 2) волны, излученной источником, расположенным в точке (0,-Lv,as/2), и прошедшей через от- верстие S2, 3) волны, излученной источником, расположенным в точке (O,-Ls,-as /2), и прошедшей через отверстие $]; 4) волны, излученной ис- точником, расположенным в точке (0,-Ls,-a(/2), и прошедшей через от- верстие S2. При этом фазы интерферирующих волн оказываются различны- ми, поэтому для нахождения напряженности суммарного поля следует учи- тывать начальную фазу, которую ранее для когерентного источника мы положили равной нулю (см. формулы (9.60), (9.64)). Обозначим начальные фазы этих волн <Дц, ^2, 0гь <Р12 соответственно. Как очевидно из рис. 9.32, значения начальных фаз, зависящие от геометрических размеров рассмат- риваемой системы, определяются следующими выражениями z , у > (9.68) , \2 (9.69) 2 2 ) s С учетом начальных фаз интерферирующих волн выражение для напря- женности поля в точке (0, L, z) + (9.70) Используя известные тригонометрические формулы , 1 (а + Ь\ (а-Ь cos а + cos b = — cos - cos ---- 2 \ 2 ) V 2 'Pl 2 - ^21 ~ E(f,t) = — cosl 2л, , — irJ-tyf + ^21 Л / АГ (2л, , \ ( 2л. , — cos —-|Г2|-щ/ + р12 +cos — \r2\-<ot + <p22 Г, \Л ) \ Л приводим (9.70) к виду ч А Г (2.Л. , ^11+^21^ Г^ц-^21') E(r,t)- — cos —|Г] -a>t + -—— cos —---------— + l^il L \ Я 2 ) \ 2 )_ A- Гcosf- Г71 - Щ t + + ^2 W M . id U ' 2 ) I 2 JJ (9.71) 271
Компьютерное моделирование физических процессов в пакете МА TLAB Полагая, что d, а, << L,, из (9.68), (9.69) найдем, что ^11 ~ <°21 _ ^12 ~^22 _ П das 2Л, cot Н-- Л (9.72) (9.73) 2 2 2 29.L, Подставив (9.72) в (9.71), окончательно получим ч Г (2л , 2лЬ 3 А (2л. Е(Т,t)= —cos —Т, ~(ot+------------й-----cos — i _ nl < Л Л ) \r2\ ( z ( л da А cos------- . V 2aLs J Из (9.73) видно, что напряженность электрического поля волны двух разнесенных когерентных источников отличается от напряженности элек- ( л da, А трического поля точечного источника множителем cos-------------- , поэтому \ 22.7.^. j условие, при котором отличия распределений данных интенсивностей неве- лико, можно записать в виде л das < л ~2ЛЬ^~2' Выражение (9.74) устанавливает связь между угловым размером источ- ника 0S = a jLs и угловым размером области волнового фронта 0соЛ, в ко- торой излучение протяженного источника когерентно [7]: (9.74) (9-75) Задача 9.39 Проведите в опыте Юнга численные исследования распределения ин- тенсивности волны, создаваемой протяженным источником когерент- ного излучения, представив его в виде набора N точечных источников, положение которых задается набором радиус-векторов Rsj, । = 0,1,... N -1. Подтверждают ли результаты моделирования оцен- ку размера области (9.74)? (Указание. Фазы волн (pQi, (p}j, излучаемые каждым точечным источником соответственно в точках S, и S2, опре- деляются выражением 9 7Г <Pmi = ~. \Rm -Rs(,i = Q3,...N-l,m = 0,l, Л 272
9. Моделирование волновых явлений напряженность электрического поля волны: 1 А О лА Е(г,г) = УУ -• -cost -a>t + <p .) 11 F — Л? I I Л 1 ) m=0Z=0vlr Kmi VA -/ 9.7. Геометрическая оптика В общем случае для описания процесса распространения волн необхо- димо решить волновое уравнение, являющееся дифференциальным уравне- нием в частных производных, с заданными начальными и граничными ус- ловиями. Методы ее решения, изучаемые в специальном разделе математи- ки, который называется «уравнения математической физики», в большин- стве случаев оказываются весьма сложными. Однако существует важный частный случай, когда длина волны много меньше всех характерных разме- ров системы. В этом случае оказывается возможным использовать модель, в которой волна распространяется аналогично движению пучка частиц, движущихся по определенным траекториям - лучам, поэтому данное при- ближение получило название геометрической оптики. Распространение све- товых лучей подчиняется принципу Ферма (принцип наименьшего време- ни): луч света идет между двумя точками по такому пути, который требует наименьшего времени. Применим принцип Ферма к задаче преломления, в которой свет падает на поверхность раздела двух сред, в которых скорость света различна (рис. 9.33). Принято выражать скорость света в среде v через скорость света в ва- кууме с и показатель преломления среды п v = - . (9.76) п Время прохождения света из т. Авт. В, как видно из рис. 9.33, равно t = ^2+^2 + , (9.77) V1 V2 где vt = c/n,, v2 = dn2 . 273
Компьютерное моделирование физических процессов в пакете МА TLAB В соответствии с принципом Ферма dt/dx = 0, поэтому Д_____х_____1_ L — x_____ vi4a2+x2 v2 y[b2 + (L-x)2 (9.78) Так как х/-J~a2 + х2 =sina, (L-x'}/-]b2 +(L-x)2 = sin/?, то (9.78) мож- но записать в следующем виде (закон Снелла): Л] sin а = п2 sin/7 . (9.79) Рассмотрим задачу о распространении луча в среде неоднородным коэффициен- том преломления. Будем считать, что луч падает на прозрачную среду с коэффици- ентом преломления л, зависящим от у (л = п(у)), под малым углом к нормали в точке у = 0 (рис. 9.34). Для нахождения уравнения, описывающего форму луча, рассмотрим луч света, проходящий через несколько плоскопараллельных пластинок с различными коэффициентами преломле- ния (рис. 9.35). В соответствии с законом Снелла (9.79) л0 sin а = Л] sin Д = л2 sin Д2 = и3 sin Д3 =... (9.80) Так как соотношение (9.79) не зависит от числа и ширины отдель- ных слоев, оно будет справедливо и при непрерывном изменении коэф- фициента преломления в направле- нии оси о У: n(y)sin/?(у) = nosina, (9.81) где Д(у) - угол между направлени- ем луча и осью oY (рис. 9.36). Как видно из рис. 9.36, tga(y) = ctg/?(y) = dy/dx , поэтому sin/?(v)- 1 1 (9.82) л/1+ctg2/?(y) ^l + (dy/dx) 274
9. Моделирование волновых явлений Рис. 9.36. К получению уравнения, описывающего распространение луча в неоднородной среде Подставляя (9.81) в (9.82) и учитывая, что а = л/2 , приводим (9.82) к виду J1+ (dy/dx)2 Решив (9.83) относительно dy/dx, получим дифференциальное уравне- ние первого порядка с разделяющимися переменными (9.84) dr «о ) Его решение имеет вид При произвольной зависимости п(у), вообще говоря, интеграл в (9.85) может не выражаться через элементарные функции, поэтому для анализа траектории движения луча будем вычислять его численно. Для этого можно использовать следующий алгоритм. 1. Задать функцию п(у). 2. Задать координату точки падения у0. 3. Задать максимальное значение координаты утах. 4. Вычислить координаты у„ (=0,1,...,ЛМ точек разбиения отрезка [ >’о на N частей. 5. Вычислить значений интеграла (9.85) на интервалах [yo,y,J. 6. Отобразить графически зависимость у=у(х). 275
Компьютерное моделирование физических процессов в пакете МА TLAB Для реализации данного алгоритма необходимо выполнить следующую последовательность действий. 1. Создать файл CoeffRefraction.m, содержащий описание функции, воз- вращающей значение функции п(у)/и0 , где п0 - коэффициент преломле- ния в точке падения луча. % листинг файла CoeffRefraction.m function z=CoeffRefraction(y) % функция, возвращающая значение функции л(у)/и0 = л/1+4у z=(l+4*y).A0.5; 2. Выполнить следующую последовательность команд: % задание координатной сетки по оси oY » ymin=10A-5; » у max=20; » Np=100; »i=l:Np; » у (i)=y min+(y max-ymin)/(Np-1) *(i-1); » Nk=1000; % число узлов для вычисления интеграла % с переменным верхним пределом % вычисление значений интеграла с переменным верхним пределом (9.85) » for i=l:Np su=0; for k=l:Nk Y(k)=ymin+(y(i)-ymin)/(Nk-l)*(k-l); Z(k)=l/(CoeffRefraction(Y(k))A2-l)A0.5; end; Xb(i)=trapz(Y,Z); Yb(i)=Y(Nk); end; » plot(Xb,Yb) Результат выполнения описанной выше последовательности команд представлен на рис. 9.37. Полученный результат выглядит достаточно неожиданно. Можно было ожидать, что луч, падающий на границу раздела, должен идти вдоль оси х, но не по искривленной траектории. 276
9. Моделирование волновых явлений 20 1В 15 14 Рис. 9.37. Траектория движения луча в среде с переменным коэффициентом преломления Полученный результат требует дополнительного объяснения. В гео- метрической оптике под лучом по- нимается узкий пучок света, кото- рый с некоторым приближением можно считать участком фронта плоской волны (принцип Гюйген- са). При падении плоской волны на оптическую неоднородность во второй среде возбуждаются вто- ричные волны (рис. 9.38). Вторич- ная волна движется в среде с неод- нородным показателем преломле- ния с различными скоростями: тем медленнее, чем больше п, и наобо- рот. Это приводит к искажению фронта вторичных волн. Рис. 9.38. К объяснению причины искажения луча при движении волны в среде с неоднородным коэффициентом преломления Таким образом, лучи, рассматриваемые в геометрической оптике, пред- ставляют собой пример математической модели, используемой для описа- ния ряда оптических явлений. Важно понимать, что в реальной природе «лучей» не существует. При невозможности решения задачи с точки зрения геометрической оптики, следует представить луч как перпендикуляр к уча- стку фронта плоской волны, ширина которого значительно больше длины волны, и рассмотреть явление с точки зрения геометрической оптики. 277
Компьютерное моделирование физических процессов в пакете MATLAB Задача 9.40 Используя описанный выше документ, проведите сравнительный анализ траектории луча для различных законов изменения коэффициента пре- ломления f(y) = (1 + ауа У . Почему в ряде случаев вычисление численно- го значения интеграла (9.85) оказывается невозможным, но при исполь- зовании в качестве нижней границы интегрирования некоторой величи- ны £«1 интеграл оказывается сходящимся? 9.8. Поляризация В предыдущих разделах при рассмотрении волновых явлений нас не интересовало направление колебаний волны. В данном разделе мы рас- смотрим явления, зависящие от поляризации волны. Отметим, что поня- тие поляризации используется только для описания поперечных волн, поскольку задание направления распространения продольной волны ав- томатически определяет направление колебаний среды. Для поперечной волны единственным ограничением направления колебаний является ус- ловие, в соответствии с которым они должны происходить в плоскости, перпендикулярной направлению распространения, поэтому, например, электрическое поле электромагнитной волны, распространяющейся в направлении оси oY, может быть представлено двумерной векторной функцией E(y,t) = (Ex(y,t'),Ez(y,t')). Если электромагнитная волна являет- ся монохроматической, то функции Ex(y,t), Ez(y,t) изменяются незави- симо друг от друга с одинаковой частотой. Отмеченное обстоятельство по- зволяет представить данные функции в следующем виде Ех(у,О = Ех0 cos Г- Z \ Г- Г | Ev(y,r) = Ev0cos —-y-a)t , \ л J (9.86) (9.87) где Ех0,Ед0 - амплитуды соответствующих напряженностей. Анализ выражений (9.86), (9.87), показывает, что оказывается удобным ввести безразмерные переменные: координату у = у/Л и время Т = 1/(2л:1со), используя которые можно представить выражения (9.86), (9.87) в следующем виде Epy,t') = EMcos(2n-y-2тт7-ф), (9.88) 278
9. Моделирование волновых явлений Ez(y,T) = Ev0cos(2?r у -2л 7}. (9.89) Из выражений (9.88), (9.89) видно, что напряженности электрического поля не зависят от длины волны, следовательно, поляризация электромаг- нитной волны также не зависит от ее длины. Для изучения основных свойств поперечных волн вычислим в выбран- ный момент времени t составляющие напряженности электрического поля волны, распространяющейся в положительном направлении оси oY. Реше- ние рассматриваемой задачи в пакете MATLAB находится выполнением следующей последовательности команд: » clear all % задание координатной сетки для вычисления составляющих % напряженности электрического поля » Np=100; »i=l:Np; » ymin=0; » ymax=2; » y(i)=ymin+(ymax-ymin)/(Np-l)*i; % вычисление составляющих напряженности электрического поля » Ех0=1; » EzO=l; » t=2.1; % выбранный момент времени » Ex(i)=ExO*cos(2*pi*y(i)-2*pi*t+pi/2); » Ez(i)=EzO*cos(2*pi*y(i)-2*pi*t); % визуализация напряженности электрического поля % в узлах координатной сетки » compass(Ex(l),Ez(l)) » hold on » compass(Ex(10),Ez(10)) » compass(Ex(20),Ez(20)) » compass(Ex(30),Ez(30)) » compass(Ex(40),Ez(40)) Результат выполнения приведенной выше последовательности команд представлен на рис. 9.39. 279
Компьютерное моделирование физических процессов в пакете МЛ TLAB Рис. 9.39. Визуализация проекции вектора напряженности магнитного поля на плоскость oY в момент времени t=2.1 Для визуализации напряженности электрического поля, вычисленной в узлах координатной сетки, в трехмерном пространстве необходимо выпол- нить следующую последовательность команд: » clear all % задание пространственной координатной сетки » Np=53; % число узлов сетки »i=l:Np; » x(i)=0; » ymin=0; » ymax=2; » y(i)=ymin+(ymax-ymin)/(Np-l)*(i-l); » z(i)=0; % вычисление составляющих напряженности электрического поля » Ех0=1; » EzO=l; »t=2.1; » Ex(i)=ExO*cos(2*pi*y(i)-2*pi*t+pi/2); » Ez(i)=EzO*cos(2*pi*y(i)-2*pi*t); » Ey(i)=0; » quiver3(x,y,x,Ex,Ey,Ez) » view([50 36]) 280
9. Моделирование волновых явлений Результат выполнения приведенной выше последовательности команд представлен на рис. 9.40. 0.4 -0.5 Рис. 9.40. Визуализация в трехмерном пространстве вектора напряженности магнитного поля в момент времени t=2.1 Как видно из рис. 9.39 и 9.40, вектор напряженности электрического поля описывает окружность и поворачивается при движении вдоль оси oY по часо- вой стрелке (если смотреть со стороны положительного направления оси oY). О такой волне говорят, что она имеет левую круговую поляризацию. Задача 9.41 Используя описанный выше документ, определите поляризацию элек- тромагнитной для следующих случаев: 1) Ех0=\, Еу0 =1, 0 = 0,л; 2) Ех0 =0.5, Еу0 = 1, 0 = 0,л; 3) Ех0 =1, Еу0 =1, 0 = л/4,л/2 ; 4) Ех0=0.5, Еу0=\, 0 = -л/2. Задача 9.42 Решите задачу 9.41 для электромагнитной волны, у которой состав- ляющие электромагнитного поля изменяются по законам Ex(y,t) = Ех0 cos 2л- 0)1----у-ф Я ' 281
Компьютерное моделирование физических процессов в пакете MATLAB г? / \ г/ ( . 2 Д’ E,.(y,t) = Е 0cos cut ----у . При распространении электромагнитной волны в среде, имеющей пока- затель преломления отличный от единицы, уравнения (9.86), (9.87) принимают следующий вид ( Ex(y,r) = Ex0cos — (9.90) (9.91) ( Еу (у, г) = Ev0 cos — пу - а> t , \ Л / где Л - длина электромагнитной волны в вакууме. В некоторых веществах (например, кварц, кварцит), скорость распро- странения волны зависит от направления ее распространения. Такие вещества называются веществами с двойным лучепреломлением. Если показатели преломления вдоль осей оХ - пх и oY — пу различны, то урав- нения для составляющих напряженности имеют вид (т А Ex(yj) = Ex0cod — \ Л 7 <2яг А Er(y,t)~ Ev0cos —nyy-a>t\. \ Л 7 (9.92) (9.93) Задача 9.43 Предположим, что на кристалл с двойным лучепреломлением падает электромагнитная волна с круговой поляризацией. Задайте показатели преломления пх=9.1, пу=9.2 и определите, при какой толщине кристалла волна, имеющая на входе круговую поляризацию, становится на выходе линейно поляризованной. Как зависит ориентация вектора Еу от тол- щины пластины. Что получается, если через кристалл той же толщи- ны пропускать линейно поляризованную электромагнитную волну? ЛИТЕРАТУРА 1. Гетманова Е. Г., Костарев Д. Б. Резонансные явления в системе связанных осцилляторов// Электромагнитные волны и электронные системы. 2009. Т. 6. № 5. 2. Коткин Г. Л., Сербо В. Г. Сборник задач по классической механике. М.: Наука, 1977. 3. Ландау Л. Д., Лифшиц Е. М. Механика. М.: Наука, 2000. 4. Крауфорд Ф. Волны. М.: Наука, 1974. 5. Гулд X., Тобочник Я. Компьютерное моделирование в физике. М.: Мир, 1990. С. 220. 6. Фарлоу С. Уравнения с частными производными для научных работников и инженеров. М.: Мир, 1985. 7. Мешков И. Н., Чириков Б. В. Электромагнитное поле. Ч. 2. Электромагнитные волны и оп- гика. Новосибирск: Наука, 1987. 282
Глава 10 МОДЕЛИРОВАНИЕ СИСТЕМ, СОСТОЯЩИХ ИЗ БОЛЬШОГО ЧИСЛА ЧАСТИЦ (МЕТОД МОЛЕКУЛЯРНОЙ ДИНАМИКИ) 10.1. Введение В предыдущих разделах нами рассматривались системы, состоящие из небольшого количества частиц (за исключением гл. 9). Однако большинство реальных физических систем состоит из большого числа взаимодействую- щих друг с другом частиц. Например, в 1 см'3 кислорода при Т=ЗОО К, р = 1,01-Ю5 Па находится 2,5-1019 молекул. Возникает естественный вопрос, как решить задачу об описании поведения этой сложной многочастичной системы? В этой главе рассматривается наиболее очевидный подход к ре- шению данной задачи - прямое решение микроскопических уравнений движения частиц, взаимодействующих друг с другом (метод молекулярной динамики). При этом наибольший интерес представляют не сами траекто- рии, но вычисляемые с их использованием характеристики изучаемых сис- тем, например, термодинамических характеристик, вычисляемых усредне- нием по траекториям. Необходимо отметить, что возможности современных компьютеров ограничивают метод молекулярной динамики (МД) по числу частиц мо- делируемой системы. Однако оказывается, что исследование поведения систем с использованием метода МД даже для относительно небольшого числа (от нескольких сотен до нескольких тысяч) дает достаточное ко- личество информации для понимания наблюдаемых свойств газов, жид- костей и твердых тел. Отметим, что вопросы, рассматриваемые в настоящей главе, изучаются в специальном разделе физике - статистической физике. Детальное рас- смотрение всех тем, традиционно включаемых в известные учебные курсы [1-5], безусловно выходит за рамки нашей книги, поэтому мы ограничива- емся рассмотрением некоторых наиболее принципиальных вопросов для понимания поведения статистических систем и применения вычислитель- ных алгоритмов.
Компьютерное моделирование физических процессов в пакете MATLAB 10.2. Математическая модель статистической системы Ставя перед собой целью понимание качественных свойств систем, со- стоящих из большого количества частиц, упростим задачу, предположив, что молекулы являются химически инертными, а их движение является, классическим. Кроме того, будем считать, что сила взаимодействия двух молекул зависит только от расстояния между ними, поэтому полная потен- циальная энергия U определяется суммой энергий двух частичных взаимодействий: N t/=V(r12) + V(r13) + ... + V(r23) + ...= (10.1) к 2=1 где V(гу) зависит только от абсолютной величины расстояния между частицами i и j. Модель парного взаимодействия адекватно описывает «про- стые» жидкости, например, жидкий аргон. Для электрически нейтральных атомов теоретически возможно, исполь- зуя законы квантовой механики, получить аналитическое выражение для функции К(г). Однако, во-первых, такой расчет оказывается весьма гро- моздким, во-вторых, для большинства задач оказывается достаточным ис- пользовать простую феноменологическую формулу, учитывающую, что при малых г сила взаимодействия между молекулами Р(г) - -VU(?) является силой отталкивания, а при больших г - силой притяжения. Отталкивание в соответствии с квантово-механическими представлениями обусловлено пра- вилом запрета Паули [6]. Слабое притяжение при больших г, главным обра- зом, обусловлено взаимной поляризацией каждого атома. Результирующая сила притяжения называется силой Ван-дер-Ваальса. Таким образом, при использовании модели двухчастичного взаимодействия, задача описания поведения статистической системы сводится к выбору вида потенциала У(?) и решению задачи Коши системы дифференциальных уравнений .2 N dt i<j=i Одной из наиболее употребительных феноменологических формул для описания потенциала межмолекулярного взаимодействия является потенци- ал Лейнарда-Джонсона 284
10. Моделирование систем, состоящих из большого числа частиц V(r) = 4/0 г ) \. г (10.3) где ст определяет «характерную» длину потенциала, a Vo - глубину потен- циальной ямы, которые в дальнейшем мы выберем в качестве единиц изме- рения расстояния ( Г = г/ст) и энергии (7 = V(r)/V0 ). Как видно из (10.3), потенциал У(г) достигает своего минимального значения -Vo в точке гт/л = 26 ст, Г(г) = 0 в точке г0 = ст . В выбранных единицах измерения потенциал Лейнарда-Джонсона имеет вид 12 z , ч6‘ (7(Г) = 4 (Ю.4) График безразмерного потенциала Лейнарда-Джонсона представлен на рис. 10.1, из которого видно, что потенциал является короткодействующим, т.е.приР>2.5 Г(г) = 0. Г(~) о ~ 2 25 Рис. 10.1. Зависимость безразмерного потенциала Лейнарда-Джонсона от координаты Для выбора переменной Т, используемой для обезразмеривания системы уравнений движения (10.2), разложим потенциал Г(г) в ряд Тэйлора вблизи минимума потенциала (гт!п=21/6ст). Сохранив члены ряда пропорциональны- ми первой и второй производным и приведя подобные члены, окончательно получим 1 о о 3 Г(Дг)«-К0 + —2-г0дЛ (10.5) где Дг|«гП11П 285
Компьютерное моделирование физических процессов в пакете MA TLAB Сравнив (10.5) с известным выражением для потенциальной энергии гар- монического осциллятора Е = ~кхг, (10.6) 2 приходим к выводу, что величина 2 2-18-2’ 2 V0 О (Ю.7) является аналогом коэффициента жесткости пружины гармонического ос- циллятора, т. е. частица, находящаяся в потенциале Лейнарда-Джонсона, при малых смещениях от точки минимума будет совершать линейные гар- монические колебания с периодом Т = 2я-/т/% (Например, для жидкого аргона, у которого У0/Лв =119.8 К (кв- постоянная Больцмана), ст = 3.405-10"8 см, масса т = 6.69-10'23 г, Т = 1.14-1011 с.) Далее будем ис- пользовать Т для обезразмеривания времени (Т = t/T). Перейдя в (10.2) к безразмерным переменным Т = г1сг, V=V(r)/V0, Г — t/T, и учитывая выражение (10.7), получаем окончательное выражение для безразмерной системы уравнений движения (ю.8) i<j=i Система дифференциальных уравнений (10.8), дополненная начальными условиями 7)(0),Г-(0), является математической моделью рассматриваемой статистической системы. 10.3. Численный алгоритм решения системы уравнений движения После составления математической модели системы, состоящей из большого числа взаимодействующих частиц, следует выбрать численный алгоритм решения, от правильного выбора которого напрямую зависит точ- ность решения. В гл. 9 при численном решении уравнений движения мы убедились, что контроль за устойчивостью численного решения можно осуществлять, следя за полной энергией системы, величина которой в иде- 286
10. Моделирование систем, состоящих из большого числа частиц альном случае должна оставаться постоянной. Отметим, что стандартные функции пакета MATLAB, использованные нами в гл. 9 при моделировании колебаний цепочек, в данной задаче оказываются неработоспособными вследствие необходимости использования специальных граничных условий (см. более подробнее ниже в настоящем разделе). Отмеченные обстоятель- ства определяют необходимость разработки собственных пользовательских функций, реализующих решение уравнений движения в методе молекуляр- ной динамики. Анализ алгоритмов низкого порядка точности, таких как агоритм Эйлера и алгоритм Эйлера-Кроммера. показывает, что данные ал- горитмы не могут обеспечить сохранение энергии на временных интерва- лах, рассматриваемых при моделировании молекулярной динамики. В этих условиях приходится применять вычислительные алгоритмы, имеющие бо- лее высокий порядок точности, одним из которых является алгоритм Верле. Проиллюстрируем суть данного алгоритма, следуя [7], на примере реше- ния системы уравнений одномерного движения частицы dv ~— = а, (10.9) dt — = v. (10.10) dt Запишем разложение зависимостей х,|+1 = х(г„ + Аг) и г,1+1 г v(tn + Аг) в ряд Тэйлора хя+1 = х„ +1 x(f„XA/)2 +o[(Ar)3], (10.11) vn+1=vn+v(f„)At + o[(Ar)2] (Ю.12) Замечая, что x(/n) = v„, x(tn) = v(tn) = an перепишем (10.11), (10.12) в следующем виде *«+1 =хп + v«Af +“ап(Лг)2 + о[(А03]> (10.13) Lhi =vn +«,tAz 4-о[(Дт)2]. (10.14) По аналогии с (10.13), (10.14) запишем разложение в ряд Тэйлора для x«-i =x(t„-M): xn_l=x„-vllM + -a„(M)2. (10.15) Сложив (10.13) и (10.15), получим *,1+1 +*«-1 = 4, +а«(Л02> (10.16) 287
Компьютерное моделирование физических процессов в пакете MATLAB откуда *„<1 =2х„-хл_1+ал(Дг)2. (10.17) Вычитая (10.15) из (10.13), окончательно получим vn = .Vti-Arl . (JO. 18) 2Д/ Глобальная погрешность алгоритма Верле, реализуемого формулами (10.17), (10.18), имеет третий порядок для координаты и второй порядокдля скорости. Отметим, что скорость не участвует в интегрировании уравнений движения, поэтому в литературе, посвященной численным методам, данный алгоритм называется «неявной симметричной разностной схемой». Очевид- ный недостаток неявной разностной схемы состоит в том, что он не являет- ся самостартующим, поэтому приходится использовать другой для получения нескольких первых точек. Отмеченный недостаток можно устранить, добавив и вычтя частей равенства (10.17) величину хп /2 : „ 1 , ,1 1 . А ч2 V, 1 = ХП + 2 (х"+1 “ х«-1) “ 2 хп-1* 2 x«f + х« + = 1 2 — хл + т„Д/ — 2 (х«+1 — 2хл + хл_1) + ал(Дг) Из (10.17) найдем алгоритм из обеих (10.19) (10.20) (10.21) поэтому (10.19) можно записать в виде 1 2 xn+i=xn+vn& Поступая аналогично, перепишем (10.18) для гл+1 и (10.17) для хл+2: (10-22) 2Д/ х,н2 = 2хлИ -ХП +а«+1(^)2 (10.23) соответственно. Подставив (10.23) в (10.22), получаем *„4 1 +т,н,Д/ + -а,к1(Д/)--хл / . (10.24) 288
10. Моделирование систем, состоящих из большого числа частиц Затем, повторяя описанную процедуру хп+1 из (10.17) и подставив в (10.24), после очевидных выкладок окончательно получим v„+i = vn +^(л„+1 +ап)М (10.25) Вычислительная схема, задаваемая выражениями (10.21), (10.25), мате- матически эквивалентна алгоритму Верле, описанному выше. Данная схема, называемая скоростной формой алгоритма Верле, является самостартую- щей, а потому не требует использования каких-либо дополнительных вы- числительных алгоритмов. Описание других вычислительных схем, исполь- зуемых для решения уравнений движения, приведено в [8]. При использовании метода МД для моделирования поведения газов и жидкостей, как правило, предполагается, что рассматриваемая система на- ходится в некоторой кубической ячейке - МД-ячейке. Будем считать, что МД-ячейка имеет линейный размер L, ее объем V = L3. Использование куби- ческой решетки порождает шесть нежелательных поверхностей. Частицы, отраженные от этих поверхностей, будут возвращаться внутрь ячейки, по- этому грани ячейки будут вносить значительный вклад в макроскопические характеристики системы, особенно для систем с малым количеством час- тиц. Для уменьшения описываемого эффекта принято вводить периодиче- ские граничные условия [8] (рис. 10.2), математическая формулировка ко- торых для любой наблюдаемой величины А имеет вид: A(r) = A(r + ffL), (10.26) где fl = (nltn2,n3), a п2, п3 - произвольные целые числа. Рис. 10.2. Пример периодических граничных условий в двумерном случае. Правило ближайшей частицы означает, что расстояние между частицами 1 и 2 определяется длиной вектора, обозначенного двунаправленной стрелкой 10—1576 289
Компьютерное моделирование физических процессов в пакете МА TLAB Данный алгоритм имеет следующую вычислительную реализацию: при пересечении частицей грани основной ячейки она возвращается в ячейку через противоположную грань с той же скоростью. Введением периодиче- ских граничных условий устраняется влияние граней и вводится квазибе- сконечный объем для более точного описания макроскопической системы, т. е. МД-ячейка оказывается «встроенной» в среду. Каждая компонента ра- диуса-вектора трансляции является числом между нулем и L. Для i-й части- цы, находящейся в точке с радиусом-вектором 7), имеются отображения частицы в точках с радиусами-векторами Г, +nL, где П - целочисленный вектор. Для выбранных граничных условий потенциальная энергия принимает следующий вид V(n,.... TN) = X vfe)+ SZ - r-J + nIf>- (10-27) i<j П i<j Для того, чтобы избежать вычисления бесконечной суммы в (10.27), принимается следующее правило [8]: расстояние |^-| между частицами, расположенными в точках с радиусами-векторами Tt, Г-, соответственно, определяется как |^| = min(r_, + r_j ± flL|) по всем И. Данное правило озна- чает, что частица, находящаяся в базисной ячейке взаимодействует с каж- дой из ДМ частицей в базисной ячейке или со своими ближайшими ото- бражениями (рис. 10.2.). Важно понимать, что использование данного пра- вила приводит к «обрезанию» потенциала на расстояниях L гг> —. с 2 Это приводит к потере фонового вклада удаленных частиц, поэтому для устранения эффекта конечности системы значение L должно выбираться достаточно большим, чтобы силы, действующие на расстояниях больших L/2, были пренебрежимо малы. Отметим, что более правильный подход со- стоит в учете взаимодействия каждой частицы со своим отображением. Ссылки на оригинальные работы, посвященные данному подходу и описа- нию вычислительных алгоритмов, его реализующих, приведены в [8]. Сформулируем окончательно алгоритм метода МД: 1. Задать число частиц системы 7V. 2. Задать начальную конфигурацию системы (совокупность координат г^-(0) и скоростей г((0) частиц) 290
10. Моделирование систем, состоящих из большого числа частиц 3. Задать h - шаг интегрирования системы дифференциальных урав- нений (10.8). 4. Задать Nh - число шагов, в которых вычисляются решения системы дифференциальных уравнений (10.8). 5. Вычислить в соответствии с (10.21), (10.25) и учетом периодических граничных условий значения координат т) и скоростей v( , i=0,l,...W в по- следовательные моменты времени tn , i = 0,1,..., Nh. 10 .4. Моделирование системы, состоящей из большого числа частиц, методом молекулярной динамики Рассматриваемая нами статистическая система является детерминиро- ванной, поскольку для описания ее поведения решается задача Коши систе- мы линейных дифференциальных уравнений с постоянными коэффициен- тами. При этом получаемые решения напрямую зависят от начальных усло- вий ?}(0),Р;(0) (начальной конфигурации системы). Отметим, что их правильный выбор оказывается далеко не простой задачей (например, зара- нее совершенно неочевидно, как выбрать начальную конфигурацию, чтобы изучаемая система вела себя как жидкость с заданной температурой.), по- этому сначала мы обсудим особенности эволюции статистической системы из произвольных начальных конфигураций. Один из возможных вариантов задания начальных условий - размещение частиц в узлах некоторой прямо- угольной сетки (размер которой, как очевидно, должен быть меньше разме- ра МД-ячейки) и задании векторов их скоростей случайным образом, на- пример, с помощью генератора случайных чисел с равномерным законом распределения. Данный подход использован ниже в задаче моделирования статистической системы методом МД. Для решения поставленной задачи оказывается удобным сначала создать m-файлы, содержащие описания: 1) функции, возвращающей начальную конфигурацию системы (файл init.m); 2) функции, возвращающей мгновен- ные ускорения каждой частицы системы и мгновенное значение потенци- альной энергии (файл Асс.т); 3) функции, возвращающей значения коор- динат, составляющих скорости и ускорений вдоль соответствующих коор- динатных осей (файл Verlet.m): 4) функции, возвращающей составной массив, содержащий значения координат, проекций скоростей и ускорений 291
Компьютерное моделирование физических процессов в пакете MATLAB на соответствующие координатные оси в узлах временной сетки (файл Mol_din.m). % листинг файла init.rn function z=init(Lx,Ly,Nx,Ny,Vmax) % функция, возвращающая начальную конфигурацию системы % Lx - ширина МД-ячейки % Ly - высота МД-ячейки % Nx - ширина начальной ячейки % Ny - высота начальной ячейки % Vmax - максимальное значение скорости Pos_row=Ly/(Ny+l); Pos_col=Lx/(N х+1); N=Nx*Ny; % число частиц системы i=l; for Rows=l:Ny for Col=l:Nx % задание начальных координат частиц x(i)=Pos_col*Col/2; y(i)=Pos_row*Rows; % задание начальных скоростей частиц Vx(i)=Vmax*(2*rand(l)-l); Vy(i)=Vmax*(2*rand(l)-l); i=i+l; end; end; % проекции скорости центра масс системы Vx_full=mean(Vx); V y_full=mean( V у); i=l:N; Vx(i)=Vx(i)-Vx_full; Vy(i)=Vy(i)-Vy_full; % возврат матрицы, содержащей начальные значения координат и % проекций скоростей частиц статистической системы z=cat(2,x',y',Vx',Vy'); % листинг файла Асс.т function z=Acc(R_V,Lx,Ly,N) % функция, возвращающая мгновенные ускорения каждой частицы % системы и мгновенное значение потенциальной энергии 292
10. Моделирование систем, состоящих из большого числа частиц % R_V - матрица, возвращенная функцией Init % Lx - ширина МД-ячейки % Ly - высота МД-ячейки % N - число частиц системы Ер=0; for i=l:N Ax(i)=0; Ay(i)=0; Pe(i)=0; end; for i=l:N-l for j=i+l:N Dx=R_V(i,l)-R_V(j,l); % проверка граничных условий if abs(Dx)>Lx/2 . Dx=Dx-sign(Dx)*Lx; end; Dy=R_V(i,2)-R_V(j,2); % проверка граничных условий if abs(Dy)>Ly/2 Dy=Dy-sign(Dy)*Ly; end; Ax(i)=Ax(i)+Fx(Dx,Dy); % проекция ускорения на ось оХ Ax(j)=Ax(j)-Fx(Dx,Dy); % третий закон Ньютона Ay(i)=Ay(i)+Fy(Dx,Dy); % проекция ускорения на ось oY Ay(j)=Ay(j)-Fy(Dx,Dy); % третий закон Ньютона г = (DxA2+DyA2).A0.5; Ep=Ep+4*(l/r.A12-l/r.A6); % потенциальная энергия end; end; Pe(N)=Ep; z=cat(2,Ax',Ay',Pe'); % листинг файла Verlet.m function z=Verlet(R_V,Lx,Ly,N,dt) % функция, возвращающая значения координат, % составляющих скорости и ускорений частиц % вдоль соответствующих координатных осей % R_V - матрица, возвращенная функцией Init 293
Компьютерное моделирование физических процессов в пакете MATLAB % Lx - ширина МД-ячейки % Ly - высота МД-ячейки % N - число частиц системы % dt - шаг интегрирования for i=l:N % новое положение частицы x(i)=R_V(i,l)+R_V(i,3)*dt+R_V(i,5)*(dt''2)/2; y(i)=R_V(i,2)+R_V(i,4)*dt+R_V(i,6)*(dtA2)/2; % перемещение при необходимости частицы % в центральную ячейку if x(i)<0 x(i)=x(i)+Lx; end; if x(i)>Lx x(i)=x(i)-Lx; end; if y(i)<0 y(i)=y(i)+Ly; end; if y(i)>Ly y(i)=y(i)-Ly; end; end; % изменение скорости с использованием «старого» ускорения for i=l:N Vx(i)=R_V(i,3)+0.5*R_V(i,5)*dt; Vy(i)=R_V(i,4)+0.5*R_V(i,6)*dt; end; % вычисление «нового» ускорения R_Vnew=cat(2,x',y',Vx',Vy'); Accnew=Acc(R_Vnew,Lx,Ly,N); % вычисление скорости с использованием «нового» ускорения for i=l:N Vx(i)=Vx(i)+0.5*Accnew(i,l)*dt; yy(i)=Vy(i)+0.5*Accnew(i,2)*dt; end; z=cat(2,x',y',Vx',Vy',Accnew); function zl=Fx(x,y) % проекция силы, действующей на частицу, вдоль оси оХ 294
10. Моделирование систем, состоящих из большого числа частиц zl=-2A(7/3)*(piA2)/3*x.*(-2/(x.A2+y.A2).A7+l/(x.A2+y.A2).A4); function z2=Fy(x,y) % проекция силы, действующей на частицу вдоль оси oY z2=-2A(7/3)*piA2/3*y *(-2/(х.А2+у.А2).А7+1/(х.А2+у.А2).А4); % листинг файла Mol_din.m function z=Mol_din(Lx,Ly,N,Ni,dt,A) % функция, возвращающая составной массив, % содержащий значения % координат, проекций скоростей и ускорений частиц % на соответствующие координатные оси % в узлах временной сетки % Lx - ширина МД-ячейки % Ly - высота МД-ячейки % N - число частиц системы % Ni - число МД-шагов % dt - шаг интегрирования уравнений движения % А - массив, возвращенный функцией Init Accold=Acc(A,Lx,Ly ,N); A2=cat(2, A, Accold); A3=cat(3,A2); k=0; while k<Ni A2=Verlet(A2,Lx,Ly,N,dt); A3=cat(3, АЗ, A2); k=k+l; end; z=A3; Далее необходимо выполнить следующую последовательность команд: % размер начальной ячейки » Nx=5; » Ny=5; » N=Nx*Ny; % число частиц системы % размер МД-ячейки » Lx=8; » Ly=8; » Vmax=0.2; % максимальное значения начальной скорости » A=Init(Lx,Ly,Nx,Ny,Vmax); % начальная конфигурация 295
Компьютерное моделирование физических процессов в пакете МА TLAB » Ni=10A4; % число МД-шагов » dt=l*10A-4; % величина МД-шага » md=Mol_din(Lx,Ly,N,Ni,dt,A); % визуализация мгновенных конфигураций системы в выбранные % моменты времени (рис. 10.3-10.6) » plot(md(:,l,l),md(:^,l),'oK','Size',3);axis([0 Lx 0 Ly]) » plot(md(:,l,501),md(:,2,501),'oK','Size',3);axis([0 Lx 0 Ly]) » plot(md(:,l,5001),md(:,2,5001),'oK','Size',3);axis([0 Lx 0 Ly]) » plot(md(:,l,10001),md(:,2,10001),'oK','Size',3);axis([0 Lx 0 Ly]) % вычисление числа частиц в левой половине ящика for i=l:Ni+l Nl(i)=0; tmp=md(:,l,i); forj=l:N if tmp(j)<=Lx/2 Nl(i)=Nl(i)+l; end; end; end; % визуализация зависимости числа частиц, находящихся % в левой половине ящика от времени (рис. 10.7) i=l:Ni+l; L(i)=12.5; plot((i-l)*dt,Nl,'k',i*dt,L,'-k'); axis([0 Ni*dt 0 30]) % вычисление мгновенных значений кинетической и % потенциальной энергий системы » for i=l:Ni+l Sum=0; tmpVx=md(:,3,i); trap V у=md(: ,4 ,i); for j=l:N Sum=Sum+0.5*(tmpVx(j)A2+tmpVy(j)A2); end; Ek(i)=Sum; Ep(i)=md(N,7,i); end; % визуализация зависимостей кинетической, потенциальной % и полной энергий, приходящихся на одну частицу 296
10. Моделирование систем, состоящих из большого числа частиц %, от времени (рис. 10.8-10.10) »i=l:Ni+l;figure(l);plot((i-l)*dt,Ek/N,'k') »i=l:Ni+l;figure(2);plot((i-l)*dt,Ep/N,'k') »i=l:Ni+l;figure(3);plot((i-l)*dt,(Ep+En)/N,'k') Результаты выполнения описанной последовательности команд пред- ставлены на рис. 10.3-10.10. Рис. 10.3. Начальная конфигурация статистической системы Рис. 10.4. Конфигурация статистической системы в момент времени t=0.05 297
Компьютерное моделирование физических процессов в пакете МА TLAB Рис, 10.5. Конфигурация статистической системы в момент времени t~0.5 8 7 6 5 4 3 2 1 О Рис. 10.6. Конфигурация статистической системы в момент времени t~1.0 298
10. Моделирование систем, состоящих из большого числа частиц 30 г— о-------1--------i-------i------1------1-------1------1-------1------1------ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Puc. 10.7. Зависимость числа частиц, находящихся елевой половине ящика, от времени (Nleft=Nleft(t)) 300 150 100 50 О------1---Л-----1 —I--------j-----i-----i-----1-----1------ О 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Рис. 10.8. Зависимость кинетической энергии, приходящейся на одну частицу, от времени (Ek=Ek(t)) 299
Компьютерное моделирование физических процессов в пакете MATLAB .50-----1-----1-----1-----1-----J-----1-----1-----।----1----- 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Рис. 10.9. Зависимость потенциальной энергии, приходящейся на одну частицу от времени (Ep=Ep(t)) 300
10. Моделирование систем, состоящих из большого числа частиц Анализ зависимостей, представленных на рис. 10.7-10.10, показывает, что с течением времени система стремится к состоянию равновесия (про- цесс релаксации), в котором примерно одинаковыми остаются число частиц в левой и правой половинах МД-ячейки и полная энергия системы. (Отме- тим, что поскольку значения начальной скорости задаются с помощью ге- нератора случайных чисел, данные зависимости, полученные при пересчете документа, будут всегда отличаться от зависимостей, представленных на рис. 10.7-10.10, однако качественно они должны вести себя подобным об- разом). Задача 10.1* Используя зависимости Nleft=Nleft(t), Ek = Ek(t), Ep-Ep{t), E = E(t), оцените: 1) время релаксации статистической системы к состоянию равновесия; 2) средние значения кинетической, потенциальной и полной энергий системы в состоянии равновесия; 3) оцените величину флук- туаций кинетической, потенциальной и полной энергий системы в со- стоянии равновесия. Задача 10.2 Опишите движение отдельной частицы в процессе релаксации, проанализировав зависимости x(t), y(t), R(t)= 7x(r)2 + у(?)2 , у = у(х), vI=vT(z), vy=vv(f), vv=/(vI). Постройте зависимости x(t)-x(0), ___y(t)-y(O), R(t)-R(0), (R(t)-R(O))2. Задача 10.3 Опишите движение отдельной частицы после достижения системой в момент времени tr равновесного состояния. Постройте зависимости x(t)-x(tr), y(t)-y(tr), R(t)-R(tr), (R(t)-R(tr))2. Вычислите средние значе- ния <x(t)-x(tr)>, <y(t)-y(tr)>, <R(t)-R(tr)>. Считая, что среднеквадра- тическое отклонение частицы от начального положения меняется во времени по линейному закону <(R(t)-R(tr))2>-a-(t-tr), оцените с помо- щью метода наименьших квадратов значение коэффициента а. Прове- дите аналогичный анализ для другой частицы и сравните полученные результаты. * Во всех задачах данной главы, где начальные параметры статистической системы не оговорены специально, они соответствуют параметрам, указанным в тексте главы при описании соответствующего документа 301
Компьютерное моделирование физических процессов в пакете MATLAB Задача 10.4 Рассмотрите обратный во времени процесс, выбрав в качестве началь- ных значений координат частиц, i - О,)...N соответствующие коорди- наты из последней вычисленной конфигурации статистической систе- мы Ni (Х,(0) = Xj(dt • М'),^(0) = y;(dt • Ni),i = 0,1 ...N), в качестве на- чальных скоростей соответствующие значения скоростей из последней конфигурации статистической системы, взятых с противоположным знаком (Vxi(Q) = -vxl(dt-Ni). Vyl(Q) = -vyj(dt -Ni)). Каково состояние статистической системы в момент времени dt-Ni? Задача 10.5 Используя описанный выше документ, исследуйте поведение статисти- ческой системы с большим количеством частиц. Как зависят от числа частиц в состоянии равновесия: 1) время достижения равновесия; 2) величина флуктуаций числа частиц в левой половине МД-ячейки (Nleft(t)-Nl2); 3) величина флуктуаций кинетической энергии, прихо- дящейся на одну частицу, l^Ek- Ек)* 2^), здесь угловые скобки ( ) озна- чают усреднение по времени, Ek - среднее значение кинетической энер- гии), 4) величина флуктуаций потенциальной энергии, приходящейся на одну частицу, i^Ep-Epf); 5) величина флуктуаций полной энергии, приходящейся на одну частицу (^Е - Е)2^ ? (Примечание. Основной ве- личиной, определяющей точность полученных решений, является шаг по времени h. Однако уменьшение шага интегрирования при фиксирован- ном интервале времени, на котором исследуется динамическая систе- ма, приводит к пропорциональному увеличению общего времени вычис- лений. Общего критерия выбора шага h, к сожалению, не существует, поэтому его величина определяется путей эмпирического подбора: 1) выбор определенного шага, 2) расчет, 3) анализ достоверности полу- ченных результатов, если полученные результаты недостоверны (пове- дение соответствующих величин качественно отличается от зависи- мостей, представленных на рис. 10.7-10.120), то выбирается меньший шаг и повторяются пп. 2,3.) В статистической физике для характеристики систем, состоящих из большого числа частиц, используют функции распределения по скорости 302
10. Моделирование систем, состоящих из большого числа частиц Р(у) и энергии Р(Е). Функция Р(у) определяет вероятность P(v)Av обна- ружить частицы, скорость которых находится в интервале [v;v+Av]. Функция Р(Е) определяет вероятность Р(Е)ЕЕ обнаружить частицы, кинетическая энергия которых находится в интервале [£;£+Д£]. Для вычис- ления функции распределения по скорости в равновесном состоянии может быть использован следующий алгоритм: 1. Определить минимальное vmin и максимальное vmax значения скоро- сти на временном интервале [ГцТз], на котором система находится в равно- весном состоянии. 2. Задать Nh - число отрезков, на которые разбивается отрезок [Ртт^тах]- 3. Вычислить мгновенные функции распределения, подсчитав в каждый момент из интервала [ТьТг], число частиц, попадавших в отрезки [vmin + Av • Ё vmin + Av • (i +1)], где Av = (vmax - vmin )/Np , i = 0,1... ,Nh -1. 4. Усреднить мгновенные функции распределения. Для вычисления удобно создать файл Distr.m, содержащий описание функции, реализующей приведенный выше алгоритм. Листинг данного файла приводится ниже. % листинг файла Distr.m function z=Distr(md,N,Tstart,dt,Flag,Nh) % функция, возвращающая вероятность нахождения % проекций скорости частицы в интервале [v, v + Av] % md - массив, возвращенный функцией Mol_din % N - число частиц системы % Tstart - момент времени, начиная с которого проводится % вычисление мгновенных распределений % dt - шаг интегрирования уравнений движения % Flag - строковая переменная, значение которой по проекции % на какую ось вычисляется вероятность распределения % Nh - число интервалов разбиения интервала скоростей » Np=length(md); % число МД-шагов » к=1; »if Flag=='x' L=3; else L=4; end; Nstart=round(T start/dt); 303
Компьютерное моделирование физических процессов в пакете МА TLAB V=md(:,L,Nstart); % создание матрицы, содержащей мгновенные значения % проекций скорости частиц for i=Nstart+l:Np zl=md(:,L,i); V=cat(2,V,zl); end; % нахождение минимального и максимального значений скорости частиц Vl=min(V); Vmin=min(Vl); V2=max(V); Vmax=max(V2); dv=(Vmax-Vmin)/Nh; % длина интервала по скорости m=l:Nh+l; inter(m)=Vmin+dv*(m-l); % координаты узлов сетки g(m)=0; % вычисление мгновенных распределений к=1; for i=Nstart:Np v=V(:,k); к=к+1; g=g+hist(v,inter); end; g=g/((Np-Nstart)*Nh); % среднее распределение z=cat(2,inter',g'); Отметим, что при использовании функций min, max для матриц возвра- щаемый результат является вектором, содержащим, соответственно, мини- мальные и максимальные значения по каждому столбцу матрицы. Данные функции, будучи примененными к вектору, возвращают скаляр - мини- мальное/максимальное значение. Для подсчета числа частиц, попадающих в заданные интервалы, мы используем специализированную функцию пакета MATLAB hist, которая зависит от двух векторов: первый содержит значе- ния анализируемой последовательности у, второй — координаты интервалов разбиения отрезка [ymin, углах]. Для вычисления распределения частиц по проекциям скорости на коорди- натные оси необходимо выполнить следующую последовательность команд: % размер начальной ячейки » Nx=5; » Ny=5; 304
10. Моделирование систем, состоящих из большого числа частиц » N=Nx*Ny; % число частиц системы % размер МД ячейки » Lx=8; » Ly=8; » Vmax=0.2; % максимальное значения начальной скорости » A=Init(Lx,Ly,Nx,Ny,Vmax); % начальная конфигурация » Ni=10A4; % число МД шагов » dt=l*10A-4; % величина МД шага » md=Mol_din(Lx,Ly,N,Ni,dt,A); » Tstart=0.2S; » Nh=10; % число интервалов » z=Distr(md,N,Tstart,dt,'x',Nh); » z l=Distr(md,N,Tstart,dt,'у' ,Nh); % визуализация распределений частиц по проекциям скорости % (рис. 10.11-12) » bar(z(:,l),z(:,2));colormap white » bar(zl(:,l),zl(:,2));colormap white Результаты выполнения описанной последовательности команд пред- ставлены на рис. 10.11-10.12. Рис. 10.11. Вероятность нахождения проекции скоростей частиц на ось оХ - Гу. v + Av] в интервале скоростей L ’ J 305
Компьютерное моделирование физических процессов в пакете MATLAB Рис. 10.12. Вероятность нахождения проекции скоростей частиц на ось oY в интервале скоростей V + Задача 10.6 Создайте функцию, возвращающую вероятность обнаружить модуль скорости частицы в интервале [v,v+Av], Чему равно наиболее вероят- ное значение скорости? Чему равно среднее значение скорости? Срав- ните вероятности обнаружить проекцию скорости на соответствую- щие оси и вероятность нахождения модуля скорости в заданном диапа- зоне скоростей. Задача 10.7 Создайте функцию, возвращающую вероятность обнаружить кинети- ческую энергию частицы в интервале [Е,Е+ДЕ]. Сравните вероятности обнаружить проекцию скорости на соответствующие оси, вероят- ность нахождения модуля скорости в заданном диапазоне скоростей с вероятностью обнаружить кинетическую энергию частицы в интерва- ле [Е,Е+ЛЕ]. 10.5. Оценка макроскопических характеристик статистической системы В предыдущем разделе мы характеризовали состояние газа числом час- тиц в левой части МД-ячейки. Известно, что в термодинамике равновесное состояние характеризуется такими параметрами, как абсолютная темпера- тура Т, среднее давление Р, объем V, полная энергия. 306
10. Моделирование систем, состоящих из большого числа частиц Для определения температуры можно использовать теорему о равнорас- пределении, согласно которой на каждую переменную, входящую в выра- жение для энергии равновесной классической системы, приходится по 772 в его энергии. В том случае, если кинетическая энергия частиц значительно больше средней потенциальной энергии их взаимодействия, можно считать, что внутренняя энергия системы обусловлена только движением частиц, по- этому (10-28) i ' где d - размеренность системы, скобки ( ) означают усреднение по времени. Отметим, что в (10.28) температура Т измеряется в энергетических еди- ницах, перевод которых в градусы Кельвина осуществляется делением тем- пературы 7' на постоянную Больцмана kB -1.38-10-23 Дж/К.. Задача 10.8 Оцените возможность использования модели идеального газа для опи- сания рассматриваемой системы. Дополните описанный выше доку- мент функцией, позволяющей вычислять температуру равновесной статистической системы в соответствии с (10.27). Задача 10.9 Выражение (10.27) устанавливает связь между средним значением ки- нетической энергии, вычисляемой как сумма средних значений кинети- ческих энергий частиц (среднее по траектории). Можно предложить альтернативный способ вычисления температуры (10-29) Дополните описанный выше документ функцией, позволяющей вычис- лять температуру равновесной статистической системы в соответ- ствии с (10.29). Сравните найденное значение температуры с резуль- татом, полученным в предыдущей задаче. Объясните полученный ре- зультат. Способ вычисления давления рассматриваемой статистической системы вытекает из теоремы вириала, в соответствии с которой . I N PV = NT + Lly'riFi\, (10.30) d \, i 307
Компьютерное моделирование физических процессов в пакете МА TLAB где fj - радиус-вектор ;-й частицы, Pt - полная сила, действующая на i-ю частицу со стороны остальных частиц (здесь сумма берется по всем N час- тицам). Вывод формулы (10.30) приведен в [7, С. 179--180]. Для вычисления давления в соответствии с (10.30), сначала необходимо вычислить мгновенные значения давления, затем провести усреднение на временном интервале, на котором система является равновесной. Далее мы приводим листинг файла Virial.m, содержащего описание функции, воз- вращающей мгновенные значения давления. % листинг файла Virial.m function z=virial(md,E,Lx,Ly) % функция, возвращающая мгновенные значения давления % в соответствии с (10.30) % md - массив, возвращенный функцией Mol_din % Е - вектор, содержащий мгновенные значения энергии % Lx - ширина МД ячейки % Ly - высота МД ячейки K=length(md); % число МД шагов N=size(md,l); % число частиц системы % вычисление мгновенных значений энергии в соответствии с (10.30) for i=l:K Vl=E(i)/(Lx*Ly); V2=0; for j=l:N V2=V2+md(j,l,i)*md(j,5,i)+md(j,2,i)*md(j,6,i); end; V(i)=Vl+0.5*V2/(Lx*Ly*N); end; z=V; Для вычисления и визуализации зависимости мгновенных значений энергии от времени необходимо выполнить следующую последователь- ность команд: % вычисление мгновенных значений кинетической энергии » for i=l:Ni+l Surn=0; tmp V x=rnd(: ,3,i); tmpVy=md(:,4,i); for j=l:N Sum=Sum+0.5*(tmpVx(j)A2+tmpVy(j)A2); end; Ek(i)=Sum; 308
10. Моделирование систем, состоящих из большого числа частиц end; % вычисление и визуализация мгновенных значений давления » Z=virial(md,Ek,Lx,Ly); »i=l :Ni+l ;plot((i-1 )*dt,Z,'K') Результаты выполнения описанной выше последовательности команд представлены на рис. 10.13. 110.--„-----,----,----,---,----г----г----,----г---- 30 20----1--1----1----1---1---1----1---1----1---- 0 0.1 0.2 0.3 0 4 0.5 0.6 0.7 0.8 0.9 1 Рис. 10.13. Зависимость мгновенных значений давления от времени Задача 10.10 Задайте функцию, позволяющую определять средние значения давления. Оцените точность вычисления давления. Исследуйте, как зависит вели- чина флуктуаций давления от числа частиц статистической системы. Одна из проблем метода МД - проблема получения равновесных конфи- гураций с заранее заданной температурой, знание которой необходимо для оценки ряда ее термодинамических характеристик, так как данная величина зависит от целого ряда параметров системы: начальной энергии, числа час- тиц, размеров системы. Для преодоления отмеченных трудностей обычно используют перенормировку кинетической энергии - процедуру, с физиче- ской точки зрения эквивалентную добавлению в систему извне энергии или ее отводу из системы. Для ее реализации может быть использован следую- щий алгоритм. 1. Задание требуемой температуры . 2. Задание начальной равновесной конфигурации. 309
Компьютерное моделирование физических процессов в пакете MATLAB 3. Задание числа шагов по времени Nm, через которые производится нор- мировка скорости. 4. Интегрирование уравнений движения на временном интервале [dt j;dt(J + Nm)] 5. Вычисление средней кинетической энергии / - N 2\ Hw)' 6. Вычисление нормировочного коэффициента P = (Ю.32) Ek 7. Нормировка значений скорости . (10.33) 8. Повторение действий, описанных в пп. 4-7, на последующих времен- ных интервалах. Ниже представлены листинг файла Mol_dinl.m, содержащего описание функции, реализующей описанный алгоритм, и последовательность команд, которую необходимо выполнить: % листинг файла Mol_dinl .m function z=Mol_dinl(Lx,Ly,Nx,Ny,N,Ni,dt,A,Tf,Nm) % функция, возвращающая составной массив, содержащий % значения координат, проекций скоростей и ускорений частиц % статистической системы частиц с заданной температурой на % соответствующие координатные оси в узлах временной сетки % Lx - ширина МД-ячейки % Ly - высота МД-ячейки % N - число частиц системы % Ni - число МД-шагов % dt - шаг интегрирования уравнений движения % А - массив, возвращенный функцией Init % Tf - температура системы % число, задающее частоту применения процедуры перенормировки Accold=Асс( A,Lx,Ly ,N); A2=cat(2, A, Accold); A3=cat(3,A2); k=0; M=l; 310
10. Моделирование систем, состоящих из большого числа частиц Na=length(A) while k<Ni A2=V erlet(A2,Lx,Ly,N,dt); if M==Nrn for i=l:M beta=0; for j=l:Na beta=beta+O.5*(A20,3)A2+A20,4)A2); end; betal(i)=beta; end; beta2=sum(betal)/(M*Nx*Ny); % среднее значение кинетической энергии % перенормировка скоростей for j=l:Na A2(j,3)=A2(j,3)*(Tf/beta2)A0.5; A2(j,4)=A2(j,4)*(Tf/beta2)A0.5; end; M=l; else M=M+1; end; A3=cat(3,A3,A2); k=k+l; end; z=A3; Далее необходимо выполнить следующую последовательность команд: % размер начальной ячейки » Nx=5; » Ny=5; » N=Nx*Ny; % число частиц системы % размер МД-ячейки » Lx=8; » Ly=8; » Vmax=0.2; % максимальное значения начальной скорости » A=Init(Lx,Ly,Nx,Ny,Vmax); % начальная конфигурация » Ni=10A4; % число МД-шагов » dt=l*10A-4; % величина МД-шага » md=Mol_din(Lx,Ly,N,Ni,dt,A); % вычисление мгновенных значений кинетической 311
Компьютерное моделирование физических процессов в пакете MATLAB % и потенциальной энергий системы » for i=l:Ni+l Sum=0; tmp V x=md(: Д i); tmpVy=md(:,4,i); forj=l:N Sum=Sum+0=5*(tmpVx(j)A2+tmpVy(j)A2); end; Ek(i)=Sum; Ep(i)=md(N,7,i); end; % визуализация зависимостей кинетической, потенциальной % и полной энергий, приходящихся на одну частицу, от времени »i=l:Ni;figure(l);plot((i-l)*dt,Ek/N,'k') »i=l:Ni;figure(2);plot((i-l)*dt,Ep/N,’k') »i=l :Ni;figure(3);plot((i-l)*dt,(Ep+En)/N,'k') % вычисление и визуализация мгновенных значений давления » Z=virial(md,Ek,Lx,Ly); »i=l:Ni+l;figure(4);plot((i-l)*dt,Z,'k’) Результаты выполнения описанной последовательности команд пред- ставлены на рис. 10.14-10.17. Рис. 10.14. Зависимость мгновенных значений кинетической энергии, приходящейся на одну частицу, от времени 312
JO. Моделирование систем, состоящих из большого числа частиц Рис. 10.15. Зависимость мгновенных значений потенциальной энергии, приходящейся на одну частицу, от времени 200 180 160 140 120 100 80 60 40 20 0 Рис. 10.16. Зависимость мгновенных значений полной энергии, приходящейся на одну частицу, от времени 313
Компьютерное моделирование физических процессов в пакете МА TLAB О 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Рис. 10.17. Зависимость мгновенных значений давления от времени Анализ зависимостей, представленных на рис. 10.14-10.17, показывает, что в моменты времени, соответствующие перенормировке, происходит скачок энергии. Между моментами нормировки, когда система не подверга- ется внешним воздействиям, энергия остается практически постоянной. Флуктуации энергии обусловлены периодическими граничными условиями, которые обеспечивают сохранение только полного числа частиц в МД- ячейке: при выходе частицы за пределы ячейки в нее вводится точно такая же частица. Вновь введенная частица оказывается в другом, нежели преды- дущая, месте, следовательно, это приводит к изменению суммарной энергии взаимодействия частиц в системе. Задача 10.11 Важной термодинамической характеристикой систем, состоящих из большого числа частиц, является их теплоемкость при постоянном объеме Cv = (дЕ/дТ)v , где Е - полная энергия системы. Данная величи- на есть мера количества тепловой энергии АЕ. которое необходимо сообщить системе, чтобы увеличить температуру на АТ . Так как те- плоемкость зависит от числа частиц системы, вводят удельную теп- лоемкость на одну частицу cv=Cv/N. Наиболее просто можно оце- нить удельную теплоемкость, используя следующий алгоритм. 1. Вычислить энергию системы при различных температурах (не менее 4 значений). 314
10. Моделирование систем, состоящих из большого числа частиц 2. Отобразить зависимость Е = Е(Т) графически. 3. Проанализировав вид зависимости Е = Е(Т), выбрать вид аппрокси- мирующей кривой и подобрать с помощью метода наименьших квадра- тов соответствующие коэффициенты. 4. Вычислить значение первой производной аппроксимирующей зависимости. Используя описанный алгоритм, вычислите удельную теплоемкость cv изучаемой системы. Как зависит теплоемкость от температуры? Исследуйте, как зависит удельная теплоемкость cv от числа частиц и размеров системы. Задача 10.12 Плотные газы и жидкости описываются приближенно уравнением состояния Ван-дер-Ваальса: Р = Т—^----ар1. (10.34) 1 —Ьр Феноменологически параметры а и b связаны с притягивающей и от- талкивающей частями потенциала взаимодействия, соответственно, и в первом приближении не зависят от температуры. 1. Проведите вычисления и постройте зависимость Р = Р(Т). 2. Используя зависимость Р = Р(Т), оцените значения коэффициентов а, Ь. 3. Измените размеры МД-ячейки, изменив тем самым плотность газа. Оцените значения коэффициентов aub для новых значений плотности. Сравните значения коэффициентов а, b с соответствующими значе- ниями, полученными в задаче 10.10. 10.6. Оценка коэффициентов переноса в методе молекулярной динамики Будем следить за траекторией движения /-й пробной частицы. Пусть в некоторый произвольно выбранный момент времени ее координата равна , в момент времени t2 - . Тогда смещение Ей пробной частицы за время t2-tl равно rj(t2)- . Среднее смещение частиц статистической системы в состоянии равновесия за время /2 ~ h определяется как среднее по всем частицам системы и по всем временным интервалам, длительность которых равна t2-lp 315
Компьютерное моделирование физических процессов в пакете MATLAB 1 N / 1 N \ F= O0'35) Так как каждая частица взаимодействует с другими частицами системы направление скорости частиц меняется случайным образом, поэтому сред- нее смещение частицы оказывается равным нулю. В этих условиях более информативной величиной является величина среднего квадрата смещения , определяемого формулой (10.36) где усреднение проводится по всем частицам и по временным интервалам, длительность которых равна t = r2 -. В состоянии равновесия средний квадрат смещения частицы j/?(t)2 зависит только от разности времен t2 , но не от выбора начала отсчета. Далее представлен листинг файла R2.m, со- держащего описание функции, возвращающей значения среднего квадрата смещения, и последовательность команд, которую необходимо выполнить для вычисления значений среднего квадрата смещения. % листинг файла R2.m function z=R2(md,Lx,Ly,dt,Tstart,dk) % функция, возвращающая значения среднего квадрата смещения % md - массив, возвращенный функцией Mol_din % Lx - ширина МД-ячейки % Ly - высота МД-ячейки % dt - шаг интегрирования уравнений движения % Tstart - момент времени, начиная с которого проводится % вычисление среднего квадрата смещения % dk - определяющее шаг вычисления среднего квадрата смещения K=length(md); Kstart=floor(Tstart/dt); Nm=floor((K-Kstart)/dk); N=size(md,l); С(1,1)=0; C(l,2)=0; for nm=l:Nm R=0; il=0; for k=Kstart:K-dk*nm 316
10. Моделирование систем, состоящих из большого числа частиц for j=l:N Dx=md(j,l>k)-md(j,l,floor(k+dk*nm)); Dy=md(j,2,k)-md(j,2,floor(k+dk*nm)); % периодические граничные условия if abs(Dx)>Lx/2 Dx=Dx-sign (Dx)*Lx; end; if abs(Dy)>Ly/2 Dy=Dy-sign(Dy)*Ly; end; R=R+DxA2+DyA2; il=il+l; end; end; C(nm+l,l)=dt*nm*dk; C(nm+l,2)=R/(il*N); end; z=C; Последовательность команд: % размер начальной ячейки » Nx=5; » Ny=5; » N=Nx*Ny; % число частиц системы % размер МД-ячейки » Lx=8; » Ly=8; » Vmax=0.2; % максимальное значения начальной скорости » A=Init(Lx,Ly,Nx,Ny,Vmax); % начальная конфигурация » Ni=10A4; % число-МД шагов » dt=l*10A-4; % величина МД-шага » md=MoI_din(Lx,Ly,N,Ni,dt,A); % вычисление и визуализация среднего квадрата смешения » Z=R2(md,Lx,Ly,dt,0.7,50); » plot(Z(:,l),Z(:,2),'k') Результат выполнения описанной последовательности команд представ- лен на рис. 10.18. 317
Компьютерное моделирование физических процессов в пакете MATLAB 0 4-----г ---, -------..------------------, 035|- -j 0.3 - / 4 0.25- / -j .7 I / 015й / 1 / 0-1 / • i S.05 z 7 -• 0L-^.—i------1------------------i-----------1 0 C 05 01 0 15 0 2 0 25 0 3 0 35 Puc. 10.18. Зависимость среднего квадрата смещения от времени Задача. 10.13 В соответствии с точным решением задачи о движении частицы под действием случайных сил, полученным А. Эйнштейном, в равновесной двумерной системе средний квадрат смещения частицы jR(/)* 2 меняется по закону |Я(г)2 =4 Dt, (10.37) где D - коэффицент самодиффузии. 1.Для вычисленной зависимости |7?(/)2, используя метод наименьших квад- ратов, оцените значения коэффициента самодиффузии D. 2. Используя зависимости (rj-(r)2, i =1,2,...N, получите оценки коэффициен- тов самодиффузии каждой частицы D,. Сравните значения коэффици- ентов самодиффузии D и D,. Оцените, точность оценки коэффициента самодиффузии D. Еще одной важной характеристикой поведения статистической системы является автокорреляционная функция скорости Z(r), являющаяся количест- венной характеристикой меры зависимости значений скорости, сдвинутых друг относительно друг друга на определенный временной интервал. Для вычисления значений автокорреляционной функции Z(f) следует взять значения скорости каждой частицы, разделенные временным интерва- лом i - t? i,. перемножить значения скорости, усреднить полученные про- изведения по временным интервалам длительностью I и всем частицам рас- 318
10. Моделирование систем, состоящих из большого числа частиц сматриваемой системы. Математическая форма записи данного определения имеет вид Z(r) = <V,(r1)(10.38) где ? = f2-r1. Коэффициент самодиффузии D и автокорреляционная функция двумер- ной статистической системы связаны следующим соотношением +х D = |jz(t)dr. (10.39) — X Далее представлен листинг файла CorrV.m, содержащего описание функции, возвращающей значения среднего квадрата смещения, и последо- вательность команд, которую необходимо выполнить для вычисления зна- чений среднего квадрата смещения. % листинг файла CorrV.m function z=CorrV(md,dt,Tstart,dk) % функция, возвращающая значения автокорреляционной % функции скорости % md - массив, возвращенный функцией Mol_din % dt - шаг интегрирования уравнений движения % Tstart - момент времени, начиная с которого проводится вычисление % автокорреляционной функции K=length(md); Kstart=floor(T start/dt); Nm=floor((K-Kstart)/dk); N=size(md,l); for nm=l:Nm V=0; il=0; for k=Kstart:K-dk*nm for j=l:N V=V+md(j,3,k)*md(j,3,floor(k+dk*nm))+... md(j,4,k)*md(j,4,floor(k+dk*nm)); il=il+l; end; end; C(nm,l )=dt*(nm-1 )*dk; C(nm,2)=V/(il*N); end; z=C; 319
Компьютерное моделирование физических процессов в пакете MATLAB Последовательность команд: % размер начальной ячейки » Nx=5; » Ny=5; » N=Nx*Ny; % число частиц системы % размер МД-ячейки » Lx=8; » Ly=8; » Vmax=0.2; % максимальное значения начальной скорости » A=Init(Lx,Ly,Nx,Ny,Vmax); % начальная конфигурация » Ni=10A4; % число МД-шагов » dt=l*10A-4; % величина МД-шага » md=Mol_din(Lx,Ly,N,Ni,dt,A); % вычисление и визуализация автокорреляционной функции скорости » Tstart=0.7; » dk=50; » Z=CorrV(rnd,dt,Tstart,dk); » plot(Z(:,l),Z(:,2),’k'); Результат выполнения описанной последовательности команд представ- лен на рис. 10.19. Задача 10.14 Используя вычисленную зависимость Z(t), оцените значение коэффици- ента самодиффузии в соответствии с выражением (10.39). Задача. 10.15 Предположите, что зависимость Z(t) от времени описывается функци- ей вида Z(t) = Aexp(-t/r), (10.40) где г- время корреляции. Подставьте теоретическую зависимость Z(t) в формулу (10.39) и опре- делите, как связан коэффициент диффузии D с временем корреляции т. Используйте данное соотношение между Dur для вывода выражения для D. Задача 10.16 Используя вычисленную зависимость Z(t), оцените по методу наимень- ших квадратов численные значения величин Лит. входящих в выражение (10.40). 320
10. Моделирование систем, состоящих из большого числа частиц Задача 10.17 Получите оценки коэффициента самодиффузии D, используя результа- ты задач 10.16 и 10.17. Сравните найденное значение коэффициента самодиффузии с соответствующими значениями, полученными в зада- чах 10.14, 10.15. С какой точностью совпадают эти оценки? Рис. 10.19. Зависимость автокореляционной функции скорости частиц статистической системы Z(z)ot времени t = t2~tl 10.7. Моделирование фазовых переходов методом молекулярной динамики Анализ потенциала Лейнарда-Джонсона, представленного на рис. 10.20, позволяет сделать вывод о том, что в одномерном случае частица, находя- щая в этом потенциале, может совершать два вида движений: при Е < 0 фи- нитное (между точками остановки Х2, являющихся корнями уравнения J7(xj,x2)= Е), при Е > 0 - инфинитное (имеется одна точка остановки Х]). Следовательно, если предположить, что при достижении точки остановки частица получает извне дополнительную кинетическую энергию (например, за счет толчка), то с течением времени полная энергия частицы будет воз- растать. Когда ее значение станет положительным, произойдет качествен- ное изменение: движение из финитного станет инфинитным (произойдет «фазовый переход»). Ч—1576 321
Компьютерное моделирование физических процессов в пакете МА TLAB Рис. 10.20. К объяснению причин финитного и инфинитного движений Проведя аналогию между одномерным движением частицы в потенциале Лейнарда-Джонсона и поведением статистической системы, состоящей из большого количества частиц, можно предположить возникновение качест- венных изменений состояния рассматриваемой системы при изменении ее внутренней энергии. Движение частицы, полная энергия которой положи- тельна, становится инфинитным, т. е. частица получит возможность пере- мещаться по всему объему статистической системы. Если движение всех частиц системы, изначально совершавших финитное движение (кристалли- ческое состояние), становится инфинитным, можно говорить о фазовом пе- реходе (система переходит из кристаллического состояния в жидкость). Полная энергия статистической системы есть сумма кинетических энер- гий всех частиц и потенциальной энергии, вычисляемой суммированием энергий парного взаимодействия частиц (10.1). Следовательно, ее величи- на зависит от двух параметров, задаваемых в момент времени t - 0: вели- чины максимальной скорости и расстояния между частицами, т. е. началь- ной плотности системы. Для исследования зависимости полной энергии системы от указанных величин, можно использовать функцию initE, описа- ние которой сохранено в файле initE.m. % листинг файла initE.m function [z,E]=initE(Lx,Ly,Nx,Ny,Vmax,k) % функция, возвращающая начальную конфигурацию системы % Lx - ширина МД-ячейки % Ly - высота МД-ячейки % Nx - ширина начальной ячейки % Ny - высота начальной ячейки % Vmax - максимальное значение скорости % к - коэффициент, определяющий начальную плотность системы Pos_row=Ly/(Ny+l); Pos_col=Lx/(Nx+l); N=Nx*Ny; 322
10. Моделирование систем, состоящих из большого числа частиц i=l; for Rows=l:Ny for Col=l:Nx x(i)=Pos_col*Col/2*k; y(i)=Pos_row*Rows/2*k; Vx(i)=Vmax*(2*rand(l)-l); Vy(i)=Vmax*(2*rand(l)-l); i=i+l; end; end; V x_full=mean( V x); V y_full=mean( V y); i=l:N; Vx(i)=Vx(i)-Vx_full; Vy(i)=Vy(i)-Vy_full; Ep=0; for i=l:N-l for j=i+l:N Dx=x(i)-x(j); if abs(Dx)>Lx/2 Dx=Dx-sign(Dx)*Lx; end; Dy=y(i)-y(j); if abs(Dy)>Ly/2 Dy=Dy-sign(Dy)*Ly; end; r=(DxA2+DyA2).A0.5; Ep=Ep+4*(l/r.A12-l/r.A6); end; end; z=cat(2,x',y',Vx',Vy'); Ek=0; for i=l:N Ek=Ek+0.5*(Vx(i)A2+Vy(i)A2); end; E=Ep+Ek; Задача 10.18 Исследуйте, как зависит полная энергия системы в момент времени t = 0 от плотности частиц и суммарной кинетической энергии. 323
Компьютерное моделирование физических процессов в пакете MATLAB Задача 10.19 Исследуйте поведение статистической системы, имеющей следующие параметры Nx=5, Ny=5, Lx=8, Ly=8, Vmax-2, k=l.6. Выберите шаг ин- тегрирования dr равным 5-IO'4 и найдите решение уравнений движения на протяжении, по крайней мере, 2-104 шагов по времени. 1. Чему равно значение полной энергии системы в момент времени t = О? 2. Проанализируйте форму мгновенных конфигураций статистической системы в различные моменты времени. Как ведет себя система при данных начальных условиях? 3. Проанализируйте зависимости радиусов-векторов частиц от времени. 4. Оцените время достижения системой равновесного состояния. Какой критерий достижения равновесия вы использовали? 5. Постройте зависимости \R{t^ и Z(t) в равновесном состоянии. 6. Сравните зависимости ’7?(?)|2, Z(t) с аналогичными зависимостями, по- лученными в предыдущем разделе. Задача 10.20 Исследуйте поведение статистической системы при увеличении температуры, достигаемом последовательным увеличением значения Vmax, ответив на вопросы, поставленные в задаче 10.20. Удалось ли вам пронаблюдать фазовый переход кристаллическое состояние -жид- кость -газ? Задача 10.21 Решите задачи 10.20, 10.21 для статистической системы, имеющей следующие параметры Nx=7, Ny=7, Lx=20, Ly=20. При каких значениях начальной плотности и максимальной скорости Vmax рассматриваемая система будет находиться в кристаллическом состояни?. Как проте- кает фазовый переход в рассматриваемой системе? 10.8. Заключение В данной главе даны основные сведения о методе молекулярной дина- мики, показано, что его использование даже для двумерной системы с не- большим количеством частиц позволяет выявить на качественном уровне ряд основных свойств статистических систем, ввести некоторые понятия кинетической теории переноса в жидкостях и газах. Для получения количе- ственных результатов требуется моделировать трехмерные системы, со- стоящие из большого числа частиц, что с неизбежностью приводи! к увели- 324
10. Моделирование систем, состоящих из большого числа частиц чению времени счета. Наибольшие временные затраты приходятся на фор- мирование равновесного состояния и расчет сил и энергии. Для сокращения временных затрат используются различные подходы. Их подробное обсуж- дение, выходящее за рамки нашей книги, заинтересованный читатель может найти в [8, 9]. Там же приведен обширный список литературы, посвященной различным вопросам, связанным с методом МД. ЛИТЕРАТУРА 1. Рейф Ф. Статистическая физика. М.: Наука, 1972. 2. Матвеев А. Н. Молекулярная физика. М.: Высшая школа, 1981. 3. Ландау Л. Д., Лифшиц Е. М. Статистическая физика. Часть 1. М.: Наука, 1976. 4. Климонтович Ю. Л. Статистическая физика. М.: Наука, 1982. 5. Румер Ю. Б. Рывкин М. Ш. Термодинамика, статистическая физика и кинетика. М.: Наука, 1977. 6. Ландау Л. Д., Лифшиц Е. М. Квантовая механика. Нерелятивистская теория. М.: Нау- ка, 1974. 7. Гулд X., Тобочник Я. Компьютерное моделирование в физике. М.: Мир, 1990. 8. Хеерман Д. В. Методы компьютерного эксперимента в теоретической физике. М.: Мир, 1990. 9. Лагарьков А. Н., Сергеев В. М. Метод молекулярной динамики в статистической физике// Успехи физических наук, 1978. Т. 125. Вып. 3. С. 400—448. 325
Глава 11 МЕТОДЫ МОНТЕ-КАРЛО 11.1. Введение Системы с большим числом степеней свободы, примеры которых мы начали рассматривать в предыдущей главе, представляют значительный ин- терес для физики. Вычисление термодинамических характеристик таких систем зачастую требует вычисления интегралов большой размерности. На- пример, классическая функция распределения неидеального газа, находяще- гося при температуре Т (измеряемой в энергетических единицах) и состоя- щего из N частиц с потенциалом попарного взаимодействия .|), про- порциональна ЗМ-мерному интегралу с 3 3 Z=\d\-d3rNe . (11.1) За исключением очень малых значений N прямое вычисление интеграла (11.1) из-за большого объема вычислительных операций не представляется возможным. Отмеченное обстоятельство определило необходимость разра- ботки более эффективных методов вычислений многомерным интегралов, к которым относятся методы Монте-Карло. Основная идея метода состоит в замене вычисления подынтегральной функции в каждом узле пространст- венной сетки, число которых для достижения требуемой точности должно быть велико, ее вычислением только для значений абсцисс, являющихся ре- презентативной случайной выборкой. (Ситуация в данном случае аналогич- на ситуации с предсказанием результатов выборов путем опроса небольшо- го количества избирателей). Метод Монте-Карло оказывается весьма эф- фективным при решении различных типов задач статистической физики и квантовой механики. 11.2. Численные методы интегрирования функций, зависящих от одной переменной Предваряя обсуждение метода Монте-Карло, ознакомимся с известными численными методами, применяемыми для интегрирования функций, зави- сящих от одной переменной. Данные методы основаны на геометрической интерпретации определенного интеграла
11. Методы Монте-Карло b F = ^f(x)dx, (11.2) как площади фигуры, ограниченной графиком функции /(х) и прямыми х = а , х -Ь (рис. 11.1). Разделим отрезок [а,Ь] на N рав- ных отрезков длиной Дх , где Дх = ^^. (11.3) Рис. 11.1. К определению определенного интеграла Тогда координата правого конца i-ro отрезка определяется по формуле X; = х0 + 1Дх , (11.4) где х0 = а , i= 0,1,... N . Простейшая оценка площади под кривой /(х) может быть получена, как сумма площадей прямоугольников, одна из сторон которого совпадает с [х;,х(+1] отрезком, а высота равна значению функции в точке х; (метод ле- вых прямоугольников) (рис. 11.2) или в точке хМ1 (метод правых прямо- угольников) (рис. 11.3). прямоугольников. Погрешность вычисления значения интеграла на каждом шаге показана закрашенными фигурами прямоугольников. Погрешность вычисления значения интеграла на каждом шаге показана закрашенными фигурами Значение определенного интеграла вычисляется по формулам N-A 1=0 (11.5) 327
Компьютерное моделирование физических процессов в пакете МА TLAB N (Н-6) 1=1 для методов левых и правых прямоугольников соответственно. Задача 11.1 Вычислите значения определенных интегралов на интервале [0,тг/2], выбрав в качестве подынтегральных функций функции f\(x) = sin(x), /2(х) = cos(x). Используйте метод левых и правых прямоугольников. 1. Сравните численные значения определенных интегралов, полученные ме- тодом левых и правых прямоугольников. 2. Вычислите точное значения определенных интегралов. Сравните точные и численные значения определенных интегралов, оцените погрешность значений определенных интегралов, найденных численно. 3. Исследуйте зависимость точности значения определенного интеграла от количества точек N. Постройте графики зависимости погрешности от числа точек N и шага интегрирования Дх. Объясните полученные ре- зультаты. Используя метод наименьших квадратов, попробуйте подоб- рать функцию, описывающую зависимость погрешности от числа то- чек N и шага интегрирования &х. Задача 11.2 Решите задачу 11.1 для интервала интегрирования^,тг]. Сравните по- лученные результаты с результатами задачи 11.1. Задача 11.3 Одна из известных модификаций метода прямоугольника заключается в вычислении fix) в средней точке каждого отрезка. Получите вычисли- тельную формулу для данной модификации метода прямоугольника. Ис- пользуя найденную формулу, решите задачи 11.1, 11.2. Сравните по- грешности вычисления определенного интеграла методом прямоуголь- ников и методом средней точки. Задача 11.4 Значение определенного интеграла зависит от подынтегральной функ- ции и пределов интегрирования. Если в интеграле (11.2) нижний предел остается постоянным, а в качестве верхнего предела выбрана некото- рая переменная у, то F является функцией от у (интеграл с переменным верхним пределом) Y F(y) = j/(x)Jx. (11.7) а 328
11. Методы Монте-Карло 1. Для функций/,(х), Л(х) из задачи 11.1 вычислите на интервале [0; я]зна- чения функций FI 2(y) и отобразите их графически. 2. Для заданных функций fi(x), Д(х) получите аналитические выражения для функций FI2(y), вычислив интеграл (11.7). Постройте графики функций Fi.2(y). 3. Сравните значения функций F/j(y), найденные численно, с соответст- вующими значениями, вычисленными по аналитической формуле. Оце- ните погрешность численного решения. 4. Постройте график зависимости величины погрешности от переменной у. Объясните полученный результат. Можно повысить точность вычисления определенного интеграла, если заменять реальную функцию на каждом интервале [х(,х(+1], i = 0,1, ... N-l, отрезком прямой, проходящей через точки с координатами (х/> /U-)) > (*,+1 ,/(х,+1)) (линейная интерполяция). Искомый определен- N-\ ный интеграл определяется как сумма площадей всех трапеций: W-1 Г N-1 Fn = ^э^х'^ + ^х^Ах = of(xo)+^f(xi)+^f(xN) Ах-(11-8) 1=0 L <=1 J Задача 11.5 Решите задачи 11.1, 11.3, 11.4, используя для вычисления интеграла формулу трапеций (11.8). Сравните погрешности нахождения опреде- ленного интеграла методом прямоугольников и методом трапеций. Сравните погрешности нахождения значений интеграла с переменным верхним пределом методом прямоугольников и методом трапеций. Более высокая точность вычисления интегралов обеспечивается при использовании параболической интерполяции (полиномом второй сте- пени) по трем соседним точкам: у-ах2 +Ьх + с. (Н-9) Для нахождения коэффициентов а, Ь, с полинома, проходящего через точки (х0,у0), (хр)’]), (х2,У2). нужно найти решение следующей сис- темы линейных уравнений: у0 = ахц +Ьх0 +с yt = ах2+bxt+с , (11.10) y2 = ах2 +Ьх2 +с относительно неизвестных а, Ь, с. Решив систему (11.10) относительно неизвестных а, Ь, с любым из- вестным методом (например, Крамера), подставив найденные выраже- ния в (11.9) и выполнив элементарные преобразования, получаем 329
Компьютерное моделирование физических процессов в пакете MATLAB Л, - Л, (х ~~ Х1 Xх ~~ х2 ) , „ (х-хо)(х-х2) (x0-Xi)(x0-x2) (xi-xJUi-xJ + У2 (x-XpXx-Xj) 2 (х2 - х0 Хх2 - Xj) Площадь под параболой у = у(х) на интервале [х0,х2] находится посредством элементарного интегрирования (11.11): Л) =|(>'о+4}'1+>'2)Дх> (И-12) где Ах = Xj - х0 = х2 - Х|. Искомый определенный интеграл находится как площадь всех параболических сегментов (формула Симпсона): К :=|l/(xo) + 4/(xi) + 2/(x2) + 4/(x3) + ... + 2f(*N-г) + 4/(xjv-i ) + f(xN )]Дх Обратите внимание на то обстоятельство, что в формуле Симпсона N должно быть четным числом. Аналитические оценки погрешности описанных методов интегрирова- ния приведены в приложении 2.1. Задача 11.6 Решите задачи 11.1, 11.3, 11.4, используя для вычисления интеграла формулу Симпсона (11.13). Сравните погрешности нахождения опреде- ленного интеграла методом трапеций и методом Симпсона. Сравните погрешности нахождения значений интеграла с переменным верхним пределом методом трапеций и методом Симпсона. 11.3. Основы метода Монте-Карло Проиллюстрируем идеи метода Монте-Карло на примере вычисления определенного интеграла от функции, зависящей от одной переменной. Пусть нам необходимо вычислить интеграл (11.2) от некоторой заданной функции /(х) на интервале [а,/?]. В предыдущем разделе мы рассмотрели несколько различных формул интегрирования, в которых использовались значения функции Дх), вычисляемые в равноотстоящих точках. Однако можно использовать и другой подход, суть которого легко понять из сле- дующего примера. 330
11. Методы Монте-Карло Представим себе прямоугольник высотой Н и длиной b — а, такой, что функция /(х) целиком лежит внутри данного прямоугольника (рис. 11.4). Сгенерируем N пар случайных чисел равномерно распределенных в данном прямоугольнике: a<xt <b,0< у, <Н . (11.14) Рис. 11.4. К объяснению алгоритма вычисления определенного интеграла методом Монте-Карло Тогда доля точек (х,, у,-), удовлетворяющих условию у,- < /(х,), являет- ся оценкой отношения интеграла от функции /(х) к площади рассматри- ваемого прямоугольника. Следовательно, оценка интеграла в данном методе может быть получена по формуле F"-An- (11.15) где ns — число точек, удовлетворяющих условию у, < /(х,), N — полное ко- . личество точек, А — площадь прямоугольника. В пакете MATLAB описанный алгоритм реализуется следующей последовательностью команд: % координаты нижнего левого угла прямоугольника » Xmin=(); » Ymin=(); % координаты правого верхнего узла прямоугольника » Xmax=pi/2; » Ymax=1.5; » N=1000; % число точек случайной последовательности % вычисление последовательности случайных чисел равномерно % распределенных на интервале [Xmin.Xmax] » for i=l:N x(i)=Xmin+(Xmax-Xmin)*rand(l); end; % вычисление последовательности случайных чисел равномерно % распределенных на интервале [Ymin.Ymax] » for i=l:N y(i)=Ymin+(Ymax-Ymin)*rand(l); end; » f=inline('sin(x)', 'x'); % задание подынтегральной функции 331
Компьютерное моделирование физических процессов в пакете MATLAB % подсчет точек, лежащих ниже графика функции f(x) » for i=l:N if f(x(i))>=y(i) s(i)=l; else s(i)=0; end; end; »S=sum(s); » A=(Xmax-Xmin)*(Ymax-Ymin); % площадь прямоугольника » A*S/N % % вычисление значения интеграла ans = 1.0344 В приведенной выше последовательности команд мы использовали функцию inline, которая преобразует первый аргумент функции, являю- щийся строковым выражением, в описание функции, зависящей от пере- менных, стоящих на втором и последующих местах в списке формальных параметров функции. Например, для задания функции F(x,y) = sin(x+y) не- обходимо ввести следующую команду: » F=inline('sin(x+y)'х', 'у') F= Inline function: f(x,y) = sin(x+y) Задача 11.7 Дополните описанный выше документ блоком, позволяющим отобра- жать на одном рисунке график функции и точки, распределенные слу- чайным образом. Задача 11.8 1. Сравните значение определенного интеграла, полученное с помощью опи- санного выше алгоритма, с его точным значением и оцените погреш- ность вычислений. 2. Не менее 10 раз пересчитайте документ, фиксируя при этом получаемые значения определенного интеграла. Оцените среднее значение получен- ной последовательности значений и ее дисперсию. Сравните полученные результаты с точным значением определенного интеграла. 3. Выполните задание 2 для различного числа точек случайной последова- тельности N. Постройте график зависимости смещения значения опреде- ленного интеграла (смещение — разность между точным и вычисленным 332
11. Методы Монте-Карло значением определенного интеграла) от N. Постройте график зависимо- сти дисперсии от N. Используя метод наименьших квадратов, попро- буйте подобрать функцию, описывающую зависимость дисперсии от числа точек N. Можно предложить и другой путь вычисления определенного интегра- ла, рассматривая его как среднее значение функции fix) на отрезке [fl.fe] •• 1 N FN=(b-a)-Yf(Xi), (11.16) где Xj — последовательность случайных чисел с равномерным законом распределения на отрезке [а,Ь]. Описанный алгоритм реализуется в пакете MATLAB выполнением сле- дующей последовательности команд: % Задание координат концов отрезка интегрирования » Xmin=0; » Xmax=pi/2; » N=1000; % длина случайной последовательности % генерация случайной последовательности » for i=l:N x(i)=Xmin+(Xmax-Xmin)*rand(l); end; » f=inline('sin(x)'); % задание подынтегральной функции % вычисление определенного интеграла »i=l:N; » s(i)=f(x(i)); »(Xmax-Xmin)*mean(s) ans = 0.9808 Задача 11.9 Решите задачу 11.9, используя для вычисления значения интеграла формулу (11.16). Аналитическая оценка погрешности формулы (11.16) может быть по- лучена, если рассматривать последовательность значений fi = /(х,). Дисперсия <т2 последовательности определяется выражением (11.17) 333
Компьютерное моделирование физических процессов в пакете MATLAB где ^=42>(х-) (11Л8) и 1 N Тогда в соответствии с центральной предельной теоремой теории ве- роятностей дисперсия значения определенного интеграла определяется выражением 1 1Г1 N (1 N У’ = M м~£/(х')2" (1L20) N N N N ~-f Из (11.20) вытекают два следствия, весьма важных для практического вычисления интегралов методом Монте-Карло. Во-первых, ошибка вычисления интеграла aF в оценке значения интеграла уменьшается как /V"1/2, т. е. очень медленно. (Сравните данный результат с вашими результатами, полученными в задаче 11.9.) Из-за отмеченной особенно- сти значения определенных интегралов от функций одной переменной, вычисленные методом Монте-Карло, оказываются менее точными, чем, например, результаты, получаемые методом трапеций, в котором ошибка убывает как N~2 (см. прил. 2.1). Однако для многомерных инте- гралов данное преимущество исчезает. Второй важный момент, вытекающий из (11.19), состоит в том, что точность оценки определенного интеграла зависит от дисперсии функ- ции <Ту, т. е. функция по возможности должна изменяться, как можно меньше. Для уменьшения дисперсии, и, следовательно, повышения точ- ности метода умножим и разделим подынтегральную функцию на по- ложительную весовую функцию w(x), нормированную условием ь Jw(x)dx = l. (11.21) а В результате интеграл (11.2) можно переписать в виде 334
11. Методы Монте-Карло F=U^w(x)dx. (11.22) J МА) а Проведем замену переменной х на y(x) = j^X- (11-23) а так что — = w(x), у(х = а) = 0, у(х = а) = 1 . (11.24) dx Тогда интеграл (11.22) становится равным = (П-25> J w(x(y)) а Вычисление значения данного интеграла проводится так же, как это было сделано выше, усреднением значений /(*(?))/*4х(у)) по случайной выборке точек у, равномерно распределенных на интервале [a, ft]: F«—У(11.26) Из (11.26) видно, что если выбрать такую функцию w, которая ведет себя подобно функции f (т. е. она велика там, где велика f и мала там, где мала f), то подынтегральная функция f/w в (11.26) может быть сделана «квазипостоянной». Описанная процедура позволяет умень- шить дисперсию оценки интеграла (11.26) при условии правильного вы- бора подходящей весовой функции w и возможности обратить соот- ношение (11.23) для получения зависимости х(у). Задача 11.10 1. Вычислите методом Монте-Карло интеграл от функции 1 + х на интервале [0,1]. Сравните полученное значение интеграла с его точ- ным значением. 2. Выберите в качестве весовой функцию w(x) = ------—-. Убедитесь *т ~~ Л*Х 1 в том, что данная функции удовлетворяет условию (11.21). Постройте 335
Компьютерное моделирование физических процессов в пакете МА TLAB графики функций w(x), f(x)/w(x). Сравните область значений функций f(x), f(x)/w(x). Найдите явное выражение для функции у(х), вычислив интеграл (11.23) для выбранной функции w(x). Найдите функцию х=х(у), обратив функцию у - у(х). Получите аналитические выраже- ния для функций /(х(у)), w(x(y)). Сгенерируйте последовательность случайных чисел с равномерным законом распределения на интервале [0,1]. Вычислите значение определенного интеграла в соответствии с . (11.26). Оцените точность вычисленного значения интеграла, сравнив его с точным значением. Для понимания с наиболее общих позиций, почему замена переменных оказывается полезной, необходимо учесть, что равномерное распределение точек по у, соответствует распределению точек по х с плотностью вероятно- сти dy/dx = w(x), при этом w{x)dx— вероятность того, что данное число принадлежит отрезку [х,х+Дх]. Условие нормировки задается выражением (11.20). Это означает, что точки сгущаются около наиболее «важных» зна- чений х, где w (и, как ожидается, и f ) велика, и что вычисление подынте- гральной функции в «несущественных точках», где w и f малы, составляет малую часть от всего объема вычислений. Применим описанный подход для генерации чисел с заданным законом распределения w(x) на интервале [а,£>]. Обозначим через г случайное число, равномерно распределенное на интервале [0,1] с плотностью вероятности . . fl, если г е [0,1] PuW= п /ГП11 (П-27) [0, если г £ [0,1] Наша цель состоит в отыскании соотношения между х и г такого, что если г распределена по закону (11.27), х будет распределена с плотностью vv(x). Для получения данного соотношения сначала вычислим интеграл Р(х) = [w(<*)dg. (11.28) Здесь функция Р(х) - интегральная функция распределения, равная веро- ятности получения числа меньшего или равного х. В геометрической интер- претации Р(х) - это часть площади фигуры под кривой плотности вероят- ности слева от х. Покажем, что обращение выражения Р(х) = г (11.29) 336
11. Методы Монте-Карло приводит к искомому соотношению х=Р !(х). (11.30) Так как переменная г распределена на отрезке [0,1] равномерно, то функция Р(х), связанная с г соотношением (11.29), также распределена равномерно. Вероятность того, что Р(х) принадлежит отрезку [Р(х), Р(х) + dP(x)], равна dP(x). С другой стороны, в соответствии с (11.29) dP(x) = dr. (11.31) Соотношение между dP(x) и dx найдем, продифференцировав выраже- ние (11.28): dP^ = p(x) (11.32) ах Отсюда, используя (11.27), имеем для 0 < г < 1 dP(x) = w(x)dx= pu(r)dr . (11.33) Из выражения (11.33) видно, что переменная х распределена с требуемой плотностью вероятности р(х). Таким образом, генерация чисел с заданным законом распределения проводится в соответствии со следующим алгоритмом. 1. Генерация случайного числа г. 2. Нахождение соответствующего значения согласно (11.30). Применим описанный алгоритм для получения случайных чисел, равно- мерно распределенных на отрезке [а,Ь]. Требуемая плотность вероятности равна р(*)= ----, если хе [а, b] Ь-а 0, еслих£[а,Ь] (11.34) Функцию интегрального распределения вероятности Р(х) на отрезке [а,Ь] находим, подставив (11.34) в (11.28) и вычислив интеграл. В результа- те получим Р(х) = х-а Ь-а (11.35) Далее подставляем (11.35) в (11.29) х-а Ь-а (11.36) 337
Компьютерное моделирование физических процессов в пакете МА TLAB откуда находим искомое соотношение x=p-\r) = a + (b-a)-r. (11.37) Несмотря на то, что метод неполного интеграла действует безошибочно, для его применения приходится находить обратную функцию (см. (11.30)), которая может быть получена только для сравнительно небольшого класса функций. Кроме того, может оказаться, что интеграл (11.28) не берется ана- литически. Предположим, что нам известна таблица значений , при ко- торых неполный интеграл от и>(х) принимает ряд значений с равномерным шагом на отрезке [а,Ь],т. е. у- = j/M , j = 0,1,...,М. Тогда Xj (И.38) о В результате значения Xj для целых j, выбираемых с равной вероятно- стью из набора чисел 0,1,...М, будут аппроксимировать требуемое распре- деление. (Для концевых точек j = 0 и j = М требуется отдельное рассмот- рение.) Для нахождения Xj , проинтегрируем численно дифференциальное уравнение (11.32), применив простую дискретизацию Ул1~Уу =w(xX (11.39) Так как уj+1 - у • = \jM , получаем удобное рекуррентное соотношение для нахождения Xj: (11.40) Другим удобным методом одно- и многомерных случай- ных величин с неравномерным законом распределения являет- ся метод отбора-отказа (фон Нейман). Его геометрическая интерпретация представлена на рис. 11.5. Рис. 11.5. Геометрическая интерпретация метода отбора-отказа 338
11. Методы Монте-Карло Предположим, что необходимо сгенерировать случайную величину х, распределенную на интервале [0,1] с вероятностью w(x), и пусть w'(x) - положительная функция, удовлетворяющая во всей области интегрирования условию и>'(х) > w(x). (Заметим, что в даннО1М случае определенный инте- грал от w' будет больше 1). Бывает удобно (хотя и не всегда полезно) вы- брать w' константой, превышающей функции w'(x) в рассматриваемой об- ласти. Если теперь сгенерировать точки в двумерной области, равномерно заполняющие площадь под кривой w'(x), а затем отобрать только точки, лежащие под кривой w(x), то последние будут распределены с плотностью вероятности w(x). На практике данный метод реализуется следующей по- следовательностью действий: 1. Берутся две случайные величины х,, у у, определяющие положение расположения точки в двумерном пространстве под функцией w'(x). Зна- чение х, принимается в том случае, если у^и^х,). 2. Если точка отвергается, то генерируется следующая пара чисел х,, у у. Отметим, что данный метод эффективен только в том случае, когда функция сравнения w'(x) выбирается близкой к w(x). В противном случае на генерацию бесполезных отброшенных точек будет затрачиваться много машинного времени. Для генерации множества точек, равномерно распределенных под кри- вой и>'(х), можно использовать следующий алгоритм. 1. Взять два случайных числа х, е [0,1], у,- е [0,max(w'(x))], 2. Принять значение (х,-,у,), если у,- < и/(х(). Задача 11.11 Сгенерирйте методом отбора-отказа выборку точек на отрезке [0,1], распределенную по закону vv(x) = — 11- — х I, и с помощью данной вы- борки оцените интеграл от функции /(х) = —на интервале [0,1]. 1 + х Рассмотренный выше метод вычисления одномерных интегралов легко обобщается для вычисления d-мерных интегралов вида F - х : 339
Компьютерное моделирование физических процессов в пакете MATLAB (11-41) N *r-f 1=1 где все координаты случайных векторов Xj выбираются независимо друг от друга. В качестве примера расчета многомерных интегралов методом Монте- Карло рассмотрим задачу о нахождении центра масс и момента инерции двумерных твердых тел, для которых известен закон распределения плотно- сти р(х, у). Масса dm малого элемента площади dxdy равна dm = р( х, y)dxdy, (11.42) а полная масса тела М = ||р[х, y)dxdy . (11.43) Пределы интегрирования в (11.29) определяются геометрией тела. Коор- динаты центра масс X, Y определяются в соответствии с формулами X = ту [ f хр{х, y)dxdy , (11.44) М Y = Л? И УР^Х' y^Xdy ’ (П-45) Момент инерции при вращении двумерного тела относительно оси Z равен /г = || (х2 + у2 )р{х, y)dxdy. (11.46) Вычисление М, X, У, Iz осуществляется в соответствии с формулами Л/д, = (х2-х1)(у2-у1)~Ур(х,,у,), /V -Гт 1=1 (11-47) 1 N XN = (х2 ~х1Х>’2 ~У1)~- /V 1=1 (11.48) 1 N = (-^2 - Х1)( ?2 - У1) X У'Р-Х‘ (11.49) 1 N 1 = (*2 - *1X У2 - У1) 77 У (х? + У,2 )р(х, > у,-) > /V (11.50) 340
11. Методы Монте-Карло где последовательности случайных чисел Х] < х,- < х2, у, < у; < у2 генери- руются независимо друг от друга. Задача 11.12 1. Для диска, изображенного на рис. 11.6, вычислите методом Монте- Карло полную массу, центр масс и момент инерции диска относительно оси oL. Примите внешний радиус диска г2 = 5, радиус круговой полости =1.5. Центр круговой полости находится в точке с координатами (0,2.5). Считать плотность диска однородной и равной 1. 2. Вычислите полную массу, центр масс и момент инерции диска относи- тельно оси Z с помощью средств интегрирования пакета MATLAB. Сравните полученные результаты с результатами, полученными мето- дом Монте-Карло. 3. Повторите расчеты, выпол- ненные в пп. 1, 2, с плотно- стью р(х,у) = 1 + ~(х2 + у2), где координаты х, у отсчитывают- ся от центра большого диска. Рис. 11.6. Диск, рассматриваемый в задаче 11.12 Рассмотренный метод замены переменной также может быть обобщен и на многомерный случай. При этом весовой функции и>(х), нормированной на единицу, будет соответствовать новая переменная интегрирования у(х) с якобианом преобразования ру/бхЬ В общем случае найти обратную функцию х(у) трудно (если вообще возможно), поэтому удобнее представ- лять эту замену переменных в многомерном случае как операцию генериро- вания последовательности Х, (у, ) с плотностью вероятности w(y). Решив задачи 11.11, 11.12, можно убедиться, что метод Монте-Карло да- ет результаты, достаточно близкие к результатам, получаемым традицион- ными методами. Однако для достижения заданной точности вычислений в методе Монте-Карло приходится использовать значительно ббльшое коли- чество частиц. Преимущества метода Монте-Карло проявляются при вы- числении многомерных интегралов. Зададимся общим числом точек N, в которых проводится вычисление определенного интеграла, и сравним эф- фективность детерминированных и случайных методов интегрирования. 341
Компьютерное моделирование физических процессов в пакете MATLAB В традиционном методе, например, в многомерном аналоге метода трапе- ций при заданном числе точек N, проводится разбиение каждого отрезка, параллельного соответствующей координатной оси d-мерного пространст- ва, на №'/rf интервалов длиной h ~ . При этом ошибка интегрирования по ячейке объемом hd оказывается пропорциональной o(lid*2} (см. прил. 2.1), поэтому суммарная погрешность интегрирования по всем ячей- кам в традиционном методе равна No(hd*2)=o(N~2ld\ (11.51) Из (11.48) видно, что при больших d эта погрешность убывает очень медленно. С другой стороны, уравнение (11.20) показывает, что ошибка ме- тода Монте-Карло уменьшается как N~^2 и не зависит от d. Если предпо- ложить, что оба численных множителя в этих оценках порядка единицы, то легко увидеть, что точность метода Монте-Карло становится более эффек- тивным при d > 4. Конечно, точная оценка зависит от используемой тради- ционной схемы интегрирования или от того, насколько удачно выбрана ве- совая функция в методе Монте-Карло. Однако основной результат состоит в том, что при больших d скорости уменьшения ошибки с ростом N в детер- минированных и стохастических методах существенно различаются. 11.4. Алгоритм генерации случайных чисел с равномерным законом распределения В предыдущем разделе мы обсудили вопрос о вычислении определен- ных интегралов методом Монте-Карло, который состоит из двух основных операций: 1) генерации точек, распределенных в области интегрирования с заданной плотностью вероятности w(x), 2) вычисления значения функции /(x)/w(x) в этих точках. При этом алгоритм генерации случайных чисел с заданным законом распределения основан на использовании случайных чи- сел с равномерным законом распределения. Следовательно, точность вы- числения интеграла зависит не только от количества точек, используемых для вычисления значения интеграла, но и от качества работы генератора случайных чисел. В этом разделе рассматриваются основные алгоритмы и характеристики генерации случайных чисел. Для применения в вычислительных экспериментах генератор должен обладать следующими характеристиками: — хорошими вычислительными свойствами, — эффективностью, 342
11. Методы Монте-Карло — большим периодом, — воспроизводимостью. Первыми и наиболее важными из рассматриваемых характеристик явля- ются, конечно, статистические свойства. Известен пример, когда использо- вание плохого генератора случайных чисел в методе молекулярной динами- ки привело к обнаружению особого поведения системы определенного раз- мера. Результаты независимого исследования, проведенного другими авторами, не подтвердили этой особенности. Это позволило сделать вывод о том, что причиной обнаруженной особенности явилось плохое качество ге- нератора случайных чисел [7]. Также очень важна вычислительная эффективность генератора. Про- граммы для компьютерных экспериментов требуют огромного числа случайных чисел. Для получения порядка 1О10 чисел за ограниченное время одно случайное число должно вычисляться очень быстро. Кроме того, важно требование на размер необходимой для работы генератора памяти компьютера. Генератор должен быть достаточно быстрым и эко- номичным по памяти. В действительности, генерируются не случайные числа, а последова- тельности псевдослучайных чисел, поэтому последовательность генерируе- мых чисел после определенного количества шагов повторяет саму себя. Ее период должен быть заведомо больше длины, необходимой для последова- тельности случайных чисел. Опасность представляет также исчерпание по- следовательности случайных чисел или даже приближение конца ее цикла. Это также приводит к неверным результатам. Существуют различные способы генерации на компьютере случайных чисел [8]. Далее мы рассмотрим, в первую очередь, наиболее широко рас- пространенные в настоящее время методы, объединенные общим названием «линейные конгруэнтные генераторы». Они производят определенным спо- собом при задании начального целого числа последовательность случайных чисел с равномерным законом распределения. Несомненным достоинством генераторов данного типа является их воспроизводимость. Линейный конгруэнтный генератор выдает последовательность произ- вольных целых чисел, которые можно привести к единичному интервалу [0,1]. Для этого достаточно разделить все члены последовательности на максимальное возможное целое число. Ненормированная последователь- ность целых чисел, однако, предпочтительнее по причине большей вычис- лительной эффективности алгоритма. 343
Компьютерное моделирование физических процессов в пакете МА TLAB Алгоритм линейного конгруэнтного генератора (Лемер, 1948) Пусть т, а, с, хо — причем т > хо, т > а, т > с и xq > 0, а > 0, с > 0. Тогда псевдослучайное число последовательности х, получается из предшествующего ему числа х,_] как х( =(а-х,+c)modw . (11.52) (Здесь mod - функция деления по модулю, т. е. функция получения остатка от деления одного числа на другое. Например 19 mod 4 = 3.) При соответствующем выборе чисел т, а, с, хо алгоритм № 1 выдает по- следовательность случайных чисел. При этом генерируемая последователь- ность имеет повторяющийся цикл или период, не превышающий т чисел. Для получения достоверных результатов при моделировании физических систем необходимо использовать генераторы с максимально большим пе- риодом. Максимальный период достигается при с Ф 0. Такой генератор на- зывается смешанным. Однако, как показала практика, смешанные генерато- ры дают плохие результаты по сравнению с генераторами, у которых с = 0 (мультипликативные генераторы). Отметим, что для обеспечения макси- мального периода мультипликативного конгруэнтного генератора модуль т и множитель а необходимо подбирать специально. Алгоритм линейного конгруэнтного генератора в пакете MATLAB реа- лизуется выполнением следующей последовательности команд: » а=7; » с=7; » ш=55; » х(1)=20; » N=100; » for i=l:N x(i+l)=mod(a*x(i)+c,m); end; »i=l:N+l;plot(i,x,'-kS'); » axis([0 100 0 60]); Результат выполнения приведенной выше последовательности команд представлен на рис. 11.7. Задача 11.13 Исследуйте зависимость периода последовательности случайных чисел, получаемых при использовании различных алгоритмов, от их числовых параметров (параметров: а, с, т). 344
11. Методы Монте-Карло Задача 11.14 1. Модифицируйте программу так, чтобы в качестве начального значения в алгоритме Лемера использовалось случайное число, выдаваемое гене- ратором случайных чисел с равномерным законом распределения пакета MATLAB. Проанализируйте, как это скажется на свойствах генерируе- мой последовательности. 2. Сгенерируйте две последовательности, у которых начальные значения выбираются случайным образом. Вычислите корреляцию между данны- ми последовательностями. Можно ли считать их независимыми? 3. Постройте и сравните гистограммы данных последовательностей. Ка- кой величиной можно охарактеризовать степень неравномерности плотности распределения данных случайных последовательностей? 11.5. Алгоритм Метрополией Несмотря на то, что методы генерации случайных чисел с заданным рас- пределением, рассмотренные в предыдущем разделе, могут оказаться в ряде случаев весьма эффективными, в общем случае весьма сложно, а в боль- шинстве случаев невозможно, провести их обобщение для сложных много- мерных весовых функций. Отмеченное обстоятельство определило необхо- димость разработки других подходов, свободных от указанных недостатков. 345
Компьютерное моделирование физических процессов в пакете МА TLAB Один из общих методов получения произвольного неравномерного рас- пределения вероятности был предложен Метрополисом, Розенблатом и Тэйлером в 1953 г. Метод Метрополиса представляет собой частный случай процедуры выборки по значимости, в которой некоторые возможные вы- борки отбрасываются. Для простоты рассмотрим одномерный вариант метода Метрополиса. Предположим, что мы хотим сгенерировать случайные переменные с про- извольной плотностью вероятности р(х). В методе Метрополиса модели- руется «случайное блуждание» точек {х,}, распределение которых после большого числа шагов асимптотически приближается к распределению ве- роятности р(х). Случайное блуждание определяется заданием вероятности перехода vv(x( —> Xj ) от одного значения х, к другому ху. Можно показать, что достаточным (но не обходимым) условием сходимости распределения x0,xltx2,--- к р(х) является выполнение условие «детального баланса» р(х,- )w(x, -> х; )= р(х; )w(xj -> х,). (11.53) Отметим, что соотношение (11.53) не определяет wfx, ->х ) единствен- ным образом. Рассмотрим простейший вариант, удовлетворяющий условию (11.53): (11.54) / \ р\Л j I и>(х,-> x,J= min 1,——. L m). Предположим, что «пешеход» находится в точке с координатой х„ . Для формирования х,и[: 1. Выбираем случайную координату х( = х„ + 8п , где 8п - случайное число на отрезке [-£,£]. 2. Вычисляем vv= р(х/)/р(х„). 3. Если w > 1, принимаем данный переход и полагаем х„и - xt. 4. Если w < 1, генерируем случайное число г. 5. Если г < w, принимаем данный переход и полагаем х„и = х,. 6. Если пробный переход не принят, то полагаем х„и = хП . При практической реализации метода Метрополиса возникает законо- мерный вопрос о выборе величины пробного шага 8. Для ответа на этот во- прос предположим, что «пешеход» находится в максимуме w, т. е. в точке Хп наиболее вероятного нахождения. Если шаг £велик, то значение w(xt), 346
11. Методы Мопте-Карло будет значительно меньше, чем значение w(Xn), и большинство пробных шагов будут отвергнуты, т. е. выборка окажется неэффективной. Если шаг 8 выбран не достаточно большим, то большинство шагов будет принято, но пешеход не сдвинется достаточно далеко, поэтому выборка также окажется неэффективной. На практике хорошим выбором является такая величина пробного шага, при которой принимается около половины всех пробных шагов. Отметим, что алгоритм Метрополиса не лишен ряда недостатков. Во- первых, последовательные точки выборки х0,Х1,...не являются независи- мыми, что показывает анализ способа их получения: точка х,+1 вероятнее всего оказывается в точке х,-. Это приводит к тому, что точки, имеющие правильное распределение, не будут статистически независимы. Например, окажется неверной оценка дисперсии (11.20) значения интеграла I" w(x)/(x)dx F = ^----------, I w(x)dx вычисляемого путем усреднения значений функции /(х) по точкам слу- чайного блуждания. Данную зависимость можно оценить количественно, вычислив автокорреляционную функцию С(к) = , (И.55) (л2)-а->2 где ( ) означает усреднение по случайным блужданиям, например, N-k = N--k^X> ' 0 L56) 1=1 На практике для устранения этого эффекта следует вычислять интеграл и его дисперсию, используя точки траектории случайного блуждания, раз- деленные таким временным интервалом, чтобы значение автокорреляцион- ной функции не превосходило 0.1. Во-вторых, существующее влияние стартовой точки на значения генери- руемой последовательности, несмотря на то, что в методе Метрополиса лю- бое начальное положение является приемлемым и его результаты не долж- ны от него зависеть. Отмеченное обстоятельство приводит к необходимости отбросить несколько начальных шагов, в течение которых система прихо- дит в «равновесное состояние» (термализуется). На практике стартовую 347
Компьютерное моделирование физических процессов в пакете МЛ TLAB точку х0 выбирают в точке максимума вероятности и'(х). Затем делается несколько термализационных шагов для устранения влияния стартовой точ- ки, и только после этого генерируется выборочная последовательность. Продемонстрируем реализацию алгоритма Метрополиса в пакете MAT- LAB на примере генерации последовательности случайных чисел, имеющих гауссово распределение р(х) = —==!== е 2’5 . Необходимо создать файл V2-7T-5 Metropolis.m, содержащий описание функции Metropolis, возвращающей значения случайной последовательности с требуемым законом распределения. % листинг файла Metropolis.m function z = Metropolis(x,Delta,р) % функция, возвращающая случайное число, вычисленное % в соответствии с алгоритмом Метрополиса % х - координата начальной точки % Delta - максимальное значение пробного шага % р - имя функции, описывающей распределение % плотности вероятности Xt=x+Delta*(2*rand(l)-1); w=p(Xt)/p(x); if w>-l Xnew=Xt; end; if w<l r=rand(l); if r<=w Xnew=Xt; else Xnew=x; end; end; z=Xnew; Далее необходимо выполнить следующую последовательность команд: % задание функции, описывающей закон распределения » p=inline('l/((2*pi*5)A0.5)*exp(-xA2/10)','x'); » N=2*10A4; % число точек случайной последовательности » х(1)=0; % первый член случайной последовательности % вычисление членов случайной последовательности 348
11. Методы Монте-Карло » for i=2:N x(i)=Metropolis(x(i-1 ),0.5,p); end; % визуализация случайной последовательности » figure( 1) ;i=l :N ;plot(i,x,' k'); % вычисление распределения вероятностей » Ni=50; % число интервалов гистограммы » k=l:Ni; » dx=(max(x)-min(x))/(Ni-l); »Interval(k)=min(x)+dx*(k-l); » s=hist(x,Interval); » for j=l:Ni z(j)=min(x)+dx*(j-l); Z(j)=N*p(z(j))*dx; end; % визуализация экспериментального и теоретического % распределения вероятности » figure(2);bar(Interval,s);colormap white » hold on » plot(z,Z,'k') » hold off Результат выполнения описанной последовательности команд представ- лен на рис. 11.8, 11.9. S.---.....,--1---1----1--т----Г--Т----Г--- Рис. 11.8. Последовательность случайных чисел, сгенерированная в соответствии с методом Монте-Карло 349
Задача 11.15 Вычислите автокорреляционную функцию С(к) в соответствии с (11.55). Чему равно значение С(0)? Определите значение к, при котором С(к)< 0.1. Задача 11.16 Модифицируйте функцию Metropolis так, чтобы она возвращала поми- мо значения координаты общее число переходов при вычислении пере- мещения на каждом шаге. Подсчитайте отношение длины случайной последовательности к полному числу шагов. Как зависит данная вели- чина от величины пробного шага. Задача 11.17 Примените алгоритм Метрополией для генерации одномерного нор- мального распределения. Для различных значений пробного шага иссле- дуйте долю принятых пробных шагов, корреляционную функцию (и, сле- довательно, приемлемую частоту выборки) и суммарную эффектив- ность расчета. Воспользуйтесь сгенерированными случайными числами для вычисления интеграла 350
11. Методы Монте-Карло J х~е * 1 2 3 4 5 6 7 8 dx и оцените погрешность полученного значения. Сравните эффектив- ность метода Метрополией с эффективностью расчета методами, рассмотренными в предыдущем разделе. Задача 11.18 1. Используя метод Метрополией, оцените значение интеграла 4 J x2e~xdx. о Постройте график числа посещений «пешеходом» точек х0,хх,...Рав- номерно ли выбирается подынтегральная функция. Если нет, то в какой области изменения функции отсчеты производятся чаще? 2. Вычислите интеграл 4 J x2e~xdx, о используя метод выборки по значимости. ЛИТЕРАТУРА 1. Бахвалов Н. С., Лапин А. В., Чижонков Е. В. Численные методы в задачах и упражнениях. М.: Высшая школа, 2000. 2. Гулд X., Тобочник Я. Компьютерное моделирование в физике. Т. 2. М.: Мир, 1990. 3. Кунин С. Вычислительная физика. М.: Мир, 1992. 4. Тейлор Дж. Введение в теорию ошибок. М.: Мир, 1985. 5. Метод статистических испытаний/Под ред. Ю. А. Шнейдера. М., ГИФМ, 1962. 6. Соболь И, М. Численные методы Монте-Карло. М.: Наука, 1973. 7. Хеерман Д. В. Методы компьютерного эксперимента в теоретической физике. М.: Наука, 1990. 8. Кнут Д. Искусство программирования для ЭВМ. Т. 2. Получисленные алгоритмы. М.: Мир, 1977. 351
Глава 12 СЛУЧАЙНЫЕ БЛУЖДАНИЯ 12.1. Введение Впервые задача о случайных блужданиях была сформулирована в 1906 г. Пирсоном. В первоначальной формулировке требовалось определить, на ка- ком расстоянии от начальной точки будет находиться пешеход, сделав N шагов равной длины в произвольных направлениях. Отметим, что со време- ни постановки задачи в такой формулировке модели случайного блуждания получили широкое распространение в физике, биологии, химии, общест- венных науках. Например, для описания диффузии молекул газа, движения коллоидных взвесей в жидкости, моделирования длинных полимерных це- почек, решения ряда задач квантовой механики и др. В этой и последующих главах рассматриваются модели, для реализации которых используется ме- тод случайных блужданий. 12.2. Одномерные случайные блуждания Рассмотрим идеализированную одномерную задачу о движении пешехо- да, который в момент времени 1 = 0 находится в точке х = 0 (рис. 12.1). »--•---•--•--•---•--•--• j ,v=0 ___» .v Рис. 12.1. К постановке задачи об одномерном случайном блуждании Будем считать, что все шаги имеют одинаковую длину /, а направление каждого следующего шага не зависит от направления предыдущего шага. Предположим, что на каждом шаге по времени пешеход делает шаг вправо с вероятностью р или шаг влево с вероятностью q = 1 - р. Обозначим общее количество шагов, сделанных пешеходом, вправо гц , влево п_ , тогда пол- ное число шагов равно N = nA + и_. Полное смещение пешехода после N шагов равно х = - п_, где -N I <х< NI. Зависимость х: (i=0,...,N) называют реализацией случайного процесса. Совокупность зависимостей х;, имеющих одинаковую длину и начинающихся из одной точки, называ- ют ансамблем реализаций. Необходимо определить вероятность PN(x) то-
12. Случайные блуждания го, что после N шагов пешеход окажется на расстоянии х от начала отсчета. Знание вероятности PN(x) позволяет вычислить среднее смещение (xw) = /£i^(x) (12.1) i=-N и дисперсии (Дх2) = (х2)-(хХ (12.2) где (Дх^ - средний квадрат отклонения N (4р2£г-Ч(Д (12.3) В методе полного перебора количество и вероятность всех блужданий для заданных N и х вычисляются в явном виде. Начнем рассмотрение мето- да случайных блужданий со случая, когда N = 1. Пешеход с вероятностью р может сместиться на один шаг вправо, затем с вероятностью р сделать сле- дующий шаг вправо или с вероятностью q - влево (рис. 12.2). х-~1 х-1 * ч р Рис. 12.2. Случайные одномерные блуждания пешехода при N — 1 Значения (xj) и (х2^, вычисляемые по формулам (12.1) и (12.3), равны 1 (*1} = I ^iPi (Xj) = -lq + lp = (p-q)l, (12.4) i=-l (x2) = I2 = l2q + l2p=(p + q)l2=l2 . (12.5) /--1 Тогда среднеквадратическое отклонение (Лх2/, вычисляемое в соответ- ствии с (12.2), равно (Ах2} = 12 -[(p~q)]2l2 =(1-(р-^))(1+(р + ^))/2 =••• (12.6) = 2q • 2р I2 - 4pql2 Рассмотрим случай N = 2. Предположим, что пешеход, сделав шаг из точки х = 0, оказался в точке х = 1. Вероятность данного события равна р. Так как направление следующего шага пешехода не зависит от направления 12—1576 353
Компьютерное моделирование физических процессов в пакете MATLAB предыдущего, то он может оказаться с вероятностью р2 в точке х = 2 или с вероятностью pq в точке х - 0. Вследствие симметрии задачи аналогичный вывод можно сделать для случая, когда пешеход смещается влево от точки л- = 0. Следовательно, вероятность обнаружить пешехода, сделавшего два шага в точке х = 0, равна 2pq, в точках х = ±2 вероятность равна р2. Для дальнейшего анализа удобно изобразить рассматриваемые смещения пеше- хода графически (рис. 12.3). х=-21 х~0 х=21 ~ ... ф»............ <г * р* Р<1 Рис. 12.3. Случайные одномерные блуждания пешехода при N = 2 Среднее значение (х2) и средний квадрат отклонения вычисляе- мые в соответствии с (12.1) и (12.3), при N = 2 2 (х2) - (^,-) = ~2/<?2 -Iqp + lpq + 2lp2 = 2(р2 -<?2)/ = i=-2 = 2(p-qlp + q)l = 2(p-q)l, (12.7) 2 (х2) = l2YLP2(xd = L^q2 +4p2)=4(q2 + p2)l2. (12.8) i=-2 Подставляя (12.7), (12.8) в (12.2), находим среднеквадратичное отклонение: (&cl) = 8pql2. (12.9) Применим метод перебора для N=3. Все возможные для данного случая блуждания представлены на рис. 12.4. Рис. 12.4. Случайные одномерные блуждания пешехода при /V = 3 Осуществляя перебор всех блужданий, аналогично тому, как это дела- лось для случаев W = 1,2 получаем 354
12. Случайные блуждания (xl) = ,^xiPdxi) = l^3<l3 ~3pq2 +3p2q + 3p3)= 31 (p2 -q2\p + q) = = 3(p + q\p -q) = 3(p-q), (12.10) Ь2)=/2 Ex-2/^x-)=/2 (9«2 + w+3^2 + 9p2 )= (12 j = Z2(12p^ + [3(p-^)]2) (Дх32) = llpql2 . (12.12) Сравнение выражений (12.4), (12.7), (12.10) показывает, что при произ- вольном N среднее смещение (xN 'i может быть вычислено по формуле Ы = (12.13) Сравнивая, аналогично, (12.6), (12.9), (12.12), находим, что при произ- вольном N дисперсия ^Дх^ может быть вычислена по формуле (&c2) = 4pqNl2. (12.14) Задача 12.1 Найдите все возможные смещения частицы при N = 4. Вычислите ме- тодом перебора (л\), (Дх^ . Сравните полученные результаты с со- ответствующими значениями, вычисленными по формулам (12.13), (12.14). Так как полное число возможных //-шаговых блужданий в одномерном случае составляет 2N, то для реализации метода полного перебора целесообразно использовать компьютер. (Отметим, что, даже в этом случае метод полного перебора ограничен малыми значениями N.) Для реализации данного метода на компьютере необходимо знать аналитическое выражение функции, описывающей вероятность PN(x), или рекуррентное соотноше- ние, позволяющее вычислять вероятность PN(x) при //-шаговых блужда- ниях по значению вероятности при (ЛМ)-шаговых блужданиях. Для нахождения рекуррентного соотношения составим таблицу (табл. 12.1), в каждую ячейку которой поместим число посещений пешехо- дом соответствующей точки при //-шаговом блуждании (// = 1,2,... ,5). 355
Компьютерное моделирование физических процессов в пакете MATLAB Таблица 12.1. Число посещений пешеходом точек с заданными координатами Число ша- гов, N Координаты точек -51 -41 -31 21 -11 0 11 21 31 41 51 1 1 0 1 2 1 0 2 0 1 3 1 0 3 0 3 0 1 4 1 0 4 0 6 0 4 0 1 5 1 0 5 0 10 0 10 0 5 0 1 Анализ данных, представленных в табл. 12.1, показывает, что P2(±2Z) = P,(±Z),P3(±3Z) = P2(±2Z), F4(±4Z) = P3(±3Z), P5(±5Z) = P4(±4Z); (12.15) F2(0) = JPI(-Z)+Pl(Z), ^3(-/) = Р2(-2/)+ Ш ^3(0 = Р2(°) + Р&д Р4(-21)=Р3(-31) + Р.(-1), P4(0) = P3(--Z)+P3(Z), P4(2Z)=P3(Z)+P3(3Z), Р5(-3/) = P4(-4Z) + P4(-2Z), P5(-Z)- P4(-2Z) + Р4(0), P5(Z)=P4(0)+P4(Z), P5(3Z) = P4(2Z)+P4(4Z). (12.16) Из (12.15), (12.16) видно, что число посещений пешеходом точки х( при A-шаговом блуждании связано с числом посещений точек х,±1 при (А-1)- шаговом блуждании следующим образом: pn(x+n)= pn-i(x+N-\)’ (12.17) рЛхд = рЛх,-д + рдч+д’ (12.18) где i = 2,...,А-1. Для получения значений вероятностей нахождения пешехода в точках х, нужно умножить значение каждой ячейки из табл. 12.1. на значения со- ответствующей ячейки из табл. 12.2. Таблица. 12.2.3начения коэффициентов, используемых для вычисления вероят- ностей посещения пешеходом точек с заданными координатами Число шагов, N Координаты точек -51 -4\ -31 -21 -71 0 71 21 31 4\ 51 1 4 Р 356
12. Случайные блуждания Число шагов, Координаты точек -51 -41 -31 -21 -11 0 п 21 31 41 51 2 я2 РЯ Р2 3 я3 ря2 р2я р3 4 я4 р я3 2 2 Р Я р3я Р4 5 я5 ря4 р2я3 Р3Я2 р4я Р5 Задача 12.2 Изобразите графически возможные блуждания пешехода при N=5, б. Найдите значения числа посещений пешеходом соответствующих то- чек и сравните их с результатами, получаемыми по формулам (12.17), (12.18). Задача 12.3 Пользуясь соотношениями (12.17), (12.18), составьте программу для перебора возможных блужданий при заданных значениях N. Вычислите точные значения PN(x), (xN) , (Ax#). Задача 12.4 В одномерном случае оказывается возможным с помощью методов теории вероятностей получить выражение для функции PN(x) [1]: (N_ x'j (N • <12Л9) 1г+2Л2 2/ где + - число шагов влево и вправо соответственно. Используя формулу (12.19), проверьте полученные вами результаты в задаче 12.3. В методе Монте-Карло в отличие от метода полного перебора всех N- шаговых блужданий проводится генерация достаточно большого количест- ва реализаций (ансамбля реализаций) (NTrial — число реализаций в ансамб- ле) с искомым законом распределения. При этом длина отдельных реализа- ций NStep должна быть такой, чтобы обеспечить принадлежность каждой реализации выбранных блужданий множеству, содержащему все допусти- мые блуждания. (Обычно длина реализации варьируется от 100 до 1 000 ша- 357
Компьютерное моделирование физических процессов в пакете MATLAB гов.) Затем из каждой реализации выбираются значения смещения пешехода на последнем шаге. Это позволяет сформировать выборку длиной NTrial, статистические свойства которой оказываются близкими к свойствам по- следовательности, получаемой методом прямого перебора. Для реализации описанного выше вычислительного алгоритма на первом этапе следует создать файл Walk.m, содержащий описание функции, реали- зующей метод Монте-Карло. % листинг файла Walk.m function z = Walk(NStep,NTrial,р) % функция, реализующая метод Монте-Карло % NStep - длина единичной реализации (число шагов пешехода) % NTrial - длина случайной последовательности, возвращаемой % функцией Walk % р - вероятность перехода вправо for i=2:NTriaI х=0; for j=l:NStep if p>=rand(l) x=x+l; else x=x-l; end; end; X(i)=x; end; z=X; Далее необходимо выполнить следующую последовательность команд: » NStep=1000; % длина единичной реализации » NTrial=1000; % число испытаний » р=0.5; % вероятность перехода вправо » M=Walk(NStep, NTrial, р); % визуализация случайной последовательности »i=l: NTrial; » figure(l);plot(i,M,'k') % вычисление и визуализация гистограммы случайной последовательности » Xmin=min(M); » Xmax=max(M); » Ni=50; % число интервалов гистограммы 358
12. Случайные блуждания » k=l:Ni; » dx=(Xmax-Xmin)/(Ni-l); % длина интервала гистсираммы » x(k)=Xmin+dx*(k-l); » s=hist(M,x); » figure(2);bar(x,s); colormap white Результаты выполнения данной последовательности команд представле- ны на рис. 12.5, 12.6. Рис. 12.6. Гистограмма вычисленная для случайной последовательности, представленной на рис. 12.5 Рис. 12.5. Случайная последовательность, возвращенная функцией Walk Анализ гистограммы, представленной на рис. 12.6, позволяет высказать гипотезу о том, что значения случайной последовательности распределены по нормальному закону. Для проверки данной гипотезы будем использовать следующий алгоритм. 1. Вычислить среднее отклонение пешехода от начальной точки (xN). 359
Компьютерное моделирование физических процессов в пакете МА TLAB 2. Вычислить среднеквадратичное отклонение пешехода от начальной ТОЧКИ 3. Вычислить теоретические частоты попадания значений случайной по- следовательности в заданные интервалы в предположении о нормальном законе распределения членов случайной последовательности: х11М Freqk{ = J NTrial normpdf(x, X0, cr)dx; Xu (normpdffx, X0,<t) — j=-- e~^x~X0^ ). V2;rcr 4. Вычислить критерий /-квадрат для случайной последовательности J^-Freq^ Ь Fre<li 5. Вычислить теоретическое значение критерия /-квадрат qchisq(0.995, rows(Y)~ 1 - 3). 6. Сравнить полученные критерии /-квадрат. Описанный алгоритм реализуется следующей последовательностью ко- манд: » NStep=1000; % длина единичной реализации » NTrial=1000; % число испытаний » р=0.5; % вероятность перехода вправо » M=Walk(NStep, NTrial, р); % вычисление и визуализация гистограммы случайной последовательности » Xmin=min(M); » Xmax=max(M); » Ni=50; % число интервалов гистограммы » k=l:Ni; » dx=(Xmax-Xmin)/(Ni-l); % длина интервала гистограммы » x(k)=Xmin+dx*(k-l); » s=hist(M,x); » X0=mean(M); » sigma=std(M); % вычисление теоретических частот » Nf=20; % число узлов сетки для вычисления интеграла » k=l:Nf; 360
12. Случайные блуждания » for i=l:Ni-l Xl=x(i);X2=x(i+l); dx=(X2-Xl)/(Nf-l); xl(k)=Xl+dx*(k-l); yl=NTrial*normpdf(xl,XO,sigma); Freq(i)=trapz(xl,yl); end; % вычисление экспериментального критерия /-квадрат » Xi=0; » for i=l:Ni-l Xi=Xi+(s(i)-Freq(i)).A2/Freq(i); end; » Xi Xi = 68.3450 % вычисление теоретического критерия /-квадрат » chi2inv(0.995,Ni-l-3) ans = 74.4365 Сравнение критерия /-квадрат (равного 68.3450), полученного для слу- чайной последовательности, представленной на рис. 12.6, и граничного зна- чения критерия /-квадрат (равного 74.4365), определенного теоретически, позволяет сделать вывод об отсутствии оснований для опровержения гипо- тезы о нормальном законе распределения рассматриваемой последователь- ности случайных чисел. Отметим, что для случайной последовательности данных можно исполь- зовать не только, в известной мере, интегральную характеристику — гисто- грамму, но и вычислять точные значения функции распределения. Для это- го, как очевидно, следует подсчитать количество посещений пешеходом каждой точки отрезка [х min, х max] и отнести их к полному числу шагов, сделанных пешеходом. Для вычисления функции распределения необходи- мо создать файл DistrR, содержащий функцию, возвращающую значения вероятности нахождения пешехода в данной точке. % листинг файла DistrR.m function z = DistrR(M) % функция, возвращающая вероятность нахождения пешехода % в данной точке Ml=min(M); 361
Компьютерное моделирование физических процессов в пакете МА TLAB М2=тах(М); к=М1; К=1; while к<=М2 п=0; for i=l:length(M) ifk==M(i) n=n+l; end; end; S(K,l)=k; S(K,2)=n/length(M); K=K+1; k=k+l; end; z=S; Далее необходимо выполнить следующую последовательность команд: » Ml=DistrR(M); » Ьаг(М1(:Д),М1(:,2),0.2); »colormap gray Результат выполнения данной последовательности команд представлен на рис. 12.7. Рис !2.7. Вероятность нахождения пешехода в заданных точках отрезка 362
12. Случайные блуждания Задача 12.5 Сравните значения (xN), (Дх^, получаемые методом Монте-Карло с точными значениями, вычисляемыми по формулам (12.13), (12.14). Оце- ните точность определения {xN}, (Nx2n^ методом Монте-Карло. Ис- следуйте, как зависят погрешности (xN), (Дх)) от числа шагов реа- лизации NStep и размера ансамбля реализаций NTrial. Изобразите дан- ные зависимости графически. Попробуйте подобрать функции, аппроксимирующие зависимости (xN), (Дх)) . Задача 12.6 Дополните описанный выше документ пакета MATLAB блоком, позво- ляющим вычислять среднее значение смещения пешехода и его средне- квадратическое отклонение в соответствии с (12.1)-(12.3) для случай- ной последовательности, генерируемой методом Монте-Карло. Полу- чите численные значения этих величин. Сравните полученные значения со значениями, найденными в описанном выше документе. Задача 12.7 Во многих приложениях моделей случайных блужданий величина (Ах2^ при достаточно больших N удовлетворяет степенному закону, например, (&x2n)~N2v. (12.20) (Соотношение (12.20) является примером асимптотического масштаб- ного закона.) Для одномерных случайных блужданий, как видно из (12.14), v=l/2. Постройте в логарифмическом масштабе график зависимости (Дх^ от N и оцените, используя метод наименьших квадратов, показатель степени v, определенный в формуле (12.20). Оцените погрешность най- денного значения v. Исследуйте, как зависит погрешность значения v от числа шагов реализации NStep и размера ансамбля реализаций NTrial. Изобразите данную зависимость графически. Попробуйте подобрать функцию аппроксимирующую данную зависимость. Задача 12.8 Еще одной важной величиной, характеризующей случайные блуждания, является (SN) — среднее число различных узлов решетки, посещаемых 363
Компьютерное моделирование физических процессов в пакете MATLAB во время N-шагового блуждания. Вычислите методом Монте-Карло (SN) и определите асимптотическую зависимость (SN) omN. Задача 12.9 1. Рассмотрите случай р = 0.7, NStep =1000, NTrial -1000. Вычислите (xN), • Как можно интерпретировать (xN) в данном случае? 2. Решите задачи 12.5—12.7 для случая р = 0.7. 12.3. Метод случайных блужданий на плоскости Рассмотрим обобщения метода одномерных случайных блужданий для систем большей размерности. Их обсуждение совершенно естественно на- чать с рассмотрения случайных блужданий в двумерной плоскости. Стати- ческий характер задачи случайного блуждания означает, что следует рас- сматривать либо большое количество случайных блужданий одного пеше- хода, либо большое число пешеходов, движущихся одновременно. Далее нами используется второй подход. Рассмотрим группу пешеходов, расположенных в момент времени t = 0, случайным образом в круге единичного радиуса с центром в начале коорди- нат. Будем считать, что на каждом шаге по времени каждый пешеход дви- жется случайным образом равновероятно в одном из четырех направлений: в положительном направлении оси оХ, в отрицательном направлении оси оХ, в положительном направлении оси oY, в отрицательном направлении оси oY. При этом направление движения выбирается в соответствии с мето- дом Монте-Карло в зависимости от величины случайного числа и заданного порогового значения. Для моделирования двумерных случайных блужданий необходимо соз- дать два файла: файл Init2.m, содержащий описание функции, возвращаю- щей начальную конфигурацию системы, и файл Move.m, содержащий опи- сание функции, возвращающей мгновенные значения координат пешеходов. % листинг файла Init2.m function z = Init2(NParticle,R) % функция, возвращающая начальную конфигурацию системы % NParticle - число пешеходов % R - радиус-вектор максимального смещения % от начала координат for i=l:NParticle R0=(2*rand(l)-l)*R; 364
12. Случайные блуждания teta=2*pi*rand(l); XY(i,l)=RO*cos(teta); XY(i,2)=R0*sin(teta); end; z=XY; % листинг файла Move.m function z. = Move(A,NParticle,NStep) % функция, возвращающая мгновенные значения координат пешеходов % А - массив, возвращенный функцией Init % NParticle - число пешеходов % NStep - число шагов Монте-Карло for j=l:NParticle XY(l,l)=A(j,l); XY(l,2)=A(j,2); for i=l:NStep-l prob=rand(l); if prob<=0.25 XY(i+l,l)=XY(i,l)+l; XY(i+l^)=XY(i,l); end; if (prob>0.25)&(prob<=0.5) XY(i+l,l)=XY(i,l)-l; XY(i+l,2)=XY(i,l); end; if (prob>0.5)&(prob<=0.75) XY(i+l,l)=XY(i,l); XY(i+l,2)=XY(i,l)-l; end; if prob>0.75 XY(i+l,l)=XY(i,l); XY(i+l,2)=XY(i,l)+l; end; end; if j==l Z=XY; else Z=cat(3,Z,XY); 365
Компьютерное моделирование физических процессов в пакете MATLAB end; end; z=Z; Далее необходимо выполнить следующую последовательность команд: » NParticle=2000; % число пешеходов » NStep=400; % число шагов Монте-Карло » R=l; % радиус-вектор максимального смещения от начала координат » A=Init2(NParticle,R); % вычисление начальной конфигурации % визуализация начальной конфигурации системы » Np=1000; »i=l:Np; » dphi=2*pi/ (Np-1) ;phi(i)=dphi* (i-1); » x=cos(phi);y=sin(phi); » figure(l);plot(x,y,'k'); » hold on » plot(A(:,l),A(:,2),'ok','Markersize',0.1); » hold off % вычисление координат каждого пешехода в заданное время » Am=Move(A,NParticle,NStep); % визуализация мгновенных значений координат % и радиусов-векторов первого и сотого пешеходов » figure(2);plot(i,Am(:,l,l),'k',i,Am(:,l,100),':k'); » figure(3);plot(i,Am(:,2,l),'k',i,Am(:,2,100),':k'); » R=(Am(:,l,l).A2+Am(:,2,l).A2).A0o5; » R100=(Am(:,l,100).A2+Am(:,2,100).A2).A0.5; » figure(4);plot(i,R,'k',i,R100,':k'); % вычисление усредненных по ансамблю пешеходов значений координат » for i=l:NStep for j=l:NParticle X(j)=Am(i,l j); Y(j)=Am(i,2j); end; x(i)=mean(X); y(i)=mean(Y); end; % визуализация мгновенных значений координат и радиуса-вектора, % усредненных по ансамблю пешеходов 366
12. Случайные блуждания »i=l:NStep;figure(5);plot(i,x,'k') » figure(6);plot(i,y,'k') » Rm=(x.A2+y.A2).A0.5; » figure(7);plot(i,Rm.,k'); % вычисление и визуализация квадратов координат и квадрата % радиуса-вектора, усредненных по ансамблю пешеходов » for i=l:NStep for j=l:NParticle X(j)=Am(i,lj).A2; Y(j)=Am(i^J).A2; end; xm(i)=mean(X); ym(i)=mean(Y); end; % вычисление и визуализация мгновенных значений % среднеквадратичного отклонения усредненной траектории »i=l:NStep;figure(8);pIot(ipcm,'k') » figure(9);plot(i,ym,'k') » R2=xm+ym-x.A2-y.A2; »i=l:NStep;figure(10);plot(i,R2,'k') Результаты выполнения описанной последовательности команд пред- ставлены на рис. 12.8-12.17. Рис. 12.8. Начальное распределение пешеходов 367
Компьютерное моделирование физических процессов в пакете МА TLAB Рис. 12.11. Зависимость мгновенных значений радиусов- векторов первой и сотой частиц от номера шага Монте-Карло 368
12. Случайные блуждания Рис. 12.12. Зависимость мгновенных значений х-й координаты, полученной усреднением по ансамблю пешеходов, от номера шага Монте-Карло Рис. 12.13. Зависимость мгновенных значений у-й координаты, полученной усреднением по ансамблю пешеходов, от номера шага Монте-Карло Рис. 12.14. Зависимость мгновенных значений радиуса-вектора, полученного усреднением по ансамблю пешеходов, от номера шага Монте-Карло 369
Компьютерное моделирование физических процессов в пакете МА TLAB Рис. 12.15. Зависимость мгновенных значений усредненного по ансамблю пешеходов квадрата смещения вдоль оси оХ от номера шага Монте-Карло о 50 100 150 200 250 300 350 400 Рис. 12.16. Зависимость мгновенных значений усредненного по ансамблю пешеходов квадрата смещения вдоль оси oYот номера шага Монте-Карло «Ю - - т т - - - -т- Г- - Рис. 12.17. Зависимость мгновенных значений среднеквадратичного отклонения усредненной по ансамблю пешеходов траектории от номера шага Монте-Карло 370
12. Случайные блуждания Анализ зависимости, представленной на рис. 12.17, показывает, что с те- чением времени происходит линейное увеличение площади окружности, внутри которой находятся все пешеходы, т. е. ''ДЯ,2) = АТ, (12.21) где А ~ 1 — коэффициент пропорциональности. Из (12.21) видно, что среднеквадратичное смещение /? = , меня- ется с увеличением числа шагов по закону =Va-iv, (12.22) где для рассматриваемой двумерной модели v -1/2 . Задача 12.10 Создайте анимационный клип, демонстрирующий в динамике процесс увеличения площади, занимаемой пешеходами. Задача 12.11 Оцените, используя метод наименьших квадратов, значение коэффици- ента А в (12.21). Определите погрешность найденного значения А, ис- пользуя метод оценки погрешностей коэффициентов линейной регрес- сии, изложенный в [2, глава 8]. Задача 12.12 Предположим, что каждый пешеход расположен случайным образом внутри единичной окружности и имеет случайную начальную скорость, направленную в одном из четырех возможных направлений. При этом каждый пешеход в единицу времени совершает один шаг в направлении, совпадающем с направлением начальной скорости. Проведите исследо- вание движения данной группы пешеходов и постройте зависимости (xi}> (у^ > (х|2/’ {у?}’ (AR?}’ Сравните ре- зультаты, полученные для модели случайной скорости, с аналогичными результатами, полученными для модели случайного блуждания. Имеют- ся ли качественные различия в поведении рассматриваемых моделей? Отметим, что процесс движения пешеходов подобен процессу движения молекулы в разреженном газе. Действительно, предположим, что молекула между столкновениями с другими молекулами пробегает расстояние I. Если допустить, что последовательные смещения молекулы между столкнове- ниями статистически независимы, то ее движение будет аналогично рас- смотренному выше движению пешеходов. Так как движение молекулы в 371
Компьютерное моделирование физических процессов в пакете MATLAB разреженном газе является диффузионным процессом, возникает возмож- ность установить связь случайного процесса с диффузией. Зависимость среднеквадратического смещения ^Л7?(/)2) диффундирующей частицы от времени описывается известным соотношением Эйнштейна (ДЯ(О2) = 2<ЮГ, (12.23) где d - размерность пространства, D - коэффициент самодиффузии молеку- лы. Если отождествить длину свободного пробега I с длинной шага пешехо- да и принять время между столкновениями равным г, то i = t/т. Следова- тельно, формулу (12.23) можно переписать в виде (\R(l)2^2dDTi. (12.24) Сравнивая (12.21), (12.24) и учитывая, что в рассматриваемом случае d = 2, т = 1, I = 1, находим выражение для коэффициента диффузии пешехода в двумерном случае А 1 © = (12.25) 4 4 В общем случае для оценки коэффициента диффузии следует использо- вать формулу (12.14), которая с учетом сделанных выше предположений, принимает вид (Дх2) = 4М/2(-). (12.26) Сравнивая (12.26) с (12.23), получаем . (12.27) dr Коэффициент диффузии D в двумерном случае (при р = q = 1/2) равен /2 D = . (12.28) 4т Сравнение (12.25) и (12.28) показывает, что значения коэффициентов самодиффузии D, получаемых в численных экспериментах с моделями, в которых I * 1, т * 1 , могут быть вычислены умножением значения соответ- ствующего коэффициента, найденного для модели, в которой I = 1, г = 1, на коэффициент I2/г . 372
12. Случайные блуждания Задача 12.13 Перечислите все случайные блуждания на квадратной решетке с N = 4 и получите точные значения для (xN),(yN') и ^Д/?^. Сравните резуль- таты аналитических расчетов с результатами, полученными методом Монте-Карло. Отметим, что рассмотренная выше квадратная решетка, в которой число бли- жайших соседей равно четырем, не являет- ся единственно возможной формой решет- ки. На практике для моделирования дву- Рис. 12.18. Возможные направления смещения пешехода при блуждании по треугольной решетке мерных плоских тел применяется тре- угольная решетка (рис. 12.18), период которой далее, если это не оговорено осо- бо, будем считать равным единице. Задача 12.14 Исследуйте особенности движения группы пешеходов, распределенных в момент времени I = 0 случайным образом в круге единичного радиуса, на треугольной решетке. Проведите исследование движения данной группы пешеходов и постройте зависимости (х;), (у;), (xj'j, /у,2 у, (Дх2), (Д>',2), «=0,1,...,7V. Сравните результаты, полученные для треугольной решетки, с аналогичными результатами, полученными для случайного блуждания на квадратной решетки. Имеются ли каче- ственные различия в поведении рассматриваемых моделей? По какому закону меняется и чему равняется v в (12.21)? Зависит ли от симметрии решетки коэффициент самодиффузии D? Задача 12.15 Рассмотрите падение дождевой капли, начинающей движение из точки с координатами (0,7г), под действием случайных порывов ветра. Ис- пользуйте модель случайных блужданий на квадратной решетке, счи- тая, что вероятность pd шага вниз больше вероятности ри шага вверх, а вероятность смещения капли влево равна р*_, вправо — р_>. Так как pd > ри, то можно ожидать, что после некоторого числа ша- гов капля достигнет земной поверхности. Выберите вероятности пере- ходов равными pd = 0.5 , ри = 0.1, = /?_,= 0.2. Проведите модели- 373
Компьютерное моделирование физических процессов в пакете MATLAB рование методом Монте-Карло. Постройте траекторию движения ка- пли, зависимости (х(), (у?), [х* 1 2 3 4\, (у2}, (дос2^, (ДК2), где ( ) обозна- чают усреднение по ансамблю реализаций, и определите среднее время г, за которое капля достигнет поверхности земли, и функциональную зависимость т-т(1г). Как зависит (Ах?} от h и т? Чему равняется скорость падения капли? (Указание. Для моделирования движения пе- шехода в горизонтальном направлении используйте случайные числа с равномерным законом распределения на отрезке [-1,1].) Задача 12.16 Рассмотрите двумерную модель случайных блужданий, в которой в единицу времени пешеход совершает шаг единичной длины в случайном направлении. Создайте, используя документ, описанный в разделе 12.2, программу для вычисления методом Монте-Карло вероятности PN (г) dr нахождения пешехода в интервале от г до г + dr, где г — рас- стояние, отсчитываемое от начала координат, N — число шагов, со- вершаемых пешеходом. 1. Покажите, что для достаточно больших значений N функции распреде- ления пешеходов PN(x), PN(y) вдоль осей оХ, oY, соответственно, ап- проксимируются нормальным законом распределения. Постройте зави- симости (xN), (ххД ,(yN), • Предположив, что (^2N),^y2N}~ aN2v (12.29) оцените, используя метод наименьших квадратов, значения коэффици- ента а и показателя степени v, входящих в (12.29). Сравните значение v для одномерных и двумерных случайных блужданий. 2. Постройте зависимости (RN), (Rn} (^Rn) • Можно ли аппроксимиро- вать зависимость (kR-T) зависимостью вида (12.29)? 3. Постройте функцию, описывающую вероятность PN(r)dr нахождения пешехода в интервале от г до г + dr, где г — расстояние, отсчитывае- мое от начала координат, N — число шагов, совершаемых пешеходом. Используя критерий %-квадрат, проверьте гипотезу о возможности ап- проксимации функции PN (г) гауссовой кривой. 4. Перейдите к полярным координатам г = -fx2 + у2 , <р = arctg(y/x) и по- кажите, что распределение пешеходов по углу <р близко к равномерному. 374
12. Случайные блуждания Результаты исследования модели двумерных блужданий, использован- ной в задаче 12.16, показывают, что функции распределения вероятностей пешеходов вдоль соответствующих координатных осей могут быть аппрок- симированы нормальным законом распределения. Типичные результаты, полученные при решении задачи 12.16, представлены на рис. 12.19-12.24. (Здесь нами использовалась выборка, сформированная по NTrial (NTrial= = 1000) независимым случайным реализациям длиной NStep (NStep=4000).) В то же время функция распределения радиусов-векторов точек случайной последовательности, как видно из рис. 12.24 и как следует из результатов задачи 12.16. часть 3, не описывается нормальным законом распределения. 200 -200 -----*-------1------1------1------- 0 200 400 600 800 1000 i Рис. 12.19. Х-е координаты точек двумерной случайной последовательности I Рис. 12.20. Y-e координаты точек двумерной случайной последовательности Рис. 12.21. Радиусы-векторы точек двумерной случайной последовательности 375
Компьютерное моделирование физических процессов в пакете МА TLAB Рис. 12.22. Теоретическая (сплошная) и экспериментальная (столбчатая диаграмма) функции распределения Х-х координат случайной последовательности Рис. 12.23. Теоретическая (сплошная) и экспериментальная (столбчатая диаграмма) функции распределения Y-x координат случайной последовательности 40 0 50 100 150 200 Рис. 12.24. Экспериментальная функция распределения радиусов-векторов точек случайной последовательности Для объяснения полученного результата найдем функцию распределе- ния вероятности двумерных случайных блужданий. Так как движение пе- шехода вдоль осей оХ и oY независимы, вероятность Р(х, y)dxdy обнару- жить пешехода в окрестности точки с координатами (х, у) равна произве- дению функций, описывающих функции распределения вероятностей координат вдоль соответствующих координатных осей: 376
12. Случайные блуждания Р(х,у)= Рх(х)-Py(y)dxdy , (12.30) где P(x) = _^_e-(X-W)72<7( , (12.31) 72я-сгх ру(у)=e-(.v-(.v))72CT;, (12.32) л/2л-crv Ах , Av - нормировочные постоянные. Подставляя (12.31), (12.32) в (12.30) и считая, что <тх = сг,, = сг получим Р(х, у) = --^e'^^dxdy, (12.33) 2лсг где А — нормировочный коэффициент, определяемый из условия JJp(x, y)dxdy = N , (12.34) s здесь s — область, занятая пешеходами, TV—число пешеходов. Переходя в (12.33) к полярным координатам х = rcos0>, у = rsin^>, получаем Р(г,<р] - —^—тге~г ^2<т rdrdtp. (12.35) 2ла Отметим, что выражение, стоящее в правой части (12.35), не зависит от переменной <р, что свидетельствует о равномерности распределения пеше- ходов по углу. Проинтегрировав (12.35) по углу, изменяющемуся от 0 до 2л, получаем вероятность нахождения частицы в интервале [г, г + аг]: P(r) = e~r rdr . (12.36) ст Значение нормировочной постоянной А найдем из условия (12.34) R (jLe~r2/2a2rdr^N, (12.37) о а где R - радиус окружности, занимаемой пешеходами. 377
Компьютерное моделирование физических процессов в пакете MA TLAB Вычислив в (12.37) интеграл, получаем выражение для нормировочного коэффициента Л: (V Л= (1238) 1 - e~R /2ст Подставляя (12.38) в (12.36), окончательно найдем Р(г) = 4------r e-^dr. (12.39) — 4 i — к £(У <у \~е Результат вычисления вероятности по формуле (12.39) для случайной последовательности, мгновенные значения радиуса-вектора которой пред- ставлены на рис. 12.21, показаны на рис. 12.25. Рис. 12.25. Теоретическая (сплошная) и экспериментальная (столбчатая диаграмма) функции распределения радиусов-векторов точек случайной последовательности Задача 12.17 Дополните созданный вами документ для решения задачи 12.16. фраг- ментом, позволяющим вычислять теоретическую функцию распределе- ния в соответствии с (12.39). Для описания рассеяния частицы на неподвижных рассеивающих цен- трах с анизотропным сечением рассеивания используют модель, в которой считается, что пешеход на N-м шаге с вероятностью р смещается в направ- лении перехода на 7V-1 шаге и с вероятностью (1-р) в противоположном направлении («персистентное» случайное блуждание). Алгоритм моделиро- вания «персистентного» случайного блуждания методом Монте-Карло реа- лизуется следующей последовательностью действий. 1. Задать длину случайной последовательности (число шагов пешехода) NStep и размер ансамбля случайных реализаций NTrial. 2. Задать начальную координату пешехода и направление первого шага. 378
12. Случайные, блуждания 3. Выбрать пороговое значение вероятности перехода р. 4. Сгенерировать случайное число q с равномерным законом распреде- ления на интервале [0,1]. 5. Если q> р, осуществить переход в направлении, совпадающем с на- правлением перехода на предыдущем шаге. 6. Если q < р, осуществить переход в направлении, противоположном направлению перехода на предыдущем шаге. 7. После выполнения заданного числа шагов NStep вернуть пешехода в начальную, иначе повторять пп. 4—6, пока число шагов меньше NStep. 8. Сгенерировать новую случайную последовательность, выполняя пп. 5—7. 9. Если число случайных последовательностей меньше NTrial, повторить пп. 5-8. Для моделирования персистентных случайных блужданий в пакете MATLAB в соответствии с описанным алгоритмом необходимо создать файл Walk2.m, содержащий описание функции, возвращающей мгновенные значения координат пешеходов на каждом шаге Монте-Карло. % листинг файла Walk2.m function z = Walk2(NStep, NTrial, p,xO,dx) % функция, возвращающая мгновенные значения координат пешеходов % NStep - число шагов Монте-Карло % NTrial - число пешеходов % р - пороговое значение вероятности перехода % хО - координата пешехода в момент времени t=0 % dx - направление смещения пешехода на первом шаге for i=l:NTrial х=хО; d=dx; K=l; for j=l:NStep if p<rand(l) d=-d; end; x=x+d; Z(K)=x; K=K+1; end; if i==l X=Z'; 379
Компьютерное моделирование физических процессов в пакете MATLAB else X=cat(2,X,Z'); end; end; z=X; Далее необходимо выполнить следующую последовательность команд: % вычисление мгновенных значений среднего по ансамблю % пешеходов смещения » for i=l:NStep for j=l:NTrial X(j)=M(ij); end; x(i)=mean(X); end; % вычисление мгновенных значений среднего по ансамблю пешеходов % квадрата смещения » for i=l:NStep for j=l:NTrial X2(j)=M(ij).A2; end; x2(i)=mean(X2); end; % вычисление и визуализация мгновенных значений % среднеквадратичного отклонения пешехода от начальной точки, % усредненных по ансамблю реализаций (рис. 12.26) »i=l:NStep;Xs(i)=x2(i)-x(i).A2; » plot(i,Xs,'k') Задача 12.18 Используя метод наименьших квадратов, оцените по зависимости j =0,1,...,NStep-1, значение v в (12.20) и значение коэффициен- та самодиффузии D. Задача 12.19 Рассмотрите, используя описанный выше документ, два случая: р = 0.25 и р = 0.75 . Используя метод наименьших квадратов, оцените по зависимости j = 0...N-1 значение v в (12.20) и значение коэф- фициента самодиффузии D. Дайте физическое объяснение, почему зна- 380
12. Случайные блуждания чения коэффициента диффузии зависят от порогового значения веро- ятности перехода р. Постройте зависимость коэффициента само- диффузии от порогового значения вероятности р. 1200 1000 800 600 400 200 0 к/— __I-L-----1---;----L---—х----1----1-----i-----' О 100 200 300 400 500 600 700 600 900 1000 Рис. 12.26. Зависимость мгновенных значений среднеквадратичного отклонения пешехода, усредненного по ансамблю реализаций, от номера шага Монте-Карло Задача 12.20 Постройте зависимость j = 0,1,...,NStep-1. Постройте гра- фик зависимости скорости движения пешехода от времени. Оцените предельную скорость движения пешехода. Как зависит предельная ско- рость движения пешехода от порогового значения вероятности р? Задача 12.21 Для описания особенностей процесса диффузии в хроматографической колонке используется следующая модель случайных блужданий: пешеход может с вероятностью р остаться на месте или с вероятностью 1-р сместиться на один шаг. Модифицируйте функцию Walk2 так, чтобы данная функция возвращала ансамбль случайных последовательностей, сгенерированных по заданному правилу. Определите коэффициенты са- модиффузии D при различных значениях пороговой вероятности р. Отобразите зависимость D - D(p) графически. В физике твердого тела и конденсированных сред важную роль сыграли модели случайного блуждания при наличии ловушек. Рассмотрим более подробно одну из таких моделей, используемых для изучения особенностей 381
Компьютерное моделирование физических процессов в пакете MATLAB переноса энергии в твердом теле. Твердое тело в данной модели представ- ляется в виде решетки, состоящей из двух типов узлов (подрешеток): узлов- хозяев и узлов-ловушек. Падающий фотон поглощается узлом-хозяином (атомом), в результате чего происходит его возбуждение. Затем энергия возбуждения (экситон) случайным образом передается ближайшим соседям и возбужденный атом возвращается в основное состояние. Блуждание экси- тона по решетке продолжается до тех пор, пока он не встретится с узлом ловушкой, при котором энергия поглощается и происходит некоторый фи- зический процесс, например, химическая реакция. Рассмотрим один из наиболее простых вариантов описанной модели пе- реноса энергии: экситон распространяется в одномерной решетке, содер- жащей периодическую подрешетку, содержащую узлы-ловушки. Отметим, что, если расстояние между узлами-ловушками одинаково, блуждание по бесконечной решетке можно заменить случайным блужданием по окружно- сти (рис. 12.27). 0 * • * а • ° • • Рис. 12.27. Эквивалентная замена случайного блуждания на одномерной решетке, содержащей подрешетку узлов-ловушек с периодом равным 4, S'блужданием на окружности с N=3 ( \ узлами-хозяевами (закрашенный \ J кружок) и одним узлом ловушкой \ (незакрашенный кружок) Для оценки зависимости среднего времени жизни экситона т, (время, в течение которого возбуждение распространяется из начальной точки до узла-ловушки) используем метод Монте-Карло. Будем считать, что в одно- мерной решетке имеются узлы ловушки, расположенные в точках х = 0, х = а (а > 0). Пешеход начинает движение из точки х0 е [0, а] и с равной ве- роятностью за время г = 1 переходит в один из ближайших соседних узлов решетки. Для нахождения вида функциональной зависимости = г((а,х0) будем использовать следующий вычислительный алгоритм. 1. Задать расстояние между узлами ловушками а. 2. Задать число точек Ns, в которых вычисляются значения функции г, =т,(а,х0). 3. Провести разбиение отрезка [0,а] на № интервалов ( xQj = (а/Ns)-i .i = 0,1,... Ns ). 382
12. Случайные блуждания 4. Вычислить NTrial случайных реализаций, состоящих из NStep шагов, в каждом узле разбиения отрезка [0, а] х0,. 5. Определить время достижения узла-ловушки пешеходом для каждой случайной последовательности г, =min(xO-,a-xO ), к =1,2,...,NTrial. k,i NTrial 6. Вычислить среднее время жизни возмущения (гД. Уг;, , к=\ стартующего из точки хО,. Для реализации описанного алгоритма создадим файл Time2.m, содер- жащий описание функции, возвращающей два вектора: 1) вектор, содержа- щий значения стартовой точки, 2) вектор, содержащий усредненное по ан- самблю реализаций время достижения узла-ловушки. % листинг файла Time2.m function [X,t] = Time2(NTrial,p,Ns,a) % функция возвращающая значения зависимость rz = гДа,х0) % NTrial - число испытаний % р - граничное значение вероятности перехода % Ns - число узлов разбиения отрезка [0,а] % а - расстояние между узлами сетки dx=a/(Ns+l); % шаг изменения координат стартовых точек for m=l:Ns i=l; while i<=NTrial j=0; x=dx*m; % перемещение i-го пешехода до достижения узла-ловушки while (x<a)&(x>0) if p>rand(l) x=x+l; else x=x-l; end; j=j+i; end; Ns(i)=j; % время жизни i-го пешехода i=i+l; end; 383
Компьютерное моделирование физических процессов в пакете MATLAB X(m)=dx*m; t(m)=mean(Ns); % среднее время жизни для данного значения % начальной точки end; Далее необходимо выполнить следующую последовательность команд: » NTrial=2000; % число испытаний » Ns=6; % число узлов разбиения отрезка [0, а] » а=30; % расстояние между узлами сетки »[X T]=Time2(NTrial,0.5,Ns,a); » plot(X,T,'Sk') % визуализация зависимости г, = т, (а, х0) Результат выполнения описанной последовательности команд представ- лен на рис. 12.28. 240- - —г- - -г-- ’ - - - —т т- I с 200- -j с, ° i юс I 160 140 □ и 1201 -- 1 -- ‘ - - ---- ---.-- L. ------- J 0 5 10 15 20 25 30 Рис. 12.28. Зависимость г( =г/(ЗО,хо) Задача 12.22 Проверьте, используя метод наименьших квадратов, что зависимость Г/ =г,(а, х0) описывается формулой г = (2£>)-1х0(й-х0), (12.40) где D — коэффициент самодиффузии в отсутствие узлов-ловушек. Задача 12.23 Структуре реальных твердых тел присуще наличие разнообразных де- фектов, простейшим из которых является отсутствие атома в одном 384
12. Случайные блуждания из узлов решетки или наличие дополнительного атома на поверхности. При конечной температуре кристалла вакансия диффундирует, меняясь местами с соседними атомами случайным образом. Предположив, что в момент времени t = 0 вакансия расположена в центре окружности радиуса г, проведите моделирование движения вакансии и определите время, за которое вакансия достигает поверхности металла, находя- щейся на расстоянии г. Постройте распределение вероятности для времени достижения вакансией границы. Какой функцией можно ап- проксимировать данное распределение вероятности? Задача 12.24 Рассмотрите одномерную решетку с отражающими узлами, расположенными в точках х = +а. Наличие отражающих узлов означает, что пешеход, начавший случайное движение в момент времени t = 0 из точки х0 6 ]-а,а[, попав на n-м шаге в точки хп =+а, на п+1-шаге окажется в точках х = ±о + 1. Исследуйте случайные блуждания пешехода, используя метод Монте-Карло, и определите функцию распределения вероятности PN (х). Сравните функции распределения вероятностей при наличии и отсутствии отражающих стенок. Начиная с каких значений N различия в рассматриваемых распределениях становятся существенными? 12.4. Моделирование движения решеточного газа В модели решеточного газа рассматривается случайное движение не- взаимодействующих друг с другом частиц (пешеходов) на двумерной или трехмерной решетках. Условие отсутствия взаимодействия частиц означает невозможность попадания двух частиц в один узел. (Данная модель исполь- зуется в физике твердого тела, так как в твердых телах (в первую очередь, в металлах) диффузия обусловлена температурными вакансиями, концен- трация которых зависит от температуры.) Основной характеристикой, пред- ставляющей интерес с физической точки зрения, в данной задаче является коэффициент диффузии D. Метод Монте-Карло в данной задаче реализует- ся в соответствии со следующим алгоритмом: 1. Задать числа узлов решетки L. 2. Задать числа частиц N (N < L2). 3. Задать начальное распределение частиц. 4. Перемещать частицы случайным образом в один из свободных соседних узлов. (Если узел оказывается занятым, то частица остается в текущем узле.) 13—1576 385
Компьютерное моделирование физических процессов в пакете MATLAB Для реализации описанного алгоритма в пакете MATLAB необходимо создать файл InitL.m, содержащий описание функции, возвращающей на- чальную конфигурацию системы, и MoveL.m, содержащий описание функ- ции, возвращающей мгновенные (на каждом шаге Монте-Карло) значения координат частиц системы. % листинг файла InitL.m function [x,y,Site] = InitL(L,NParticle) % функция, возвращающая начальную конфигурацию системы x=zeros(NParticle,l); y=zeros(NParticle,l); Site=zeros(NParticle,NParticle); i=l; while i<=NParticle % случайный выбор номера узла Xadd=floor((L+l)*rand(l)+l); Yadd=floor((L+l)*rand(l)+l); ifXadd==0 Xadd=l; end; ifYadd==0 Yadd=l; end; if Site(Yadd,Xadd)==O % если узел свободен, помещаем в него частицу Site(Xadd,Yadd)=10A307; x(i)=Xadd; y(i)=Yadd; i=i+l; end; end; % листинг файла MoveL.m function z = MoveL(L,NParticle,NTriaI,x,y,Site); % функция, возвращающая мгновенные значения координат частиц Х=х; Y=y; Sitel=Site; z=cat(2,x,y); for i=l:NTrial-l for j=1: NParticle ITrial=floor(NParticle*rand(l)+l); % номер перемещаемой частицы 386
12. Случайные блуждания if ITrial==O ITrial=l; end; XTrial=X(ITrial); YTrial=Y(ITrial); % перемещение в случайном направлении с учетом % периодических граничных условий Direction=floor(4*rand(l)+1); if Direction==l XTrial=XTrial+l; ifXTriabL XTrial=XTrial-L; end; end; if Direction==2 XTrial=XTrial-l; ifXTriakl XTriaI=L-XTrial; end; end; if Direction==3 YTrial=YTrial+l; if YTrial>L YTrial=YTrial-L; end; end; if Direction==4 YTrial=YTrial-l; ifYTriakl YTrial=L-YTrial; end; end; if Sitel(YTrial,XTrial)==O % узел свободен Sitel(Y(ITrial),X(ITrial))=O; X(ITrial)=XTrial; Y(ITrial)=YTrial; Sitel(YTrial,XTrial)=10A307; % новый узел занят end; end; 387
Компьютерное моделирование физических процессов в пакете МА TLAB zl=cat(2,X,Y); z=cat(3,z,zl); end; Далее необходимо выполнить следующую последовательность команд: » L=50; % размер ячейки » NParticle=2000; % число пешеходов » NTrial=100; % число испытаний » [Xi Yi Site] = InitL(L,NParticle); % вычисление начальной % конфигурации » figure(l);plot(Xi,Yi,'.k’) % визуализация начальной конфигурации » C=MoveL(L,NParticIe,NTrial,Xi,Yi,Site); % вычисление координат % пешеходов на каждом % шаге Монте-Карло % вычисление мгновенных значений среднеквадратического % отклонения, усредненных по ансамблю пешеходов » for i=l:NTrial R2=0; X=C(:,l,i); Y=C(:Ai); for j=l:NPartide dx=X(j)-Xi(j); dy=Y(j)-Yi(j); if abs(dx)>L/2 dx=dx-dx/abs(dx)*L; end; if abs(dy)>L/2 dy=dy-dy/abs(dy)*L; end; R2=R2+dx.A2+dy.A2; end; dR(i)=R2/NParticle; end; »i=l:NTrial;pIot(i-l,dR) Результаты выполнения приведенной выше последовательности команд представлены на рис. 12.29 и 12.30. 388
12. Случайные блуждания Рис. 12.30. Зависимость мгновенных значений среднеквадратического отклонения, вычисленных усреднением по ансамблю пешеходов, от номера шага Монте-Карло Рис. 12.29. Расположение пешеходов в начальный момент времени Сделаем два важных замечания, относящихся к рассматриваемой модели и последовательности выполняемых команд для ее реализации. 1. Для описания движения частиц на решетке конечных размеров ис- пользуются периодические граничные условия, подобные граничным усло- виям, использованным в методе молекулярной динамики (см. разд. 10.) 2. «Время» в рассматриваемой модели измеряется в единицах, равных длительности одного шага метода Монте-Карло на частицу, т. е. за один шаг метода Монте-Карло каждая частица совершает в среднем один переход Коэффициент диффузии D может быть оценен как предел выражения О(Г)= -А /АЛ(02) (12.41) Zat ' ' 389
Компьютерное моделирование физических процессов в пакете МА TLAB при г—>оо. Из рис. 12.30 видно, что коэффициент диффузии может быть оценен как угол наклона прямой, аппроксимирующей зависимость (А/?2у методом наименьших квадратов. Задача 12.25 Вычислите коэффициент диффузии решеточного газа на квадратной решетке D для значений плотности р = 0.1, 0.2, 0.3., 0.4, 0.5, 0.6, 0.7, 0.8 (р = NParticlel l}\ Постройте график зависимости D = D(p). Попро- буйте подобрать аналитическую функцию, аппроксимирующую данную зависимость. Почему D - D(p) является монотонно убывающей функ- цией плотности? Задача 12.26 Для заданного значения плотности решеточного газа вычислите не- сколько зависимостей (AR?''), определите параметры прямых аппрок- симирующих данные зависимости, вычислите сумму квадратов разно- стей между точными значениями и соответствующими аппрок- симированными значениями (сумма квадратов отклонений). Как зависит сумма квадратов отклонений от числа частиц решеточного газа N. Задача 12.27 Предложите алгоритм и вычислите зависимость вероятности перехо- да частицы в момент времени t в некоторую свободную ячейку и ее воз- вращения в момент времени t + 1 назад в ту же ячейку от плотности решеточного газа. Определите качественно зависимость между значе- нием коэффициента диффузии D и данной вероятностью. Задача 12.28 Рассмотрите модель случайных блужданий частиц на одномерной ре- шетке, в которой исключается попадание двух частиц в один узел. (Это ограничение означает, что частицы не могут проходить друг через друга.) Вычислите зависимость ^Ах2^ от времени. Сравните зависи- мость (Ах2^ с аналогичными зависимостями, получаемыми в модели одномерных случайных блужданий. Можно ли говорить о процессе диффузии в данном случае? Какова в рассматриваемой модели зависи- мость от t? 390 al.
12. Случайные блуждания 12.5. Непрерывная модель случайных блужданий Рассмотрим переход от дискретной модели случайных блужданий, рас- смотренных нами в разделе 12.2, к непрерывной. Если предположить, что направления шагов пешехода равновероятны, то дискретное случайное блуждание можно переписать в виде простого «порождающего» уравнения: = (12.42) где Pn(i} — вероятность попадания пешехода после п шагов в i-й узел. Для получения непрерывного аналога (12.42) - дифференциального уравнения для плотности вероятности Р(х, f) положим t = п г, х = ia , Pn(i) = aP(x,t), где г — временной интервал между двумя последователь- ными шагами, а — период решетки. Используя выбранные обозначения, пе- репишем (12.42) в эквивалентной форме: P(x,r) = ^P(x + a,l -г) + ^ P(x-a,t -т). (12.43) Вычтя из обеих частей (12.43) Р(х, t-т) и разделив на г, приводим к виду - [Р(х,г)- Р(х,г-г)] = —- [P(x + a,t-f)-2P(x,t-r) + ... т 2т (12.44) + P(x-a,t -г)]-- . а1 Считая а, г малыми и перейдя к пределу а -> 0, г -> 0 при конечном от- ношении D = а2/2г , получаем одномерное уравнение диффузии = D- (12.45) dt дх2 Поступая аналогично, можно получить уравнение диффузии в трехмер- ном пространстве <У(*О’’££) = DV2p(x,y,z,t), (12.46) где V2 = Э2/Э х2 +д2/д у2 +д2/д z2 - оператор Лапласа. Уравнение (12.46) называется уравнением диффузии или уравнением Фоккера-Планка. Оно используется для описания динамики молекул газа и жидкости. Можно показать, что решением уравнения (12.45) для свободно- го пространства является функция 391
Компьютерное моделирование физических процессов в пакете МА TLAB 1 ~— P(x,t) = е 4D‘, (12.47) где P(x,t) — плотность вероятности обнаружить частицу в момент времени / в точке х, которая при t = находилась в точке х = 0. Функция, стоящая в правой части (12.47), для заданных моментов времени описывает нормаль- ное распределение. При этом с течением времени его ширина меняется про- порционально t^2. Задача 12.29 Убедитесь в том, что функция P(x,t), задаваемая выражением (12.47), является решением уравнения (12.45): X <x(z)> = j xP(x,t)dx = 0; (12.48) -X X (x2(f)} = jx2P(x,t)dx = 2Dt. (12.49) -X Анализ (12.49) показывает, что ~ г< как и для случая одномерных случайных блужданий на дискретной решетке. Обобщение (12.49) на cl- мерный случай дает (R2{t'^ = 2dDt, где (R2(t^ — квадрат смещения частицы. Уравнения (12.45), (12.46) относятся к уравнениям параболического ти- па. Численные (детерминированные) методы их решения будут рассмотре- ны нами позднее в гл. 15. Отметим, что для решения данных уравнений можно использовать не только детерминированные, но и случайные мето- ды, основанные на методе Монте-Карло. Для этого следует перейти от не- прерывных уравнений (12.45), (12.46) к их дискретным аналогам и исполь- зовать случайные блуждания на дискретной пространственной сетке с дис- кретными временными шагами. Так как асимптотическое поведение решений уравнения в частных производных и модели случайного блужда- ния оказываются одинаковыми, то в данном случае метод Монте-Карло яв- ляется методом численного анализа. Если целью исследования является изучение модели случайного блуждания на решетке, то метод случайного блуждания является методом моделирования. Следовательно, в данном слу- чае различие между моделированием и численным анализом определяется только точкой зрения исследователя. 392
12. Случайные блуждания Задача. 12.30 Обобщите, описанные в разделах 12.2, 12.3, методы случайных блужда- ний на случай трехмерной решетки. Вычислите зависимости (RN), для простой кубической решетки (z = 6) и оцените значе- ние V. Зависит ли значение v от размерности пространства? Вычисли- те значение коэффициента диффузии для трехмерных блужданий. Со- гласуется ли полученное вами значение с формулой (12.41)? ЛИТЕРАТУРА 1. Рейф Ф. Статистическая физика. М.: Наука, 1972. 2. Тейлор Дж. Введение в теорию ошибок. М.: Мир, 1985. 3. ГулдХ., ТобочникЯ. Компьютерное моделирование в физике. М.: Мир, 1990. Ч. 2. 4. Гросберг А. Ю., Хохлов А. Р. Физика в мире полимеров. М.: Наука, 1989. 5. Гросберг А. Ю., Хохлов А. Р. Статистическая физика макромолекул. М.: Наука, 1989. 6. Соболь И. М. Численные методы Монте-Карло. М.: Наука, 1973. 7. Кунин С. Вычислительная физика. М.: Мир, 1992. 8. Пресс В. П., Фланнери Б. П., Тьюкольски С. А., Веттерлинг В. Т. Численные рецепты. М.: Мир, 1990. 393
Глава 13 МОДЕЛИРОВАНИЕ СТАТИСТИЧЕСКОЙ СИСТЕМЫ В ПРОЦЕССЕ РЕЛАКСАЦИИ И СОСТОЯНИИ РАВНОВЕСИЯ 13.1. Введение В предыдущих главах мы смогли убедиться в эффективности компью- терного моделирования при изучении поведения систем, состоящих из большого количества частиц (систем со многими степенями свободы). Ока- зывается, что в модельных экспериментах даже с относительно небольшим числом частиц (по сравнению с реальными системами, содержащими по- рядка IO20—1025 взаимодействующих друг с другом атомов и/или молекул) можно выявить наиболее существенные особенности поведения статистиче- ских систем, понять механизмы, приводящие к такому поведению. Отметим важную особенность рассматриваемых систем, состоящую в стремлении с течением времени к беспорядку. В соответствии с современными представ- лениями именно данное свойство макроскопических систем определяет на- правление или «вектор времени». В этой главе мы продолжаем рассмотрение свойств систем, с многими степенями свободы, состояние которых может быть описано как путем за- дания координат, скоростей каждой частицы системы и законов их взаимо- действия (описание микроскопического состояния), так и путем задания некоторых усредненных параметров системы, например, средней темпера- туры макросистемы, средней концентрации молекул и т. д. (макроскопиче- ское описание). Для демонстрации понятий порядок и беспорядок, направ- ление времени, микроскопическое и макроскопическое описание системы нами используется модель, состоящая из А тождественных частиц, взаимо- действием которых друг с другом можно пренебречь (идеальный газ). Бу- дем также предполагать, что газ заключен в изолированный сосуд (т. е. не подвержен влиянию внешней системы или силы) и пребывает в покое в те- чение долгого времени. Адекватным аналогом модели идеального газа яв- ляется разреженный реальный газ, в котором время одного пролета между стенками сосуда много меньше, чем время между столкновениями двух мо- лекул. Выбранная модель позволяет использовать для описания изменения параметров микроскопических состояний системы, а через них и изменения макроскопических параметров, вероятностные методы.
13. Моделирование статистической системы 13.2. Моделирование процесса релаксации статистической системы Рассмотрим сосуд, в котором находится идеальный газ, разделенный перегородкой на две равные части, одна из которых в начальный момент времени пуста (рис. 13.1). В левой половине сосуда находится X молекул. После мгновенного удаления подвижной заслонки молекулы начинают пе- реходить из заполненной части сосуда в пустую. Поскольку движение каж- дой частицы происходит независимо от всех остальных, вероятность про- хождения через отверстие для всех частиц одинакова. Будем полагать, что в единицу времени через отверстие проходит одна частица. • • • I Рис. 13.1. К моделированию процесса релаксации статистической системы Для идентификации микро- и макросостояний рассматриваемой системы предположим, что частицы изначально пронумерованы от 1 до N. Микросо- сгояние будем описывать номерами частиц, находящимися в левой полови- не ящика, поскольку знание номеров этих частиц позволяет однозначно оп- ределить номера частиц, находящихся в правой половине ящика. В качестве макроскопической характеристики рассматриваемой системы будем ис- пользовать число молекул, находящихся в левой половине ящика. Основная цель исследования состоит в определении численности частиц в левой п и правой п' половинах ящика (и + п' = N) в заданные моменты времени. Оче- видно, что для получения однозначного ответа на данный вопрос требуется знание функции PN(n,t), определяющей вероятность нахождения в момент времени t в левой половине ящика п частиц. Один из методов нахождения функции PN (п, t) - метод точного перебо- ра, уже рассматривавшийся нами в гл. 12 при обсуждении метода случай- ных блужданий. Рассмотрим метод перебора для случая, когда при t = О п = 6 и п' = 0. При t = 1 возможна единственная комбинация: п = 5 , п' -1, отсюда Р(п = 5, t = 1) = 1. При t = 2 возможны комбинации, когда одна из шести частиц слева смещается направо или же частица справа возвращается в левую половину. Так как первая комбинация может реализоваться пятью различными способами, вероятность данного события Р(п = 4, t = 2) = 5/6 . 395
Компьютерное моделирование физических процессов в пакете МА TLAB Вторая комбинация реализуется единственным способом, поэтому вероят- ность данного события Р(п = 6, t = 2) = 1/6. Следовательно, при t = 2 сред- нее число частиц в левой половине ящика составляет 2 (п) = 4Р(и = 4,1 - 2) + 6Р(п = 6,1 = 2) = 4— . 6 На следующем шаге по времени имеем Р(п = 3,/ = 3) = (4/6) Р(п - 4,1 = 2) = 20/36, что отвечает перемещению одной из четырех остав- шихся частиц вправо. Рассуждая аналогично, найдем Р(п = 5, t = 3) = (1)Р(и = 6, t = 2) + (2/6)Р(и = 4, t = 2) = 16/36. Следовательно, при t = 3 среднее число частиц в правой половине ящика составляет (и) = 5Р(н = 5д = 3)+ЗР(п = 3,/ = 3) = з|. Так как полное число частиц мало, перебор удается продолжить еще не- сколько временных шагов. Однако, как легко видеть, количество комбина- ций быстро увеличивается с ростом t. При достаточно больших 7V и f число возможных комбинаций становится столь велико, что не хватит мощности даже современных компьютеров. В этих условиях, как и в задаче о случайных блужданиях, весьма эффек- тивным оказывается метод Монте-Карло. Напомним, что в методе Монте- Карло генерируется репрезентативная выборка случайных перемещений, являющаяся подмножеством множества всех возможных перемещений. При этом, чем больше окажется объем выборки, тем более высокая точность бу- дет у получаемых результатов. Для реализации метода Монте-Карло необходимо задать вероятность перехода частицы из левой половины ящика в правую. Так как любая час- тица с равной вероятностью может пройти через отверстие, вероятность пе- ремещения в единицу времени частицы из левой половины ящика в правую пропорциональна числу частиц в левой половине в данный момент времени, деленному на полное число частиц n/N. Используя данный факт, можно мо- делировать временную эволюцию модели в соответствии со следующим ал- горитмом: 1. Задание числа шагов Т. 2. Инициализация счетчика j=0. 3. Генерация случайного числа Prob в интервале от 0 до 1. 4. Сравнение Prob с текущим значением n/N в левой половине сосуда. 396
13. Моделирование статистической системы 5. Перемещение частицы слева направо, если Prob<n/N\ в противном направлении перемещаем частицу при Prob > n/N. 6. Повторение пунктов 3-5, пока j < Т. Для реализации описанного алгоритма в пакете MATLAB необходимо создать два файла: 1) файл ParticleAtTheLeft.m, содержащий описание функции, возвращающей единичную реализацию зависимости числа частиц в левой половине ящика п = n(t)‘, 2) файл Ensemble.m, содержащий описа- ние функции, возвращающей ансамбль реализаций зависимостей п = n(t). % листинг файла ParticleAtTheLeft.m function z=ParticleAtTheLeft(NParticle,N Step) % функция, возвращающая единичную реализацию зависимости п - n(t) % NParticle - число частиц в левой половине ящика в момент времени t = О % NStep - длина единичной реализации LeftN(l)=NParticle; for i=2:NStep Prob=LeftN(i-l)/NParticIe; if rand(l)<=Prob LeftN(i)=LeftN(i-l)-l; else LeftN(i)=LeftN (i-1)+1; end; end; z=LeftN; % листинг файла Ensemble.m function z = Ensemble(NTrial,NParticle,NStep) % NTrial - объем ансамбля реализаций % NParticle - число частиц в левой половине ящика в момент времени t = О % NStep - длина единичной реализации for i=l: NTrial Z=ParticleAtTheLeft(NParticle, NStep); ifi==l z=Z; else z=cat(3,z,Z); end; end; 397
Компьютерное моделирование физических процессов в пакете MATLAB Далее необходимо выполнить следующую последовательность команд: » NParticle=100; % число частиц системы » NStep=lOOO; % длина единичной реализации » NTrial=100; % объем ансамбля реализаций » E=Ensemble(100,NParticle,NStep); % вычисление ансамбля реализаций % визуализация выбранных из ансамбля реализаций зависимостей п = n(t) » figure(l);plot(i,E(l,:,l)>'k') » figure(2);plot(i,E(l,:,50),'k') » figure(3);plot(i,E(l,:,100),'k') % вычисление средней по ансамблю реализаций зависимости п = n(t) » for i=l:NStep for j=l:NTriaI s(j)=E(l,ij); end; Em(i)=mean(s); end; % визуализация средней по ансамблю реализаций зависимости п = n(t) »i=l:NStep; » figure(4);plot(i,Em); Результаты выполнения описанной последовательности команд пред- ставлены на рис. 13.2-13.5. Рис. 13.2. Зависимость числа частиц в левой половине ящика от времени № I 398
13. Моделирование статистической системы 100 j- Рис. 13.3. Зависимость числа частиц елевой половине ящика от времени № 50 Рис. 13.4. Зависимость числа частиц елевой половине ящика от времени № 100 Рис. 13.5. Усредненная по ансамблю реализаций зависимость числа часпищ в левой половине ящика от времени 399
Компьютерное моделирование физических процессов в пакете МА TLAB Анализ зависимости п = n(t), представленной на рис. 13.5, показывает, что с течением времени рассматриваемая система стремится к состоянию, в котором в обеих половинах ящика находится примерно одинаковое число частиц. Если пренебречь малыми случайными флуктуациями, то с макро- скопической точки зрения (когда нас интересует не номера частиц, находя- щихся в левой половине системы, но их количество) можно считать, что, начиная с некоторого момента, параметры системы перестают зависеть от времени. Данное состояние системы называется равновесным. Время, необ- ходимое системе для достижения равновесного состояния, называют време- нем релаксации Tret. Для оценки тге1 аппроксимируем зависимость п = n(t) аналитической функцией вида ceht +с, дополнив описываемый документ блоком, позволяющим оценивать неизвестные коэффициенты функции, ис- пользуя метод наименьших квадратов. Для аппроксимации нахождения коэффициентов аппроксимирующей функции в пакете MATLAB необходимо выполнить следующую последова- тельность команд: » NParticle=100; % число частиц системы » NStep=1000; % длина единичной реализации » NTrial=100; % объем ансамбля реализаций » E=Ensemble(NTrial,NParticIe,NStep); % вычисление ансамбля % реализаций % вычисление средней по ансамблю реализаций зависимости п = n(t) » for i=l:NStep for j=l:NTrial s(j)=E(l,ij); end; Em(i)=mean(s); end; % нахождение функции, аппроксимирующей зависимость п = n(t) » F10=inIine(,exp(u(l)+u(2).*z)+u(3)','u','z') % задание % аппроксимирующей функции F10 = Inline function: FlO(u^z) = exp(u(l)+u(2).*z)+u(3) » i=l:NStep; »x(i)=i; » beta=nIinfit(x,Em,F10,[5 -0.1 1]) % функция, возвращающая решение % системы уравнений метода 400
13. Моделирование статистической системы % наименьших квадратов % [5 -0.1 1] - начальные значения % искомых коэффициентов beta = 3.9297 -0.0198 49.9048 % визуализация зависимости п = n(t), усредненной по ансамблю % реализаций, и аппроксимирующей ее функции » plot(x,Em,'k',x,F10(beta,x),'k') Результат выполнения описанной последовательности команд представ- лен на рис. 13.6. 100 90 80 ГО 60 50 Рис. 13.6. Зависимость п = n(t) и аппроксимирующая ее функция Время релаксации изучаемой системы к состоянию равновесия может быть определено из очевидного равенства Nlefl:=aehTrel +с, (13.1) откуда trel :=W—} (13.2) Ь < а ) где =--------с ,N- число точек зависимости п- n(t). 401
Компьютерное моделирование физических процессов в пакете MATLAB В обозначениях, выбранных в документе MATLAB, формула (13.2) при- нимает следующий вид: 1 . АА ГН Trel' beta(i) nLtea(lJ’ где NParticle AV :=-----------betalb) . (13.4) Таким образом, для вычисления оценки времени релаксации необходимо дополнить описываемый документ следующими командами: » dN=abs(NParticle/2-beta(3)); »tau=floor(l/beta(2) *Iog(dN/beta(l))) tau = 187 Задача 13.1 Дополните, описанную выше последовательность команд, блоком ко- манд, позволяющим для заданного набора числа частиц рассматривае- мой системы проводить автоматические вычисления времени релакса- ции. Отобразите зависимость rrel =Trel(N _ Particle) графически. Ка- кой функцией можно аппроксимировать данную зависимость? Объясните полученный результат с физической точки зрения. Мерой равновесных флуктуаций служит дисперсия <rN числа частиц в левой половине ящика, определяемая равенством (13.5) здесь ( ) означают усреднение по времени, проводимое после достижения системой состояния равновесия. Для автоматизации вычислений величины относительной флуктуации (pNltl}/{^left) ПРИ различном числе частиц сис- темы необходимо создать файл Fluct.m, описание функции, возвращающей значения относительных флуктуаций числа частиц, находящихся в левой половине ящика, для заданных значений числа частиц системы. % листинг файла Fluct.m function Z = Fluct(Vect_Particle,NTrial,NStep) % функция, возвращающая значения относительных флуктуаций числа % частиц, находящихся в левой половине ящика, для заданных в векторе % Vect_Particle значений числа частиц системы Vect_Particle - вектор, % содержащий заданные значения числа частиц системы % NTrial - число испытаний 402
13. Моделирование статистической системы % NStep - длина единичной реализации M=length( V ect_Particle); F10=inline('exp(u(l)+u(2).*z)+u(3)','u',,z'); % задание вида функции, % аппроксимирующей % зависимость п = n(t) n=l:NStep; x(n)=n; for m=l:M E=Ensemble(NTrial,Vect_Particle(m),NStep); % вычисление мгновенных % значений зависимости п = n(t) % для системы, состоящей из % Vect_Particle(m) частиц % вычисление мгновенных значений зависимости п = п(t), % усредненной по ансамблю реализаций for i=l:NStep for j=l: Vect_Particle(m) s(j)=E(l,ij); end; Em(i)=mean(s); end; % оценка времени релаксации системы, состоящей % из Vect Particle(m) частиц beta=nlinfit(x,Em,F10,[5 -0.11]); dN=abs(Vect_Particle(m)/2-beta(3)); tau=floor(l/beta(2)*Iog(dN/beta(l))); % вычисление мгновенных значений числа частиц, находящихся % в левой половине ящика в равновесном состоянии к=1; for j=tau:NStep z(k)=Em(j)-Vect_Particle(m)/2; zl(k)=Em(j); k=k+l; end; Z(m)=std(z)/mean(zl); % относительная флуктуация числа, частиц % находящихся в левой половине ящика, % в равновесном состоянии от времени end; Далее необходимо выполнить следующую последовательность команд: >i=l:13; » V(i)=10+3*(i-l); » NTrial=100; % число испытаний 403
Компьютерное моделирование физических процессов в пакете МА TLAB » NStep=1000; % длина единичной последовательности вычисление % и визуализация зависимости величины относительных флуктуаций % от числа частиц статистической системы » A=Fluct(V,NTrial,NStep); » plot(V,A,'kx'); axis([9 49 0 0.1]) 0.1^----!-----1----------»--->----T-----!--- 009 0.08 0.07 0.08 - 0.05 - 0.04 X 0.03 - * 0.02 X 0.01 ° 10 15 20 25 ~30 35 4O~ 45 Puc. 13.7. Зависимость величины относительных флуктуаций от числа частиц системы Результат выполнения описанной последовательности команд представ- лен на рис. 13.7. Анализ зависимости, представленной на рис. 13.7, позволя- ет предположить, что величина относительных флуктуаций числа частиц, находящихся в левой половине ящика, зависит от числа частиц системы как 1/Va . Для проверки гипотезы аппроксимируем данную зависимость функ- цией вида а/'lb-х + с . Для нахождения коэффициентов аппроксимирующей функции необхо- димо выполнить следующую последовательность команд: »i=l:13; » V(i)=10+3*(i-l); » NTrial=100; % число испытаний » NStep=1000; % длина единичной последовательности % вычисление и визуализация зависимости величины относительных % флуктуаций от числа частиц статистической системы » A=Fluct(V,NTrial,NStep); » plot(V,A,’kx’); axis([9 49 0 0.1]) % вычисление коэффициентов функции, аппроксимирующей 404
13. Моделирование статистической системы % зависимость относительной величины флуктуаций % от числа частиц системы » Fl l=inline('u(l) J(u(2).*z+u(3)).A0.5','u','z'); » beta=n!infit(V,A,Fll,[l 3 -1]); % визуализация аппроксимирующей функции » Nx=500; » j=l:Nx; » s(j)=min(V)+(max(V)-min(V))/Nx*j; » plot(V,A,'kx'^s,Fll(beta,s),'k');axis([9 49 0 0.1]) Результаты выполнения описанной последовательности команд пред- ставлены на рис. 13.8. 0.1 0.09 0.08 0.07 0.06 0.05 004 0.03 0.02 0.01 ° 10 15 20 25 30 35 «0 «5 Рис. 13.8. Зависимость величины относительных флуктуаций от числа частиц системы Задача 13.2 Аппроксимируйте зависимость (сгleft} функциями другого вида. Для каждой функции вычислите сумму квадратов отклонений между точными значениями зависимости (cFf, }^Nlefi} и значениями аппрок- симирующей функции в соответствующих точках. Сравните данные значения и проверьте, что для функции вида а/ЛЬ-х + с данная величи- на оказывается наименьшей. 405
Компьютерное моделирование физических процессов е пакете MATLAB 13.3. Энтропия Результаты, полученные в вычислительных экспериментах, описанных в предыдущем разделе, демонстрируют фундаментальное свойство систем, состоящих из большого числа частиц. Оказывается, что любая изолирован- ная статистическая система независимо от начального состояния стремится с течением времени прийти в состояние равновесия. В этом состоянии все макроскопические величины, характеризующие термодинамическое равно- весное состояние системы, в пренебрежении малыми флуктуациями не зависят от времени. Для изучения основных свойств статистических систем мы использова- ли модель, состоящую из относительно небольшого числа частиц, движение которых подчинялось вероятностным законам. Для выбранной модели ока- зывается возможным подсчитать для каждого макросостояния число воз- можных микросостояний, так как, во-первых, каждая частица может пребы- вать только в одном из двух состояний (в левой или правой половине ящи- ка), во-вторых, местонахождение каждой частицы не зависит от положения остальных частиц. Данные условия означают, что распределение частип подчиняется биномиальному закону. Следовательно, число возможных микросостояний £1п для макросостояния, в котором слева находится и, справа - п (п + п = N), равно N'Jn'.ril. Число микросостояний С1п для N = 16 приводятся в табл. 13.1. Таблица 13.1. Число микросостояний £1п и энтропия Sn =lnQ(l для N =16 частиц в ящике п Q„ ln(Q„) п Qn ln(Q„) 0 1 0 9 11440 9.34 1 16 2.77 10 8008 8.99 2 120 4.79 11 4368 8.38 3 560 6.33 12 1820 7.51 4 1820 7.51 13 560 6.33 5 4368 8.38 14 120 4.79 6 8008 8.99 15 16 2.77 7 11440 9.34 16 1 0 8 12870 9.46 Анализ данных, представленных в табл. 13.1, показывает, что макси- мальное число микросостояний соответствует значению п = 8, т. е. равно- весному состоянию. Так как число микросостояний является показателем 406
13. Моделирование статистической системы «степени беспорядка» системы, можно утверждать, что равновесное состоя- ние отвечает «состоянию максимального беспорядка». В отличие от этого макросостояние с п = 0 отвечает состоянию нулевого беспорядка, так как систему можно обнаружить в единственном микросостоянии. В качестве количественной характеристики степени беспорядка используют энтропию S, введенную в физику Л. Больцманом, = &glnQn, (13.6) где Q,, — полное число всех возможных микросостояний, соответствующих n; kB — постоянная Больцмана. Данная величина определяется так, чтобы при существовании только одного микросостояния ее значение равнялось нулю и возрастало при уве- личении числа микросостояний. Присутствующая в (13.6) постоянная обес- печивает соответствие между термодинамическим и статистическим опре- делением энтропии 5. Для целей наших исследований значение постоянной Больцмана не имеет принципиального значения, поэтому в дальнейшем мы будем полагать kB равным единице, что эквивалентно измерению энтропии в единицах кв. Для вычисления энтропии требуется перебор всех возможных микросо- стояний, что в общем случае оказывается неразрешимой задачей, потому для измерения энтропии применяют метод, в котором используются на- блюдаемые характеристики статистической системы. В данном методе ис- пользован тот факт, что всякая система, состоящая из большого числа час- тиц, в течение времени t —> со обязательно повторит любое микросостояние (или близкое к нему микросостояние). При этом, чем меньше времени про- ходит до совпадения двух некоррелированных микросостояний, тем меньше имеется различных микросостояний и, следовательно, меньше энтропия системы. Наблюдаемая характеристика системы, которая может быть изме- рена, — это отношение числа совпавших пар к полному числу проведенных сравнений микросостояний Rn (частота совпадений микросостояний). Эн- тропия связана с частотой совпадений микросостояний выражением S„=-ln/?„. (13.7) Формула (13.7) позволяет построить алгоритм вычисления энтропии, реализующийся следующей последовательностью действий. 1. Создать систему, находящуюся в состоянии равновесия. 2. Наблюдать состояние системы в течение длительного времени, осу- ществляя на каждом шаге по времени обмен двумя частицами, номера кото- 407
Компьютерное моделирование физических процессов в пакете MATLAB рых выбираются случайным образом независимо друг от друга и микросо- стояния в соответствующие моменты времени. 3. Вычислить число совпадающих микросостояний. 4. Вычислить значение энтропии в соответствии с (13.7). Отметим, что формула (13.7) применима только к равновесным систе- мам, поэтому для реализации описанного алгоритма требуется обеспечить постоянство частиц в левой и правой половинах ящика. Следовательно, вы- числительный алгоритм, использованный нами в разделе 13.2, в котором число частиц в каждой половине ящика флуктуировало за счет случайных перемещений частиц, требует определенной модификации. Удовлетворить требованию нахождения системы в состоянии равновесия удается, если ис- пользовать модель, в которой система эволюционирует путем обмена одной частицы справа на одну частицу слева. При этом возникает необходимость в маркировке каждого микросостояния для их последующего сравнения и подсчета числа совпадающих микросостояний. Один из известных методов, который мы будем использовать в дальнейшем, состоит в описании каждого микросостояния числом М NKft М = ^21 , (13.8) 1=1 где I — номер частицы, а суммирование проводится по всем частицам, находящимся в левой половине ящика. Для реализации описанного выше алгоритма в пакете MATLAB необходи- мо создать два файла: файл Exchange.m, содержащий описание функции, воз- вращающей вектор, содержащий мгновенные значения числа; файл Entropy.m, содержащий описание функции, возвращающей значение энтропии. % листинг файла Exchange.m function z = Exchange(NParticle,NExchange) % функция, возвращающая мгновенные значения числа М % NParticle - полное число частиц системы % NExchange - число обменов % задание начальной конфигурации NL=NParticle/2; s=0; for i=l:NL L(i,l)=i; L(i,2)=i+NL; s=s+2AL(i,l); 408
13. Моделирование статистической системы end; % вычисление мгновенных значений числа М M(l)=s; for m=l :N Exchange Ri=floor(NL*rand(l)+l); Li=floor(NL*rand(l)+l); Rp=L(Ri,2); Lp=L(Li,l); L(Li,l)=Rp; L(Ri,2)=Lp; M(m+l)=M(m)+2.ARp-2.ALp; end; z=M; % листинг файла Entropy.m function z = Entropy(M) % функция, возвращающая значение энтропии % вектор, возвращенный функцией Exchange К=0; Nc=0; N=length(M); for i=l:N for j=i:N K=K+1; ifM(i)==M(j) Nc=Nc+l; end; end; z=-log(Nc/K); end; Далее необходимо выполнить следующую последовательность команд: » N=10; % число частиц системы » Ne=4000; % число обменов » A=Exchange(N,Ne); % маркировка мгновенных микросостояний » Entropy(A) % вычисление энтропии ans = 5.3867 »log(factorial(N)/factorial(N/2).A2) % вычисление точного % значения энтропии ans = 5.5294 409
Компьютерное моделирование физических процессов в пакете MATLAB Задача 13.3 Модифицируйте функцию Entropy так, чтобы она возвращала частоту совпадений Rn и энтропию S„ для каждого микросостояния частиц в ящике. Сравните полученные результаты для Rn, S„ с точными. Оце- ните погрешности значений R,„ Sn, найденных методом Монте-Карло. Исследуйте зависимость точности вычисляемых значений R„, S„ для за- данного числа частиц от числа перестановок. Рассмотрите случаи систем, содержащих различное число частиц N. Какое наибольшее зна- чение И можно использовать при выбранном способе маркировки мик- росостояний? Объясните полученные результаты. Задача 13.4 Модифицируйте функцию Exchange так, чтобы она возвращала массив, содержащий номера частиц данного микросостояния, находящихся в левой и правой половинах ящика в заданные моменты времени. Задайте функцию, вычисляющую по заданному массиву временной интервал, со- ответствующий появлению микросостояния, в котором нет ни одной частицы, из присутствующих в начальном микросостоянии (в момент времени t = 0). Данное событие можно трактовать как появление пер- вого состояния некоррелированного с начальным микросостоянием, а соответствующий временной интервал как время корреляции Тс. Оцените значение Тс для заданного числа частиц по результатам не- скольких испытаний. Вычислите значение энтропии системы, анализи- руя микросостояния, достигаемые системой в моменты времени t>Tc. Оцените точность вычисления значений Rn, Sn в данном случае. Рас- смотрите случаи систем, содержащих различное число частиц N. Определение энтропии (13.8), использованное нами выше, пригодно только для равновесных статистических систем, т. е. систем, находящихся в определенном макросостоянии. В то же время результаты исследования по- ведения системы невзаимодействующих частиц в ящике, проведенного на- ми в разделе 13.2, показывают, что даже в положении равновесия количест- во частиц п, п' в левой и правой половинах ящика меняются во времени. Существование флуктуаций (т. е. фактическое отсутствие фиксированного макросостояния) определяет необходимость обобщения (13.8). Для получе- ния обобщенной формулы заметим, что вероятность появления равновесно- го макросостояния, характеризующегося числом частиц п в левой половине ящика, равна Рп , а энтропия, соответственно, равна Зп. Совокупность всех возможных значений Sn для данной статистической системы можно рас- 410
13. Моделирование статистической системы сматривать как реализацию некоторой случайной последовательности, а со- ответствующие значения Рп как частоты их появления. Следовательно, эн- тропия 5 рассматриваемой системы может быть определена, как взвешенная сумма, вычисляемая по всем возможным реализациям: S = YP'>S”- <13-9) п Для модели частиц в ящике вероятность появления макросостояния с п частицами слева Рп может быть вычислена путем подсчета микросостоя- ЛП нии, отвечающих данному макросостоянию, —---------- и делением на пол- nl(N-и)! N Ml “ № оЛ1 ное число возможных микросостоянии 2^—--------— = 2 . п=0П'\ Задача 13.5 Вычислите аналитически Рп (n=Q,N) для№=10,20. Значение вероятности Рп можно также вычислить по последовательно- сти состояний, подсчитав количество появлений каждого макросостояния и разделив соответствующие суммы на полное число событий. Для повыше- ния точности следует проводить вычисление данной величины по ансамблю независимых реализаций. Напомним, что в 13.2, был описан документ, по- зволяющий генерировать ансамбль независимых случайных реализаций при релаксации статистической системы к равновесию, вычислять усредненные значения параметров, характеризующих макроскопическое состояние сис- темы, и оценивать время релаксации. Для нахождения значения вероятности Рп следует создать файл Prob.m, содержащий описание функции, возвра- щающей значение вероятности обнаружить данное микросостояние, одно- значно описываемое числом частиц в левой половине ящика. % листинг файла Prob.m function z = Prob(B,NParticle,TauReI) % функция, возвращающая вероятность появления равновесного % макросостояния Nc=size(B,3); Nr=size(B,2); for k=O:NParticle n=0; for j=l:Nc 411
Компьютерное моделирование физических процессов в пакете MATLAB for i=TauRel:Nr if B(l,ij)==k n=n+l; end; end; end; N(k+l)=n; end; Nf=sum(N); z=N/Nf; Далее необходимо выполнить следующую последовательность команд: » NTrial=100; % число испытаний » NParticIe=100; % число частиц системы » NStep=200; % длина единичной реализации » E=Ensemble(NTriaI,NParticle,NStep); % генерация ансамбля реализаций » tau=150; % момент времени, начиная с которого проводится % подсчет числа макросостояний системы » A=Prob(E,NParticle,tau); % вычисление вероятности появления % данного макросостояния % вычисление теоретического значения вероятности » for i=0: NParticle PTheory(n+l)=factorial(NParticle)/... (factorial(n)*factorial(NParticle-n))/2ANParticle; end; % визуализация экспериментальной и теоретической зависимостей % вероятности появления данного макросостояния от числа, % частиц, находящихся в левой половине ящика » plot(n,A,,k',n,PThejry,'"k') Результаты выполнения описанной последовательности команд пред- ставлены на рис. 13.9. Задача 13.6 Сравните для заданных значений N (например, 10, 20) вычисленные и точные значения вероятности Рп . Как зависит точность численных значений Рп от числа частиц системы и объема ансамбля реализаций? 412
13. Моделирование статистической системы Задача 13.7 Вычислите для заданных значений N равновесную энтропию, в соот- ветствии с соотношением (13.9). При этом используйте значения вероятностей Рп, найденные в задаче 13.6, и соответствующие значения энтропии, вычисленные с помощью документа, описанного в данном разделе. Сравните точное и расчетные значения равновесной энтропии. Оцените точность расчетного значения. Рис. 13.9. Зависимость вероятности появления данного макросостояния от числа частиц, находящихся в левой половине ящика (сплошная кривая - эксперимент, пунктирная кривая - теория) Задача 13.8 В функции, возвращающей значения вероятности появления равновесно- го макросостояния, характеризующегося числом частиц п в левой поло- вине ящика (рис. 13.6), использован не самый эффективный с вычисли- тельной точки зрения алгоритм, так как проводится проверка на нали- чие всех возможных макросостояний (цикл по переменной к). Можно существенно сократить время вычислений, если предварительно опре- делять минимальное и максимальные отклонения числа частиц от рав- новесного значения и затем рассматривать только данный диапазон возможных макросостояний. Дополните текст функции Р( ) соответ- ствующим фрагментом. Убедитесь в том, что внесенные вами изме- нения в программу действительно привели к уменьшению времени вы- числений. 413
Компьютерное моделирование физических процессов в пакете MATLAB Задача 13.9 Используя усредненную по ансамблю реализаций зависимость п = , вычислите по точной формуле значения энтропии в соответствующие моменты времени. Изобразите графически зависимость энтропии от времени. Исследуйте, как зависит величина флуктуаций энтропии от числа частиц системы. Объясните полученный результат. ЛИТЕРАТУРА 1. Райф Ф. Статистическая физика. М.: Наука, 1986, 2. Матвеев А. Н. Молекулярная физика. М.: Высшая школа, 1981. 3. Климентович Ю. Л. Статистическая физика. М.: Наука, 1982. 4. Методы Монте-Карло в статистической физике/Под ред. К. Биндера. М.: Мир, 1982. 5. Гмурман В. Е. Теория вероятностей и математическая статистика. М.: Высшая школа, 1998. 6. Гулд X., Тобочник Я. Компьютерное моделирование в физике. М.: Мир, 1990. 414
Глава 14 МОДЕЛИРОВАНИЕ МИКРОКАНОНИЧЕСКОГО АНСАМБЛЯ МЕТОДОМ МОНТЕ-КАРЛО 14.1. Микроканонический ансамбль Введем, следуя общепринятому в статистической физике подходу, поня- тие «микроканонический ансамбль». Рассмотрим для этого замкнутую сис- тему, состоящую из W частиц. Выберем в качестве макроскопических харак- теристик системы объем V и полную энергию системы Е, которые будем считать постоянными. Кроме того, предположим, что система является изо- лированной, т. е. можно пренебречь влиянием на нее внешних факторов. Замкнутые макроскопические системы, как было показано в гл. 10 и 13, стремятся перейти в стационарное равновесное состояние, обладающее максимальной энтропией. Отметим, что если на макроскопическом уровне система характеризуется тремя величинами N, V, Е, то на микроскопиче- ском уровне существует огромное число конфигураций, реализующих за- данное макросостояние (Л\У,Е). Таким образом, на возможные микросостояния накладывается единст- венное ограничение, они должны быть таковыми, чтобы обеспечить задан- ные физические характеристики системы: число частиц, объем, полную энергию. Так как причины, по которым следует предпочесть одно состояние другому, отсутствуют, можно постулировать, что система в любой момент времени может оказаться с равной вероятностью в одном из возможных микросостояний (постулат о равенстве априорных вероятностей). Это озна- чает, что для системы с Q достижимыми состояниями вероятность обнару- жить систему в микросостоянии j равна f 1 р _ —, если j - достижимо (14 1) 0, в противном случае Как очевидно, сумма Р$ по всем Q равна единице. Для определения средних значений физических величин, характеризую- щих макроскопическую систему, можно использовать два способа. В пер- вом способе измеряют физические величины в течение достаточно большо- го промежутка времени, в течение которого система успевает побывать в большом числе достижимых микросостояний, и проводят последующее ус-
Компьютерное моделирование физических процессов в пакете MATLAB реднение. Данный подход был уже использован нами в гл. 10, когда мето- дом молекулярной динамики рассчитывались средние значения температу- ры и давления неидеального газа. С точки зрения проведенного усреднения во времени, вероятность Ps есть доля времени, когда система за время на- блюдений находится в данном микроскопическом состоянии s. Несмотря на очевидный физический смысл средних по времени, в стати- стической физике вводят понятие статистических средних в данный момент времени, которые вычисляются по ансамблю микросостояний, соответст- вующих заданному макросостоянию. (Гипотеза о совпадении средних зна- чений величин, вычисляемых усреднением по времени и усреднением по ансамблю реализаций, называется эргодической гипотезой.) Полное число систем в ансамбле равно числу возможных микросостояний. Вероятность обнаружить в ансамбле тождественных систем 5-ую реализацию, определя- ется выражением (14.1). Ансамбль систем, характеризуемый величинами Е, Т, V, и описываемый распределением вероятностей вида (14.1), называется микроканоническим ансамблем. Будем считать, что система характеризуется некоторой величиной А, значение которой в 5-м состоянии равно А$. Тогда среднее значение А по ансамблю определяется как взвешенное среднее (A) = ^ASPS. (14.2) 5 Из (14.2) видно, что для нахождения среднего по ансамблю значения ве- личины необходимо знать значения вероятностей Ps. При небольшом числе частиц значения вероятностей можно определить методом перебора, анало- гично тому, как это сделано в гл. 12 при моделировании случайных блужда- ний. Однако при увеличении числа частиц данный метод становится непри- емлемым из-за большого объема вычислений. В этих условиях приходится использовать приближенные методы, среди которых одним из самых эф- фективных является метод Монте-Карло. 14.2. Моделирование микроканонического ансамбля Общая идея метода Монте-Карло для микроканонического ансамбля состо- ит в получении репрезентативной выборки из полного числа микросостояний и оценке с ее использованием значения вероятности Р$. Для этого можно исполь- зовать достаточно очевидную процедуру: зафиксировать полное число частиц N и объем системы V, изменять случайным образом координаты и скорости от- дельных частиц, принимать конфигурации микросостояний, имеющих задан- ную полную энергию. К сожалению, данная процедура оказывается весьма не- 416
14. Моделирование микроканонического ансамбля методом Монте-Карло эффективной, так как большинство конфигураций вообще не будут иметь тре- буемую полную энергию и должны быть отвергнуты. Эффективная вычислительная процедура метода Монте-Карло для мик- роканонического ансамбля была предложена в [1]. Она состоит в разделе- нии исходной макроскопической системы на две подсистемы: исходную, называемою далее системой, и подсистемы, состоящей из одного элемента, которую авторы назвали демоном (по аналогии с демоном Максвелла). Роль демона аналогична роли члена кинетической энергии в методе молекуляр- ной динамики, обсуждавшегося в гл. 10. Обходя элементы системы и пере- давая энергию, он обеспечивает изменение конфигурации системы. Если энергии, запасенной в мантии демона, оказывается достаточно, он отдает энергию тому элементу системы, которому требуется энергия, для осущест- вления изменения конфигурации. И наоборот, если для изменения конфигу- рации требуется уменьшить энергию системы, энергия передается частицей демону. Единственное ограничение состоит в том, что энергия демона должна быть положительной. Описанная процедура алгоритмически выгля- дит следующим образом. 1. Сгенерировать начальную конфигурацию системы с заданным значе- нием полной энергии. 2. Выбрать случайным образом частицу и произвести пробное изменение ее координат. 3. Вычислить полную энергию системы в новом состоянии. 4. Если в новом состоянии энергия системы оказывается меньше, то система отдает энергию демону, и новая конфигурация принимается. 5. Если в новом состоянии энергия системы оказывается больше, то но- вая конфигурация принимается, если энергии демона достаточно, чтобы пе- редать ее системе. В противном случае новая конфигурация не принимает- ся, и частица сохраняет свои старые координаты. 6. Если пробное изменение не меняет энергию системы, то новая конфигурация принимается. Перечисленные выше действия повторяются до получения репрезента- тивной выборки микросостояний. Можно ожидать, что через некоторый промежуток времени система достигнет равновесного состояния, в котором у системы и демона будут некоторые средние (для каждого) значения энер- гии. При этом значение полной энергии системы остается постоянной. Так как демон представляет собой только одну степень свободы, в отличие от рассматриваемой статистической системы можно ожидать, что флуктуации системы будут невелики. Применим описанный алгоритм к классическому одномерному идеальному газу, скорости частиц которого непрерывны и неограниченны, а энергия частиц не зависит от положения частиц, поэтому полная энергия частиц есть сумма 14-1576 417
Компьютерное моделирование физических процессов в пакете МА TLAB кинетических энергий отдельных частиц. Для изменения конфигурации будем случайным образом изменять скорость случайно выбранной частицы. Для реализации описанного алгоритма в пакете MATLAB создадим два m-файла: 1) файл InitD.m, содержащий описание функции, возвращающей абсолютные значения скоростей в момент времени t = 0; 2) файл Demon.т, содержащий описание функции, возвращающей усредненные по ансамблю реализаций значения: энергии демона (Edave), средней энергии системы на одну частицу (Esysave), средней скорости на одну частицу системы (Vave), среднего числа принятия (Accept). % листинг файла InitD.m function i = Init(N,Esystem) % функция, возвращающая абсолютные значения скоростей в момент t = О % N - число частиц системы % Esystem - энергия системы V=(EsystemJN).A0.5; for i=l:N z(i)=V; end; % листинг файла Demon.m function [Edave,Esysave,Vave,Accept] = Demon(N,Esystem,NTrial,Vel,dV) % функция, возвращающая усредненные по ансамблю реализаций % значения: энергии демона (Edave), средней энергии системы на одну % частицу (Esysave), средней скорости на одну частицу системы (Vave), % среднего числа принятия (Accept). Edemon=0; Vtot=sum(Vel); Vcum=0; Escum=0; Edcum=0; Accept=0; for j=l:NTrial for i=l:N dv=(2*rand(l)-l)*dV; % случайное изменение скорости Ip=floor(N*rand(l)+l); % случайный выбор частицы VTriai=Vel(Ip)+dv; % пробное изменение скорости de=0.5*(VTrial.A2-VeI(Ip)A2); % пробное изменение энергии if de<=Edemon % если энергия уменьшается изменение принимается Vel(Ip)=VTrial; Vtot=Vtot+dv; Ассер t=Accept+1; 418
14. Моделирование микроканонического ансамбля методом Монте-Карло Edemon=Edemon-de; Esy stem=Esy stem+de; end; Edcum=Edcum+Edemon; Escum=Escum+Esystem; Vcum=Vcum+Vtot; end; end; Edave=Edcum/(NTrial*N); Accept=Accept/(NT rial*N); Esysave=l/N*Escum/(NTrial*N); Vave=l/N*Vcum/(NTrial*N); Далее необходимо выполнить следующую последовательность команд: » Esystem=40; % энергия системы » N=40; % число частиц системы » NTrial=4000; % число испытаний » dV=2*2A0.5; % максимальное значение изменения скорости » Vel=InitD(N,Esystem); % задание начальных скоростей % вычисление характеристик состояния идеального газа »[Edave Esysave Vave Accept]=Demon(N,Esystem,NTrial,Vel,dV) Edave = 0.9566 Esysave = 0.9761 Vave = 1.5695e-004 Accept = 0.5119 Задача 14.1 Проведите численные расчеты для заданных значений числа частиц (А =10,20,40,80), и различных значений отношения dV/_ Изобразите графически зависимости коэффициента принятия (Accept) от dVIпри заданном числе частиц. Используя метод наи- меньших квадратов, подберите аналитическое выражение, описываю- щее зависимость коэффициента принятия (Accept) от dV I . 419
Компьютерное моделирование физических процессов в пакете MATLAB При каком отношении dV -J -- значение коэффициента приня- тия оказывается ~0.5? Задача 14.2 Модифицируйте описанную выше функцию Demon( ) так, чтобы номера частиц, скорость которых подлежит изменению (переменная 1р), выби- рались последовательно. Приводит ли изменение способа выбора номера частицы к изменению средней энергии системы на частицу и средней энергии демона? Задача 14.3 Можно ввести кинетическое определение температуры, в соответст- вии с которым температура определяется из соотношения 1 / 2\ 1 2WV/=24"’ (143) где -^-m/v2 '/ — средняя кинетическая энергия на частицу, Tkjn — темпера- тура газа, измеряемая в единицах кв. Модифицируйте описанную выше функцию Demon(), представленную на рис. 14.2, так, чтобы в программе дополнительно вычислялось и дополнительно выводилось в векторе, возвращаемом данной функцией, значение средней кинетиче- ской энергии на одну частицу. Используя соотношение (14.3), получите Tkjn. Как связаны значения температуры и энергии демона? Один из наиболее важных результатов, полученных в задаче 14.3, состо- ит в демонстрации возможности введения кинетического определения тем- пературы, как средней на одну частицу кинетической энергии частицы мик- роканонического ансамбля. При этом значение температуры с некоторой погрешностью оказывается равной энергии демона. В то же время микрока- нонический ансамбль нельзя считать абсолютно адекватной моделью ре- альных статистических систем, так данные системы не являются термоди- намически изолированными, но находятся в тепловом контакте с окружаю- щей средой. Это приводит к возникновению потока тепла между изучаемой системой и окружающей средой. Так как размер исследуемой системы обычно много меньше размера окружающей среды, первую будем называть микросистемой, а последнюю — тепловым резервуаром (термостатом). При этом закон сохранения полной энергии относится к составной системе, со- стоящей из микросистемы и теплового резервуара. 420
14. Моделирование микроканонического ансамбля методом Монте-Карло Рассмотрим большое число воображаемых копий микросистемы и теп- лового резервуара. Рассматриваемые как единое целое микросистема и теп- ловой резервуар являются изолированной термодинамической системой и могут быть описаны с помощью микроканонического ансамбля. Так как в данном случае наибольший интерес представляют равновесные значения физических величин, описывающих микросистему, необходимо знать веро- ятность Р$, с которой микросистема обнаруживается в состоянии s с энерги- ей Е$. Ансамбль, который описывает распределение вероятностей состоя- ний микросистемы, находящейся в термодинамическом равновесии с тепло- вым резервуаром, называется каноническим. В общем случае в качестве микросистемы может выступать любая мак- роскопическая система, размер которой меньше теплового резервуара, в том числе и отдельная частица, выделенная среди других частиц теплового ре- зервуара. Примером такой микросистемы служит демон, которого можно считать микросистемой, микроканоническое состояние которой определяет- ся только ее энергией. Таким образом, метод отыскания распределения ве- роятностей в каноническом ансамбле заключается в том, чтобы выполнить численное моделирование демона, который обменивается энергией с иде- альным газом, состоящим из N частиц. Идеальный газ в данном случае иг- рает роль термостата и задача состоит в определении плотности вероятно- сти P(Ed) того, что демон имеет энергию Ed . Вычислительный алгоритм, позволяющий решить данную задачу, достаточно очевиден. 1. Провести моделирование канонического ансамбля методом Монте- Карло, сохраняя на каждом шаге Монте-Карло значение энергии демона. 2. Для найденной реализации значений энергии демона вычислить рас- пределение вероятностей P(Ed )ЕЕ. 3. Определить функциональную зависимость P(Ed)AE от температуры. Для реализации данного алгоритма в пакете MATLAB создадим ш-файл DemonE.m. содержащий описание функции, возвращающей мгновенные (на каждом шаге Монте-Карло) значения энергии демона. % листинг файла DemonE.m function z = DemonE(N,Esystem,NTrial,Vel,dV) % функция, возвращающая мгновенные значения энергии демона % N - число частиц системы % Esystem - энергия системы % NTrial - число испытаний % Vel - вектор, возвращенный функцией InitD 421
Компьютерное моделирование физических процессов в пакете МА TLAB % dV - максимальное изменение скорости Edemon=0; z(l)=Edemon; k=l; for j=l:NTrial for i=l:N dv=(2*rand(l)-l)*dV; % случайное изменение скорости Ip=floor(N*rand(l)+l); % случайный выбор номера частицы V trial=V el(Ip)+d v; de=0.5*(Vtrial.A2-Vel(Ip).A2); % пробное изменение энергии if de<=Edemon % если энергия уменьшается, то пробное % изменение принимается Vel(Ip)=Vtrial; Edemon=Edemon-de; end; k=k+l; z(k)=Edemon; end; end; Далее необходимо выполнить следующую последовательность команд: » Esystem=40; % энергия системы » N=40; % число частиц системы » NTrial=500; % число испытаний » dV=2*2A0.5; % максимальное изменение скорости » Vel=InitD(N,Esystem); % вычисление начальных скоростей частиц » Ed=DemonE(N,Esystem,NTrial,Vel,dV); % вычисление мгновенных % значений энергии демона % визуализация зависимости мгновенных значений энергии % демона от времени »i=l:length(Ed); » figure(l);plot(i,Ed,'k');axis([0 20000 0 8]) % вычисление и визуализация распределения вероятностей P{Ed )ДЕ » xl=min(Ed); » x2=max(Ed); » Nint=50; »i=l :Nint; » x(i)=xl+(x2-xl)/(Nint-l)*(i-l); » h=hist(E,x); 422
14. Моделирование микроканонического ансамбля методом Монте-Карло » figure(2);bar(x,h); colormap white % вычисление и визуализация функции, аппроксимирующей % распределение P(Ed )Л.Е » F10=inline('u(l)*exp(-u(2)*z)','u','z') % задание аппроксимирующей % функции F10 = Inline function: F10(u,z) = u(l)*exp(-u(2)*z) » beta=nlinfit(x,h,F10,[3000 1]); % вычисление коэффициентов % аппроксимирующей функции % визуализация гистограммы последовательности мгновенных % значений энергии демона и аппроксимирующей функции » Ni=500; »i=l:Ni; » X(i)=xl+(x2-xl)/(Ni-l)*(i-l); » figure(3);bar(x,h); colormap white » hold on » plot(X(i),F10(beta,X(i)),'k') » hold off Результаты выполнения описанной последовательности команд пред- ставлены на рис. 14.1-14.3. в- - т - ,--, , --- -----т- т - 7 ! Рис. 14.1. Зависимость мгновенных значений энергии демона от времени (номера шага Монте-Карло) 423
Компьютерное моделирование физических процессов в пакете МА TLAB 4000 3500 3000 2500 2000 1500 1 5 6 7 8 Рис. 14.2. Распределение по энергии демона N-P(Ed)AE Рис. 14.3. Функция, аппроксимирующая распределение по энергии демона N P(Ed )&Е Таким образом, результаты моделирования идеального газа методами микроканонического и канонического ансамблей позволяют сделать сле- дующие выводы. 1. Распределение вероятностей энергии демона описывается функцией вида Ed P(Ed) = Ае Т,епп, (14.4) где А - постоянный коэффициент, Tterm » 0.99013. 424
14. Моделирование микроканонического ансамбля методом Монте-Карло 2. Температура идеального газа, определяемая как средняя кинетическая энергия, приходящаяся на одну частицу, Tkin совпадает в пределах точности модели с температурой термостата Т,егт. Это позволяет сделать вывод о том, что демон находится в термодинамическом равновесии с термостатом. Распределение вероятности (14.4) называется распределением Больцма- на или каноническим распределением. Данное распределение принято запи- сывать в следующем виде: Е 1 Ь Т Р(Е) = ~е ь , (14.5) где Z — нормировочный множитель, выбираемый из условия равенства еди- нице суммы по всем состояниям демона, кв =1.38-10-16 эрг град'1 посто- янная Больцмана. Параметр Т называется абсолютной температурой. Тем- пература может измеряться в единицах кв, тогда распределение Больцмана принимает вид Р(Е) = ±е т . (14.6) Формулы (14.5), (14.6) обеспечивают простой способ вычисления темпе- ратуры по средней энергии демона {Ed}, которая по определению равняется [Ее TdE 1Е^=1 =т. (14.7) р TdE Таким образом, средняя энергия демона равняется температуре термо- стата. Данный результат справедлив, только при условии, что значения энергии принимают непрерывные значения. Отметим, что формулы (14.5), (14.6) применимы для любой микросисте- мы, находящейся в тепловом равновесии с термостатом, - канонического ансамбля — при этом всякое макросостояние задается температурой Т, чис- лом частиц системы N и объемом V. В отличие от канонического ансамбля микроканонический ансамбль характеризуется энергией Е, числом частиц системы N и объемом V. Задача 14.4 Исследуйте зависимость точности определения температуры, опреде- ляемой с помощью микроканонического и канонического ансамблей от числа частиц системы N и числа шагов метода Монте-Карло. 425
Компьютерное моделирование физических процессов в пакете MATLAB 14.3, Модель Изинга Одной из простейших моделей, используемых в статистической физике для моделирования фазовых переходов в магнитных веществах или бинар- ных составах, является модель Изинга. Данная модель относится к ши- рокому классу решеточных моделей, в которых рассматриваются локальные взаимодействия, т. е. взаимодействия между ближайшими узлами решетки. В магнитных системах локальные взаимодействия обусловлены спинами, расположенными в узлах решетки. Спины могут представлять собой, на- пример, магнитные моменты атомов в твердом теле, взаимодействующие друг с другом и внешним магнитным полем. Рассмотрим решетку, состоящую из N узлов. Свяжем с каждым i-м уз- лом решетки число s, = ±1, характеризующее направление магнитного мо- мента системы, где s, =+1, если спин ориентирован в положительном на- правлении оси oZ, и 5, = -], если спин ориентирован в отрицательном на- правлении оси oZ. (Данная картина характерна для частиц с полуцелым спином, хотя далее мы рассматриваем спины как классические степени сво- боды и не вводим для них используемые в квантовой механике правила коммутации углового момента). Любое микросостояние решетки задается набором переменных • Так как макроскопические свойства системы определяются свойствами ее достижимых микросостояний, необ- ходимо вычислить зависимость энергии Е от конфигурации спинов. Полная энергия при наличии магнитного поля h в модели Изинга равняется N N E = -J, (14.8) (Л;) i=i где (i, j} означает, что сумма берется по всем ближайшим соседним парам спинов, константа обменной связи J характеризует силу взаимодействия со- седних спинов (рис. 14.4). * * 4 А Т ” E=-J E=+J Рис. 14.4. Энергия взаимодействия между ближайшими соседними спинами в отсутствие магнитного поля Если J > 0 , то в состоянии ТТ и ФФ , т. е. при одинаковой ориентации спинов ближайших соседей, энергетически выгоднее состояний ТФ и ФТ, 426
14. Моделирование микроканонического ансамбля методом Монте-Карло у которых соседние спины ориентированы в противоположные стороны. Следовательно, можно ожидать, что для J > 0 состояние с наименьшей полной энергией является ферромагнитным, т. е. в среднее число спинов сориентированных в одном направлении не равно нулю. Если J < 0, то с энергетической точки зрения более предпочтительными оказываются со- стояния П, ФТ , для которых соседние спины антипараллельны. Следова- тельно, среднее число спинов, сориентированных в одном направлении, равно нулю, т. е. спины упорядочены через один (антиферромагнитное со- стояние). При наложении внешнего магнитного поля, направленного парал- лельно оси oZ, спины Т и Ф приобретают дополнительную внутреннюю энергию, равную -h и +h , соответственно. Выделим основные упрощающие предположения, положенные в основу модели Изинга. 1. Кинетическая энергия узлов решетки принимается равной нулю. 2. В выражении, описывающем энергию взаимодействия, учитывается только вклад от ближайших соседей и предусматривается только два дискретных состояния для спинов. Так как в дальнейшем нас будут интересовать термодинамические ха- рактеристики данной системы, оказывается удобным измерять энергии свя- зей J и h в единицах температуры. Тогда нагревание системы будет приво- дить к ослаблению этих связей. Возможные конфигурации системы опреде- ляются заданием значений всех спиновых переменных, число которых составляет 2N, а вклад любой из 2N спиновых конфигураций j определяется функцией распределения для канонического ансамбля w(j) = -—, (14.9) где N ( \ Z(J,h) = ^e Е^’. (14.10) i Предваряя применение алгоритма демона к исследованию модели Изин- га методом микроканонического ансамбля, необходимо получить выраже- ние, связывающее энергию демона и температуру термостата. Напомним, что в непрерывном случае распределение энергии демона подчинялось формуле Больцмана (14.6). Предположим, что данное распределение веро- ятностей справедливо для любой макроскопической системы, находящейся в состоянии термодинамического равновесия. Тогда 427
Компьютерное моделирование физических процессов в пакете МА TLAB (14.11) где суммы вычисляются по всем возможным значениям Ed . Минимальная ненулевая потеря энергии системы в нулевом магнитном поле составляет, как видно из рис. 14.5, 2sJ, где s — суммарный спин ближайших соседей, опрокидывающегося спина. до после Рис. 14.5. Изменение энергии, обусловленное изменением ориентации центрального спина В одномерном случаем суммарный спин ближайших соседей равен 0, или 2, т. е. минимальная ненулевая потеря энергии равняется 2J. Следовательно, энергия демона, может равняться О, 2J, 4J, ... . Если ввести обозначение х = U/Т, то выражение (14.11) для бесконечной решетки принимает вид (14.12) / \ _ '1=0 \ 7" / 00 п=0 Бесконечные суммы, стоящие в числителе и знаменателе, могут быть вычислены аналитически. Так как обсуждение методов их вычисления вы- ходит за рамки нашей книги, мы используем для ее вычисления встроенный в пакет MATLAB символьный процессор’: Сумма бесконечного ряда (14.13) находится выполнением следующей последовательно- сти команд: » expr=sym('x*n*exp(-x*n)') % задание выражения, стоящего под знаком суммы ехрг = » symsum(expr, 'п ’,0,inf) % вычисление суммы ряда ans = х*ехр(-х)/(1-ехр(-х))''2 Аналогично находится сумма бесконечного ряда (14.4). 428
14. Моделирование микроканонического ансамбля методом Монте-Карло х (х п=0 _>х. СХР(~Х) (1-ехр(- х))2 (14.13) v <14.14) J5 l-exp(-x) Разделив (14.13) на (14.14) и выполнив очевидное преобразование, по- лучаем 1^-}= -- . (14.15) \Т / е*-1 Подставив в (14.15) вместо х выражение 2J/T и решив получившее урав- нение относительно Т, получаем 2J Т =------—-------. (14.16) \n() + 2J/(Ed)) Задача 14.5 Получите аналитические выражения для средней энергии демона для системы, состоящей из конечного числа спинов. Может ли быть найде- но аналитическое выражение для зависимости температуры от энер- гии демона в данном случае? Сравните значения средней энергии демона для системы, состоящей из N спинов {Ed)N, получаемые по точной формуле с соответствующими значениями (Е^^, получаемыми по формуле (14.15). Постройте зависимости \(Ed}N — при различных температурах. Оцените погрешность определения значения темпера- туры, получаемого по формуле (14.16), для системы, состоящей из N спинов. Как зависит данная погрешность omN и Т? Отметим, что в одномерной модели Изинга демон должен выбирать спины случайно, что позволит избежать подсчета периодически повторяю- щихся конфигураций. Так как нашей целью является оценка термодинами- ческих характеристик бесконечной термодинамической системы, следует учесть краевые условия. В качестве таковых в описываемом ниже докумен- те нами выбраны периодические (тороидальные) краевые условия: решетка считается кольцом, в котором спины S,, находящиеся в узлах i = 1 и i = 1, взаимодействуют друг с другом. Это обеспечивает равное число взаимодей- ствий для всех спинов в изучаемой системе. Для моделирования одномерной модели Изинга методом микроканониче- ского ансамбля в пакете MATLAB необходимо создать файл Ising.m, содержа- щий описание функции, возвращающей значения полной энергии системы, энергии демона, намагниченности и среднее число принятия решений. 429
Компьютерное моделирование физических процессов в пакете MATLAB % листинг файла Ising.m function [Es,Ed,SpM,Accept]=Ising(NspinJ,h,Esi,NTrial) % функция, возвращающая мгновенные значения полной энергии % системы (Es), энергии демона (Ed), намагниченность (SpM) % и среднее число принятия (Accept) % Nspin - число спинов системы % J - константа обменного взаимодействия % h - внешнее магнитное поле % Esi - конечная энергия системы % NTrial - число испытаний % задание конфигурации спинов в момент времени t = О for i=l:Nspin s(i)=l; end; M=Nspin; Esystem=-(J+h)*Nspin; Edemon=2*J*ceiI((Esi-Esystem)/(2*J)); Es(l)=Esystem; % энергия системы в момент времени t = О Ed(l)=Edemon; % энергия демона в момент времени t = О SpM(l)=M; % магнитный момент системы в момент времени t = О Accept=0; k=l; % реализация метода микроканонического ансамбля for i=l:NTrial for j=l:Nspin Ispin=floor(Nspin*rand(l)+l); % случайный выбор номера % спина периодические граничные условия if Ispin==l Left=s(Nspin); else Left=s(Ispin-l); end; if Ispin==Nspin Right=s(l); else Right=s(Ispin+l); end; de=2*s(Ispin)*(-h+J*(Left+Right)); % пробное изменение энергии спина if de<=Edemon % принятие пробного изменения 430
14. Моделирование микроканонического ансамбля методом Монте-Карло s(Ispin)=-s(Ispin); Accept=Accept+l; Edemon=Edemon-de; Esystem=Esystem+de; end; k=k+l; Es(k)=Esystem; Ed(k)=Edemon; SpM(k)=sum(s); end; end; Accept=Accept/(NTrial*Nspin); Далее необходимо выполнить следующую последовательность команд: » Nspin=200; % число спинов системы » J=l; % константа обменного взаимодействия » h=0; % внешнее поле » Esi=-10; % задание конечного значения энергии системы » NTrial=100; % число испытаний % вычисление мгновенных значений полной энергии системы (Es), % энергии демона (Ed), мгновенной намагниченности (SpM), % числа принятия решений » [Es Ed SpM Accept]=Ising(Nspin J,h,Esi,NTrial); % визуализация зависимостей мгновенных значений полной % энергии системы и энергии демона от времени »i=l:1200; » figure(l);plot(i,Es(i), 'k'); » figure(2);plot(i,Ed(i), 'k'); % вычисление распределения вероятностей мгновенных значений % энергии демона » Nint=50; »i=l:Nint; » xl=min(Ed); » x2=max(Ed); » x(i)=xl+(x2-xl)/Nint*i; » h=hist(z2,x); % нахождение и визуализация функции, описывающей % распределение вероятности » F10=inline('u(l)*exp(-u(2)*z)','u','z') F10 = 431
Компьютерное моделирование физических процессов в пакете MATLAB Inline function: F10(u,z) = u(l)*exp(-u(2)*z) » beta=nlinfit(x,h,F10,[10000 0.05]); » bar(x,h);colormap white » hold on » Ni=500y=l:Ni; » X(j)=xl+(x2-xl)/Ni*j; » plot(X,F10(beta,X),'k') » hold off » mean(Es)/Nspin % средняя энергия системы на один спин ans = -0.0941 » mean(z3) % средняя намагниченность системы ans = 1.4352 » mean(z3)/Nspin % средняя намагниченность на один спин ans = 0.0072 » 2/log(l+2./mean(z2)) ans = 9.7904 Результаты выполнения описанной последовательности команд пред- ставлены на рис. 14.6-14.8. Задача 14.6 Так как изначально неизвестны конфигурации спинов, обеспечивающие искомое значение энергии, в качестве начальной конфигурации мы выби- раем конфигурацию с минимальной энергией, поэтому для достижения равновесного состояния с заданной полной энергией системе требуется некоторое конечное время (время релаксации). Это хорошо видно из рис. 14.11, 14.12. Аппроксимируйте зависимости Esyslem(t), Edemon(t), ис- пользуя метод наименьших квадратов. Оцените время релаксации пол- ной энергии системы тпг1ет и время релаксации энергии демона Tdemon. Как зависят Tsystem, tdanon от числа спинов Nspin, образующих систему? Сравните полученные результаты, с результатами, полученными при моделировании случайных блужданий. 432
14. Моделирование микроканонического ансамбля методом Монте-Карло 100 Jt -120 j 140 -j 160 j -180 ! t , I | 200 400 600 800 1000 12<X Рис. 14.6. Зависимость мгновенных значений полной энергии системы от времени Рис. 14.7. Зависимость мгновенных значений энергии демона от времени 140 j 120 100 | 80 ' ! во I 40 I 20 I 1 О 200 400 600 600 1000 12С Рис. 14.8. Функция распределения энергии демона 433
Компьютерное моделирование физических процессов в пакете МА TLAB Задача 14.7 Создайте собственные функции, позволяющие исключать переходный период и вычислять равновесные значения средней полной энергии сис- темы среднюю энергию демона (Edemon), среднюю намагни- ченность системы (М), средний квадрат намагниченности Сравните значения равновесной температуры системы с соответст- вующим значением температуры, полученным без учета процесса ре- лаксации системы к равновесному состоянию. Задача 14.8 После достижения равновесного состояния значения полной энергии системы и энергии демона, как видно из рис. 14.11, 14.12, испытывают случайные флуктуации около средних значений. Исследуйте, как зави- сит величина флуктуаций средней полной энергии системы {Е ten^, средней энергии демона {Edemo^), средней намагниченности системы (Af), среднего квадрата намагниченности (Л/2) от Nspin. Сравните полученные результаты с результатами, полученными при моделирова- нии случайных блужданий. Задача 14.9 Вычислите (Esystan') для систем, состоящих из различного числа спинов N. Сравните полученные результаты с точным ответом для бесконеч- ной одномерной решетки (F \ 7 1\ . (14.17) N \Т J Как полученные результаты зависят от числа спинов N и количества шагов метода Монте-Карло? Задача 14.10 Проведите вычисления и постройте зависимость ^Л/2^ от темпера- туры Т для системы, состоящей из N спинов (N = 200). Аппроксими- руйте данную зависимость методом наименьших квадратов. Зависит ли вид аппроксимирующей от числа спинов? 434
14. Моделирование микроканонического ансамбля методом Монте-Карло Рис. 14.9. Квадратная двумерная решетка, состоящая из N — 16 спинов Задача 14.11 Введите ненулевое магнитное поле h и вычислите , (М), {М , как функции от h для заданной полной энергии. Определите связь {Edemon') с температурой для h*0. Сравните значения равновесных температур для случаев h = 0, h^O при одинаковых значениях средней полной энергии. Обобщим использованный вы- ше метод микроканонического ан- самбля, применяемый нами для одномерной системы спинов, на случай двумерной системы (рис. 14.9). Как и в одномерном случае, выбираем периодические (торои- дальные) краевые условия, т. е. будем представлять решетку коль- цом, в котором спины Sy, нахо- дящиеся в узлах (i = 1, j = взаимодействуют со спинами на- ходящимися в узлах (i = 1, j = 1,..., W). А спины, располо- женные в узлах (i = 1,..., N , j = 1), взаимодействуют со спи- нами, расположенными в узлах (z = l,...,N , j = N) (рис. 14.10). Это обеспечивает равное чи< в изучаемой системе. Взаимодействие выбранного спина с соседями можно рассматривать, как взаимодействие с одним спином, величина которого равна алгебраической сумме величин четырех соседних спинов, которая, как очевидно, может принимать три значения: 0, 2, 4. Следовательно, ми- нимально возможное значение изменения энергии при опрокидывании од- ного спина составляет 2J -(-2J) = 4 J , в отличие от одномерного случая в котором квант изменения энергии равнялся 2J. Отмеченное обстоятельство определяет необходимость замены в (14.16) 2J —> 4J : Рис. 14.10. Задание граничных условий в двумерном случае взаимодействий для всех спинов 435
Компьютерное моделирование физических процессов в пакете МА TLAB 47 Т= . (14.18) ln(l+4J/(Ej) Алгоритм моделирования двумерной системы, состоящей из N спинов, ме- тодом Монте-Карло реализуется следующей последовательностью действий. 1. Задание числа спинов решетки Nspin . 2. Задание числа шагов метода Монте-Карло на спин. 3. Задание ориентации спинов в узлах квадратной решетки в момент вре- мени t = 0 (начальной конфигурации системы). 4. Выбор случайным образом одного из спинов системы. 5. Вычисление пробного изменения энергии. 6. Если пробное изменение приводит к уменьшению энергии системы, то система отдает энергию демону и новая конфигурация принимается. 7. Если пробное изменение увеличивает энергию системы, то новая кон- фигурация принимается в том случае, если демон имеет достаточную энер- гию для передачи ее системе. 8. Если пробное изменение не меняет энергию системы, то принимается новая конфигурация. 9. Повторение пп. 4—8 (число повторений равно числу спинов в системе). 10. Повторение пп. 4—9 (число повторений равно числу шагов метода Монте-Карло на спин). Для реализации описанного алгоритма моделирования двумерной сис- темы спинов методом Монте-Карло в пакете MATLAB создадим файл Ising2.m, содержащий описание функции, возвращающей мгновенные зна- чения: энергии системы, энергии демона, намагниченности, числа принятия решений, а также мгновенные конфигурации спинов. % листинг файла Ising2.m function [Es,Ed,SpM,A,S] = Ising2(Nspin J,h,Esi,NTrial) % функция, возвращающая мгновенные значения: энергии, % системы энергии демона, намагниченности, числа принятия % решений, а также мгновенные конфигурации спинов % Nspin - число спинов решетки % J - константа обменного взаимодействия % h - напряженность внешнего магнитного поля % Esi - конечная энергия системы % NTrial - число испытаний Ns=Nspin.A0.5; % число спинов вдоль одной стороны s=ones(Ns,Ns); % начальная конфигурация спинов 436
14. Моделирование микроканонического ансамбля методом Монте-Карло Esystem=-(J+h)*Nspin; % начальная энергия системы Edemon=4*J*floor((Esi-Esystem)/(4*J)); % начальная энергия демона Es(l)=Esystem; Ed(l)=Edemon; S=s; к=1; for i=l:NTrial Accept=0; for j=l:Nspin % случайный выбор узла сетки Ix=floor(Ns*rand(l)+l); Iy=floor(Ns*rand(l)+l); % граничные условия iflx==l Left=Ns; else Left=Ix-l; end; if Ix==Ns Right=l; else; Right=Ix+l; end; ifly==l Down=Ns; else; Down=Iy-l; end; if Iy==Ns Up=l; else Up=Iy+l; end; % пробное изменение энергии de=2*s(Iy,Ix)*(-h+J*(s(Iy,Left)+s(Iy,Right)+s(Down,Ix)+s(Up,Ix))); if de<=Edemon % принятие пробного изменения энергии s(Iy,Ix)=-s(Iy,Ix); Accept=Accept+1; Edemon=Edemon-de; 437
Компьютерное моделирование физических процессов в пакете МА TLAB Esystem=Esystem+de; end; к=к+1; Es(k)=Esystem; Ed(k)=Edemon; A(k-l)=Accept; sl=sum(s); SpM(k)=sum(sl); S=cat(3,S,s); end; end; A=A/NTrial; Далее необходимо выполнить следующую последовательность команд: » Nspin=81; % число спинов системы » J=l; % константа обменного взаимодействия » h=0; % напряженность внешнего магнитного поля » Esi=-10; % конечная энергия системы » NTrial=50; % число испытаний »[Es,Ed,SpM,A,S]=Ising2(Nspin,J,h,Esi,NTrial); % визуализация зависимости мгновенных значений полной % энергии системы и энергии демона от времени »i=l:2000; » figure(l);plot(i,Es(i)) » figure(2);plot(i,Ed(i)) % визуализация мгновенных конфигураций системы в виде векторного поля »i=l:9; » j=l:9; » V(i j)=0; » U(ij)=0; » Z(i J)=0; » figure(3);quiver3(Z,U,V,S(:,:,l)); colormap white » figure(4);quiver3(Z,U,V,S(:,:,100)); colormap white » figure(5); quiver3(Z,U,V,S(:,:,1000)); colormap white » figure(6); quiver3(Z,U,V,S(:,:,2000)); colormap white % визуализация мгновенных конфигураций системы в виде % прямоугольных параллелепипедов » figure(7);bar3(z5(:,:,l));axis([0 10 0 10 -1.5 1.5]);colormap white » figure(8);bar3(z5(:,:,100));axis([0 10 0 10 -1.5 1.5]); » colormap white 438
14. Моделирование микроканонического ансамбля методом Монте-Карло » figure(9);bar3(z5(:,.",1000));axis(f0 10 0 10 -1.5 1.5]); » colormap white » figure(10);bar3(z5(:,:,2000));axis([0 10 0 10 -1.5 1.5]); » colormap white » mean(Es); % средняя энергия системы ans = -14.1790 » mean(zl)/Nspin; % средняя энергия системы на один спин ans = -0.1750 » mean(z3)/Nspin % средняя намагниченность на один спин ans = 0.6627 » mean(A) % среднее значение коэффициента принятия на один шаг ans = 0.1463 » 4/log(l+4/mean(z2)) % равновесная температура системы ans = 2.7028 Результаты выполнения приведенной выше последовательности команд представлены на рис. 14.11-14.20. -30 -40 -50 -60 70 - 80 • •90-----1-----1-------1-------------------1---—1—------1------------ 0 200 400 600 800 1000 1200 1400 1600 1800 2000 Рис. 14.11. Зависимость мгновенных значений энергии системы от времени 439
Компьютерное моделирование физических процессов в пакете MATLAB Рис. 14.12. Зависимость мгновенных значений энергии демона от времени Рис. 14.13. Конфигурация системы спинов в момент времени t = О Рис. 14.14. Конфигурация системы спинов в момент времени t =100 440
14. Моделирование микроканонического ансамбля методом Монте-Карло ч , t т r W 11' • ? t V н/ /1 / f X иt ’ ? t л у rt X т» t J ; i i \lt ’’’ 2X< 1. f t 1 t 9 X 7 Puc. 14.16. Конфигурация системы спинов в момент времени t-2000 151 • ‘ Г? -0.5' MsJ и. у Inrir^ 1.5!^^^ ^X 2 Xk 3 X 5^X 6 X 5 > <2 A ’ e Puc. 14.15. Конфигурация системы спинов в момент времени t = 1000 t f t x X I , . t «м X A’ t'.T- f ti h’ tf ’A? t ’ tf t, 4* A? x X f’ f1 x ’’?’’ ’ 4 К 6 3^4 !..x 1 's 7 Puc. 14.17. Конфигурация системы спинов в момент времени t == 0 441
Компьютерное моделирование физических процессов в пакете МА TLAB Рис. 14.18. Конфигурация системы спинов в момент времени t - 100 Рис. 14.20. Конфигурация системы спинов в момент времени t = 1000 Рис. 14.20. Конфигурация системы спинов в момент времени t = 2000 442
14. Моделирование микроканонического ансамбля методом Монте-Карло Задача 14.12 Проверьте, что распределение энергии демона описывается функцией распределения Больцмана. Сравните значение средней температуры системы, вычисленной по формуле (14.18), и значение температуры, по- лученное из распределения Больцмана. Задача 14.13 Решите задачи 14.6—14.11. для рассмотренной выше двумерной систе- мы спинов. Сравните полученные результаты с аналогичными резуль- татами, полученными для одномерной системы спинов. ЛИТЕРАТУРА 1. Гулд X., Тобочннк Я. Компьютерное моделирование в физике. М.: Мир, 1990. Т. 2. 2. Кунин С. Вычислительная физика. М.: Мир, 1992. 3. Ландау Л. Д., Лифшиц Е.М. Статистическая физика. М.: Наука, 2000. 4. Методы Монте-Карло в статистической физике/Под ред. К. Биндера. М.: Мир, 1982. 5. Дайсон Ф., Монторолл Э., Кац М., Фишер М. Устойчивость и фазовые переходы. М.: Мир, 1973. 6. Хеерман Д. В. Методы компьютерного эксперимента в теоретической физике. М.: Наука, 1990. 443
Глава 15 МОДЕЛИРОВАНИЕ КАНОНИЧЕСКОГО АНСАМБЛЯ МЕТОДОМ МОНТЕ-КАРЛО 15.1. Введение В предыдущей главе мы использовали метод микроканонического ан- самбля для моделирования поведения статистических систем. Одним из не- сомненных достоинств данного метода является очевидная простота исход- ного постулата о равенстве априорных вероятностей появления возможных микросостояний. Необходимо также отметить, что при проведении числен- ных экспериментов с использованием микроканонического ансамбля демон не предъявляет никаких требований к качеству генерируемой последова- тельности случайных чисел. Данное обстоятельство определило известную популярность метода микроканонического распределения и его модифика- ций. Например, в [1, 2] описаны быстрые вычислительные алгоритмы, ис- пользующие один бит памяти на спин и большое число демонов. В то же время алгоритму демона присущ целый ряд недостатков, пожа- луй, главный из которых состоит в трудности получения системы с заранее заданной внутренней энергией. Необходимо также отметить, что с физиче- ской точки зрения более естественно изучать зависимости термодинамиче- ских величин, характеризующих макроскопическую систему, от температу- ры, но не от полной внутренней энергии. Так как в натурных экспериментах измеряется именно температура системы, но не ее внутренняя энергия. В главе рассматривается метод канонического ансамбля, позволяющий моделировать поведение системы, находящейся при постоянной температу- ре. Данный метод используется для моделирования идеального классиче- ского газа и модели Изинга. 15.2. Канонический ансамбль Подавляющее большинство физических систем не являются изолиро- ванными. Это означает, что они обмениваются энергией с окружающей сре- дой. Так как размеры изучаемых физических систем, как правило, малы по сравнению с размерами окружающей среды, можно считать, что любое из- менение энергии малой системы на влияет заметным образом на температу- ру большой системы. (Например, включение в сеть утюга (малая система)
15. Моделирование канонического ансамбля методом Монте-Карло не оказывает заметного влияния на температуру воздуха в комнате (боль- шая система)). Следовательно, большую систему можно рассматривать как тепловой резервуар с заданной абсолютной температурой Т (термостат). При приведении макроскопической системы в контакт с термостатом сис- тема стремится перейти в равновесное состояние путем обмена энергией с термостатом. Процесс обмена энергией продолжается до тех пор, пока тем- пература системы и температура термостата не станут равными. В гл. 14 мы показали, что в качестве малой системы может выступать система, состоящая из одной частицы (демон). Вероятность Ps того, что демон находится в микросостоянии 5 с энергией Es описывается формулой Js Ps=~e" T , (15.1) где Т — температура, измеряемая в энергетических единицах, Z — нормиро- вочный множитель, выбирающийся из условия м 5=1 Подставив (15.1) в (15.2), найдем и Z = ]Te т . (15.3) 5=1 Суммы в (15.2), (15.3) вычисляются по всем М микросостояниям системы. Знание вероятности Ps позволяет вычислить средние по ансамблю мак- роскопические характеристики (А) в соответствии с общим правилом м ^ = ^ASPS. (15.4) 5=1 Например, средняя по ансамблю микросостояний энергия Es {E) = ^EsPs= l7^Ese~r . (15.5) 5 Z 5 Отметим, что из-за большого числа слагаемых прямое вычисление сумм в (15.5) невозможно. Действительно, даже для достаточно малой решетки разме- ром 16x16 имеется 2256 а Ю77 конфигураций. В этих условиях для оценки сред- них значений макроскопических характеристик системы приходится использо- 445
Компьютерное моделирование физических процессов в пакете МА TLAB вать вероятностные методы, одним из вариантов которых является алгоритм Метрополиса, рассматриваемый нами в следующем разделе. 15.3. Алгоритм Метрополиса для канонического ансамбля Рассмотрим систему, состоящую из N частиц, находящихся в объеме V при постоянной температуре Т. Сгенерируем некоторое ограниченное чис- ло конфигураций т из полного числа возможных конфигураций М. Тогда оценка среднего значения (А) может быть получена из следующего выра- жения т {A)«^ASPS = s=i (15.6) где Es , - полная энергия системы Е и значение физической величины А в конфигурации s. Для вычисления (А) в соответствии с (15.6) можно предложить доста- точно очевидную процедуру, которая состоит в генерации случайной кон- Es фигурации, вычислении Es, As и произведения Ase Т и подсчете соот- ветствующего вклада каждой конфигурации в суммы (15.6). Однако появ- ление каждой конкретной конфигурации достаточно маловероятно, следовательно, большое число конфигураций будет давать малый вклад в суммы (15.6), поэтому, вообще говоря, такой вычислительный алгоритм также будет недостаточно эффективным. Для устранения отмеченного недостатка можно воспользоваться мето- дом существенной выборки, который применялся нами ранее в гл. 11 для вычисления определенных интегралов методом Монте-Карло. Идея данного метода состоит в генерации конфигурации в соответствии с функцией рас- пределения вероятностей rrs . Так как дальнейшее усреднение проводится по т конфигурациям смещенной выборки, то для исключения данного сме- щения при вычислении суммы в (15.6) каждая конфигурация должна брать- ся с весовым множителем : 446
15. Моделирование канонического ансамбля методом Монте-Карло т . ES 5=1 Ks (15.7) Наиболее целесообразно выбрать ns в виде [3] Е, (15.8) В этом случае, как легко убедиться прямой подстановкой (15.8) в (15.7) (А)« (15.9) где при преобразовании знаменателя учтено условие нормировки m 1 5=1 Формула (15.9) позволяет дать общую формулировку алгоритма Метро- полиса: 1. Сформировать начальную конфигурацию системы. 2. Произвести случайное пробное изменение начальной конфигурации. 3. Вычислить изменение энергии системы ДЕ, обусловленное произве- денным пробным изменением конфигурации. 4. Если АЕ < 0, то принять новую конфигурацию системы и осущест- вить переход к п. 8. Л£ 5. Если ДЕ > 0, то вычислить «вероятность перехода» W = е Т . 6. Сгенерировать случайное число г с равномерным законом распреде- ления в интервале [0,1]. 447
Компьютерное моделирование физических процессов в пакете МА TLAB 7. Если г < W, принять новую конфигурацию, в противном случае со- хранить предыдущую конфигурацию. 8. Определить значения требуемых физических величин. 9. Повторить п. 2-8 для получения достаточного числа конфигураций. 10. Вычислить средние по статистически независимым друг от друга конфигурациям. Описанный алгоритм можно трактовать как случайные блуждания. Дей- ствительно, пронумеруем различные конфигурации порядковыми номерами 1 = 1,2,3,.... Тогда каждую конфигурацию можно считать некоторой «точ- кой», а вычислительный процесс в соответствии с алгоритмом Метрополиса случайным блужданием по данным точкам. Действия, выполняемые в соот- ветствии с пп. 3-7, позволяют определить условную вероятность того, что в «момент времени» t +1 прохожий будет находиться в точке i при условии, что в момент времени t он находился в точке j, т. е. найти отношение 7’(/)/Р(у). Отметим, что поскольку вычисляется отношение вероятностей, нет необходимости проводить их нормировку. Так как конфигурации гене- рируются с вероятностью, пропорциональной требуемой вероятности, для вычисления средних следует использовать формулу (15.9). Отметим, что данным способом оказывается возможным оценить средние значения мак- роскопических величин, но не нормировочный коэффициент Z. Существует строгое математическое доказательство того факта, что по- сле достаточно большого числа шагов алгоритм Метрополиса генерирует состояния, энергия которых распределена по Больцману. Однако, следуя выбранному подходу (физическому по своей сути), мы сознательно отказы- ваемся от математически строгого доказательства в пользу эмпирического подхода, т. е. подтверждения данного вывода на примере модели идеально- го газа и одномерной системы спинов. Отметим, что выбор в качестве ks распределения Больцмана не являет- ся единственно возможным. Оказывается, что к распределению Больцмана в асимптотическом пределе приводят и другие распределения вероятности. Можно показать, что существует единственное необходимое условие, за- ключающееся в том, чтобы _£1 £2 W(l->2)e Т = W(2->1> т . (15.10) Равенство (15.10) называется принципом детального равновесия. Покажем на примере классического идеального газа, что алгоритм Мет- рополиса приводит для отдельных микросостояний к распределению Больцмана. Любое микросостояние газа полностью описывается заданием 448
15. Моделирование канонического ансамбля методом Монте-Карло скорости частиц, так как энергия идеального газа зависит только от скоро- сти частиц. При этом скорость классической частицы является величиной непрерывной, в то время как для количественного описания системы необ- ходимо иметь счетное число микросостояний. Следовательно, необходимо провести разбиение интервала возможных значений скоростей на конечное число достаточно малых дискретных интервалов. Например, для 20 частиц и разделении интервала возможных скоростей на 10 интервалов полное число возможных микросостояний составляет 1О20. Совершенно очевидно, что весьма проблематично не только пронумеровать данные состояния, но и вычислить за приемлемое время точные оценки вероятностей и средних ве- личин. Полученная оценка подтверждает правомерность использования мо- дели идеального газа для демонстрации асимптотических характеристик ал- горитма Метрополиса. Для реализации алгоритма Метрополиса в модели идеального газа, со- стоящего из одной частицы, в пакете MATLAB необходимо создать файл IdealGas.m, содержащий описание функции, возвращающей мгновенные значения скорости, энергии, число среднее число принятия. % листинг файла IdealGas.m function [V,Es,Accept] = IdealGas(Vel,T,dVmax,NTrial) % функция, возвращающая мгновенные значения скорости, энергии, число % среднее число принятия % Vel - начальная скорость % Т - температура газа % dVmax - максимальное изменение скорости % NTrial - число испытаний beta=l/T; E=Vel.A2/2; % начальная энергия Accept=0; for i=l:NTrial dV=(2*rand(l)-l)*dVmax; VtriaI=VeI+dV; % случайное изменение скорости de=0.5*(Vtrial.A2-Vel.A2); % пробное изменение энергии if de>0 if exp(-beta*de)>=rand(l) % шаг принимается Vel=Vtrial; Accept=Accept+1; E=E+de; end; 15—1576 449
Компьютерное моделирование физических процессов в пакете МА TLAB else % шаг принимается Vel=V trial; Accept=Accept+1; E=E+de; end; Es(i)=E; V(i)=Vel; end; Accept=Accept/NT rial; Далее необходимо выполнить следующую последовательность команд: » Vel=0; % начальная скорость частицы » Т=0.5; % температура газа » dVmax=4; % максимальное изменение скорости » NTrial=10A4; % число испытаний » [V Es Accept]=IdelGas(Vel,T,dVmax,NTrial); » mean(V) % средняя скорость частицы ans = 0.0036 » mean(Es) % средняя энергия частицы ans = 0.2604 » Accept % число принятия Accept = 0.2779 »i=l:NTrial; % визуализация зависимости мгновенных значений энергии от времени » figure(l);plot(i,Es,'k'); % вычисление и визуализация функции распределения % P(Ej )АЕ по энергии идеального газа, состоящего из одной частицы » xl=min(Es); » x2=max(Es); » Nint=100; % число интервалов гистограммы »i=l:Nint; » x(i)=xl+(x2-xl)/Nint*i; » h=hist(Es,x); » figure(2);bar(x,h);colormap white 450
15. Моделирование канонического ансамбля методом Монте-Карло Результаты выполнения описанной последовательности команд пред- ставлены на рис. 15.1 и 15.2. Рис. 15.1. Зависимость мгновенных значений энергии идеального газа, состоящего из одной частицы, от времени Рис. 15.2. Функция распределения по энергии идеального газа, состоящего из одной частицы Задача 15.1 1. Постройте зависимость ln(P(E))om Е. (Указание. Создайте функцию, формирующую из массивов х, h матрицу, не содержащую значений hj — 0, и используйте ее для дальнейшего решения задачи.) 2. Аппроксимируйте данную зависимость функцией вида а х + Ь . Сравните значение коэффициента а с точным значением -\)Т. По- стройте график функции e‘, x'ih и сравните его с графиком распределе- ния плотности вероятности. С какой точностью распределение газа. 451
Компьютерное моделирование физических процессов в пакете МА TLAB полученное в результате моделирования, аппроксимируется больцма- новским распределением? Задача 15.2 Проведите вычисления для различных значений температуры и по стройте зависимость энергии газа от температуры. Можно ли ап- проксимировать данную зависимость функцией вида а -л + h ? Чему ра- вен коэффициент а в данном случае? Какой физический смысл имеет коэффициент а? Объясните полученный результат с точки зрения теоремы о равнораспределении (см. разд. 10.5). Задача 15.3 Проведите вычисления для различных значений температуры и по- стройте зависимости дисперсии и среднеквадратичного отклонения скорости от температуры. Выберите подходящие функции и аппрок- симируйте данные зависимости методом наименьших квадратов. Объ- ясните полученные результаты. Для моделирования одномерного классического идеального газа, со- стоящего из N частиц, следует использовать модифицированную функ- цию IdealGas2, сохраненную в файле IdealGas2.m. Функция IdealGas2 отли- чается от функции IdealGas, описанной выше тем, что: 1) полная энергия га- за вычисляется как сумма кинетических энергий всех частиц, 2) помимо случайного выбора величины изменения скорости производится случайный выбор номера той частицы, для которой производится пробное изменение скорости. Все остальные действия проводятся в соответствии с алгоритмом Метрополиса. % листинг файла IdealGas2.m function [V,Es,Accept] = IdealGas(Vel,T,dVmax,NTrial,Np) % функция, возвращающая мгновенные значения средней, % скорости энергии, числа принятия beta=l/T; i=l:Np; v(i)=Vel; Eold=dot(v,v)/2; V(l)=mean(v); Es=EoId; Accept=0; k=2; for i=l:NTrial for j=l:Np 452
15. Моделирование канонического ансамбля методом Монте-Карло N=floor(Np*rand(l)+l); dV=(2*rand(l)-1)*dVmax; Vtemp=v(j); v(j)=v(j)+dV; Enew=0.5*dot(v,v); de=Enew-Eold; if de>0 if exp(-beta*de)>rand(l) Accept=Accept+1; Eold=Enew; else v(j)=Vtemp; end; else Accept=Accept+l; Eold=Enew; end; V(k)=mean(v); Es(k)=Eold/Np; k=k+l; end; end; Accept=Accept/(NTrial*Np); Рассмотрим получаемые результаты для случая Т = 2, Vel = 0, Avmax := 0-5 , NTrial := 200 , Np = 80, опустив промежуточные вычисления, которые аналогичны уже описанным выше для классического идеального газа, состоящего из одной частицы. Анализ зависимости, представленной на рис. 15.3, показывает, что суще- ствует некоторый переходный период конечной длительности, в течение которого система приходит в «тепловое равновесие» с термостатом. После достижения равновесия температура системы испытывает флуктуации от- носительного среднего значения, соответствующего заданной температуре. Анализ гистограммы распределения мгновенных значений энергии и теоретической кривой позволяет сделать вывод о близости распределения вероятности мгновенных значений энергии к нормальному закону (кривая Гаусса). Таким образом, можно сделать важный вывод о том, что если мик- росостояния системы распределены в соответствии с распределением Больцмана, то распределения макроскопических величин (например, полная энергия) описываются нормальным законом, при этом максимум функции 453
Компьютерное моделирование физических процессов в пакете MATLAB распределения соответствует среднему значению величины, вычисленной в соответствие с (15.9). х 10* Рис. 15.4. Гистограмма распределения мгновенных значений энергии классического идеального газа и теоретическая кривая соответствующего нормального распределения Рис. 15.3. Зависимость мгновенной энергии классического идеального газа от времени Задача 15.4 Проведите численные эксперименты и найдите зависимость числа при- нятия на один шаг теап^А^'уNp от Avmax. Для значения Avmax. обеспечивающего значение коэффициента принятия близкого к 0.5, вы- числите среднюю кинетическую энергию одной частицы и среднюю ско- рость частиц. Как связаны значение температуры и средняя кинетиче- ская энергия одной частицы? Сравните полученный результат с ре- зультатами задачи 15.2. 454
15. Моделирование канонического ансамбля методом Монте-Карло Задача 15.5 Выберите критерий достижения системой теплового равновесия. Оце- ните число шагов Монте-Карло на частицу, необходимых для достиже- ния системой теплового равновесия. Исследуйте зависимость времени достижения равновесия от начальных скоростей системы, Avmax, чис- ла частиц газа. Какими надо выбирать начальные скорости при задан- ном числе частиц и Avmax для того, чтобы система достигала равнове- сия за наименьшее время? Задача 15.6 Исключите временной интервал, соответствующий неравновесному со- стоянию системы. Для данного случая вычислите средние значения ско- рости, энергии системы и числа принятия. Сравните вычисленные зна- чения с аналогичными значениями, полученными по последовательности с неисключенным процессом релаксации. Как зависит разность между этими значениями от числа частиц N и числа шагов Монте-Карло (NTrial)? Задача 15.7 Вычислите среднюю энергию на частицу для Т = 0.5, 1, 5, 10, 20, 30, 40, 50, 70, 90, 100, исключив временной интервал, соответствующий нерав- новесному состоянию газа. Оцените теплоемкость газа cv, равную по л (дЕ\ Г определению — . Сравните полученный результат с резулъта- \дТ )v=clmsl том, полученным в задаче 15.2. Задача 15.8 Вычислите средний квадрат флуктуаций энергии ^А£2^ = ^Е2^-{Е')2 для Т = 10, 50, 100. Сравните величину отношения ^А£2уг2 с теплоем- костью, вычисленной в задаче 15.8. Задача 15.9 Используя функцию IsingM, сохраненную в файле IsingM.m, листинг ко- торого приведен ниже, промоделируйте одномерную систему спинов в соответствии с алгоритмом Метрополиса. % листинг файла IsingM.m function [Es,SpM,Accept,S]=Ising(Nspin J,h,NTrial,T) % Nspin - число спинов % J - константа обменного взаимодействия % h - напряженность внешнего магнитного поля 455
Компьютерное моделирование физических процессов в пакете МА TLAB % NTrial - число испытаний % Т - температура системы beta=l/T; s=ones(Nspin); S(l)=s; M=Nspin; Esystem=-( J+h)*Nspin; Edemon=2*J*ceil((Esi-Esystem)/(2*J)); Es(l)=Esystem; SpM(l)=M; Accept=0; k=l; for i=l:NTrial for j=l:Nspin Ispin=floor(Nspin*rand(l)+l); if Ispin==l Left=s(Nspin); else Left=s(Ispin-l); end; if Ispin==Nspin Right=s(l); else Right=s(Ispin+1); end; de=2*s(Ispin)*(-h+J*(Left+Right)); if (de<=0) I (exp(-beta*de)>rand(l)) s(Ispin)=-s(Ispin); Accept=Accept+l; Esystem=Esystem+de; end; k=k+l; S=cat(3,S,s); Es(k)=Esystem/Nspin; SpM(k)=sum(s)/Nspin; end; end; Accept=Accept/(NTrial*Nspin); 7. Проведите вычисления для следующих значений переменных Nspin = 100, J=l, h=0, NTrial= 1000, T=l, 2, 5, 10, 20, 30, 40, 50. Постройте график зависимости полной энергии системы на один спин от температуры. 456
15. Моделирование канонического ансамбля методом Монте-Карло Используя метод наименьших квадратов аппроксимируйте данную зависи- мость функцией вида а-х + Ь. Чему равен угловой коэффициент прямой? 2. Используя найденный коэффициент пропорциональности между энерги- ей системы и температурой, постройте зависимость температуры системы от времени. Чему равна начальная «температура системы»? Оцените время, необходимое системе для достижения равновесия. 3. Измените функцию IsingM так, чтобы все спины системы были ориен- тированы в момент времени t = 0 хаотично. Чему равна начальная температура системы в данном случае? Оцените время, необходимое системе для достижения равновесия. 4. Определите зависимость средней энергии на один спин (Е) и средней на- магниченности на один спин (М) от температуры в интервалах тем- ператур [0.1,5] и [5,50]. Представьте данные зависимости графически и проанализируйте их качественные особенности. Зависят ли получен- ные результаты от начальной конфигурации системы? 5. Сравните результаты вычислений с точным ответом для нулевого маг- нитного поля (Д') =-Nspin(15.11) 6. Постройте зависимость коэффициента принятия решений в интервалах температур [0.1,5] и [5,50]. Как зависит эффективность алгоритма Метрополиса от температуры? 7. Вычислите плотности вероятностей для различного числа спинов Nspin и различных температур Т. Задача 15.10 Решите задачи 15.1-15.10, используя вариант вероятности перехода, следующий из принципа детального равновесия (15.10), Ег е Т 1У'(1->2) = ^--(15.12) е т +е т Для реализации симметричной формы вероятности перехода следует вычислять величину _ЬЕ е Т W'(l->2) =--, (15.13) 1 + /F где i\E = Е2- Е}. 457
Компьютерное моделирование физических процессов в пакете МА TLAB 15.4. Моделирование двумерной модели Изинга методом канонического ансамбля Целый ряд чистых материалов (например, железо, никель) и различных сплавов в отсутствие внешнего магнитного поля имеют спонтанную намаг- ниченность. Данные свойства проявляются только при температуре ниже определенной температуры Тс , называемой критической температурой или температурой Кюри. При температурах Т >ТС спонтанная намагничен- ность исчезает, т. е. происходит переход из упорядоченного режима, в кото- ром спины расположены упорядочено, в хаотический режим, в котором ориентация спинов является случайной. В соответствии с современными представлениями механизм ферромаг- нетизма имеет квантово-механическую природу, поэтому для построения адекватной модели изучаемого явления необходимо использовать матема- тический аппарат квантовой механики. Однако оказывается, что даже изу- чение классических двумерных и трехмерных моделей Изинга дает возмож- ность выявить общие закономерности поведения магнитных систем в близи фазового перехода. В то же время важно понимать, что классические моде- ли Изинга, которым присущи известные ограничения, не могут дать полно- го адекватного описания ферромагнетизма, что особенно заметно проявля- ется при температурах, близких к абсолютному нулю. Приступая к исследованию модели Изинга, необходимо определить макро- скопические характеристики системы, представляющие интерес с физической точки зрения. К таковым характеристикам обычно относят среднюю энергию системы (Е), среднюю намагниченность (М), удельную теплоемкость сис- темы при постоянном объеме cv и магнитную восприимчивость. Отметим, что наиболее часто исследователей интересуют равновесные значения указанных величин. Способ определения одной из макроскопических характеристик сис- темы - удельной теплоемкостей cv, равной по определению (15-14) дТ подробно обсуждался в предыдущем разделе. Альтернативный метод измерения теплоемкости cv основан на исполь- зовании связи теплоемкости флуктуациями полной энергии в каноническом ансамбле. Для нахождения соотношения, связывающего удельную тепло- 458
15. Моделирование канонического ансамбля методом Монте-Карло емкость cv с флуктуациями энергии системы в каноническом ансамбле, подставим в (15.14) выражение для средней энергии ансамбля (15.5): я . л/ _E_s c- = ^zgE^r' (15л5) где Z = Т . 5=1 Выполняя дифференцирование в (15.15), получаем 1 Л-7 М -El. , 1 м -Е1_ cv=-~ — yEse т -- -~YE2se т . (15.16) z дГ hi Z т h Учитывая, что из (15.16) окончательно найдем (15.17) Изотермическая магнитная восприимчивость /, характеризующая чувст- вительность системы к воздействию внешнего поля при постоянной темпе- ратуре, по определению равна г 5(М) г = пт ——- А л->о dh (15.18) Данную величину, точно так же, как удельную теплоемкость cv, можно связать с флуктуациями намагниченности системы. Запишем энергию сис- темы в виде Es=Eos-hMs, (15.19) где Ео s - энергия 5-го состояния в отсутствие магнитного поля, Н - напря- женность наложенного внешнего магнитного поля, Му - намагниченность в 5-м состоянии. Средняя намагниченность (М) по определению равна I м -Es (М)=-£Муе т . (15.20) z s=i 459
Компьютерное моделирование физических процессов в пакете МА TLAB Продифференцировав (15.19), по h получаем o£s .. (15.21) dh s Используя (15.21), имеем м . Es dL V 1 V У — = > —Мее 1 . dh^!T (15.22) Следовательно, Е Е S(M) 1 5Z у-ч 1 1 yr SEs —у dh Z2 dhj^ ZTf^dh (15.23) Подставив в (15.23) выражения (15.21), (15.22), получим -^> = ±((м2)-<м>2). dh 1 х ' 1 (15.24) Подставив (15.24) в (15.18), окончательно найдем ^ = i((M2)-H2), (15.25) где (М), \М2) отвечают нулевому внешнему полю. Отметим, что соотношения (15.17), (15.25) являются общими соотноше- ниями между функциями отклика и равновесными флуктуациями. Следующий шаг после выбора интересующих равновесных характери- стик системы и задания способа их определения состоит в реализации алго- ритма Метрополиса, который в общем виде приведен в разделе 15.2. При- меняя алгоритм Метрополиса, можно сгенерировать спиновые конфигура- ции S с вероятностью w(5), а затем усреднить искомые величины по всем конфигурациям. Для генерации спиновых конфигураций можно, например, выбрать такой пробный шаг от 5 к St, при котором все спины одновременно меняются случайным образом. Однако такой пробный шаг приводит к по- лучению конфигурации, значительно отличающейся от исходной конфигу- рации S, и, следовательно, вероятность отбросить данную конфигурацию была бы велика, поэтому оказывается более предпочтительным использо- вать более мелкие шаги. Для этого будем рассматривать конфигурации, от- личающиеся переворотом одного спина. При этом переворачиваемый спин s- выбирается случайным образом. Принятие данного пробного шага зависит от отношения весовых функций 460
15. Моделирование канонического ансамбля методом Монте-Карло г="\^ тет. (15.26) w(5) Если г > 1 или если г < 1, но больше, чем равномерно распределенное на отрезке [0,1] случайное число, то спин s, переворачивается и принима- ется новая конфигурация, в противном случае спин остается неизменным. На одном шаге Монте-Карло предпринимается А попыток переворота спина (А = Nspin). Для реализации описанного алгоритма в пакете MATLAB необходимо создать три файла: 1) файл Espin.m, содержащий описание функции, воз- вращающей энергию заданной конфигурации спинов; 2) файл InitSp.m, со- держащий описание функции, возвращающей энергию системы, значение полного магнитного момента, матрицу, содержащую информацию о конфи- гурации системы, в момент времени t = 0; 3) файл IsingKA.m, содержащий описание функции, возвращающей мгновенные значения энергии системы, число принятия, мгновенный магнитный момент системы, мгновенные кон- фигурации спинов системы. % листинг файла Espin.m function z = Espin(Nspin,s,hJ) % функция, возвращающая энергию заданной конфигурации % спинов % Nspin - число спинов системы % s - матрица, содержащая информацию о положении спинов % h - напряженность внешнего магнитного поля % J - константа обменного взаимодействия Ns=Nspin.A0.5; Е=0; for i=l:Ns for j=l:Ns % проверка периодических граничных условий ifj==l Left=Ns; else Left==jl; end; if j==Ns 461
Компьютерное моделирование физических процессов в пакете MATLAB Right=l; else Right=j+1; end; if i==Ns Up=l; else Up=i+1; end; ifi==l Down=Ns; else Down=i-1; end; % энергия системы E=E-s(ij)*(h+J*(s(i,Left)+s(i,Right)+s(Downj)+s(Upj))); end; end; z=E; % листинг файла InitSp.m function [E,s,M] = InitSp(Nspin J,h) % функция, возвращающая энергию системы, значение полного магнитного % момента, матрицу, содержащую информацию о конфигурации системы, % в момент времени t = О % Nspin - число спинов системы % J - константа обменного взаимодействия % h - напряженность внешнего магнитного поля Ns=Nspin.A0.5; М=0; for i=l:Ns for j=l:Ns s(ij)=l; M=M+s(ij); end; end; E=Espin(Nspin,s,hJ); % листинг файла IsingKA.m 462
15. Моделирование канонического ансамбля методом Монте-Карло function [ Е, Accept,M,S] = IsingKA(NspinJ,h,NTrial,T,Sstart,Mstart,Estart) % функция, возвращающая мгновенные значения энергии % системы, число принятия, мгновенный магнитный момент % системы, мгновенные конфигурации спинов системы % Nspin - число спинов системы % J - константа обменного взаимодействия % h - напряженность внешнего магнитного поля % NTrial - число испытаний % Т - температура системы % Sstart - матрица, содержащая информацию об ориентации % спинов в момент времени t = О % Mstart - значение магнитного момента системы в момент времени t = О % Estart - энергия системы в момент времени t = О Ns=Nspin.A0.5; M(l)=Mstart; S=Sstart; E(l)=Estart; s=Sstart; Accept=0; k=2; for i=l:NTrial for j=l:Nspin % случайный выбор номера узла для опрокидывания спина Ix=floor(Ns*rand(l)+l); Iy=floor (Ns*rand(l)+1); % проверка периодических граничных условий iflx==l Left=Ns; else Left=Ix-l; end; if!x==Ns Right=l; else Right=Ix+l; end; if!y==Ns 463
Компьютерное моделирование физических процессов в пакете МА TLAB Up=l; else Up=Iy+l; end; ifly==l Down=Ns; else Down=Iy-l; end; % пробный переворот спина Temp=s(Iy,Ix); s(Iy,Ix)=-s(Iy,Ix); de=2*s(Iy,Ix)*(h+J*(s(Iy,Left)+s(Iy,Right)+... s(Down,Ix)+s(Up,Ix))); if or(de<=0,rand(l)<=exp(-deJT)) % пробный переворот спина принимается Accept=Accept+l; E(k)=E(k-l)-de; M(k)=M(k-l)+2*s(Iy,Ix); else % пробный переворот спина не принимается s(Iy,Ix)=Temp; Е(к)=Е(к-1); М(к)=М(к-1); end; S=cat(3,S,s); к=к+1; end; end; Accept=Accept/(NTrial*Nspin); % среднее число принятия решений Далее необходимо выполнить следующую последовательность команд: » Nspin=64; % число спинов системы » J=l; % константа обменного взаимодействия » h=0; % напряженность внешнего магнитного поля » Т=1.5; % температура системы » NTrial=100; % число испытаний 464
15. Моделирование канонического ансамбля методом Монте-Карло » [Estart,Sstar,Mstart]-InitSp(Nspin J,h); % вычисление параметров % начальной конфигурации »[Е, Accept, M,S]=IsingKA(NspinJ,h,NTrial,T,Sstart,Mstart, Estart); % визуализация зависимости мгновенных значений энергии % и магнитного момента системы от времени »i=l:length(E); » figure(l);plot(i,E,'k');axis([0 length(E) -300 10]) » figure(2);pIot(i,M,'k’) % визуализация мгновенных конфигураций системы » figure(3);bar3(S(:,:,l));colormap white;axis([0 9 0 9-1 1]) » figure(4);bar3(S(:,:,10));colormap white;axis([0 9 0 9-1 1]) » figure(5);bar3(S(:,:,100));colormap white;axis([0 9 0 9-11]) » figure(6);bar3(S(:,:,500));colormap white;axis([0 9 0 9-1 1]) » figure(7);bar3(S(:,:,2000));colormap white;axis([0 9 0 9-11]) % выделение мгновенных значений энергии и магнитного момента, % соответствующих равновесному состоянию системы » j=l:length(E)-2000; » El(j)=E(j+2000); » Ml(j)=M(j+2000); % вычисление теплоемкости в соответствии с (15.17) » Е2=Е1.Л2; » c=(l/T.A2)*(mean(E2)-mean(El).A2)/Nspin с = 0.2708 % вычисление магнитной восприимчивости в соответствии с (15.25) » xi=( 1/Т) * (mean (M2)-mean(M 1). А2) xi = 1.1377 » mean(Ml) % средний магнитный момент ans = 0.2204 Результаты выполнения описанной последовательности команд пред- ставлены на рис. 15.5-15.11. 465
Компьютерное моделирование физических процессов в пакете MATLAB Рис. 15.5. Зависимость мгновенных значений энергии системы от времени Рис. 15.6. Зависимость мгновенных значений магнитного момента системы от времени Рис. 15.7. Конфигурация системы в момент времени t = О 466
15. Моделирование канонического ансамбля методом Монте-Карло Рис. 15.8. Конфигурация системы в момент времени 1-10 467
Компьютерное моделирование физических процессов в пакете МА TLAВ Рис. 15.11. Конфигурация системы в момент времени t -2000 Задача 15.11 Из выражения для полной энергии сис- темы (14.8) видно, что вклад в значе- ние переменной г, вычисляемой в соот- ветствии с (15.26), дают только сла- гаемые, содержащие : -Z&sAJS+h) . _ r = e ' , (15.2/ где \Sjj - изменение s- спина, обуслов- ленное его переворотом, S - сумма че- тырех спинов, соседних с переворачи- ваемым спином. Так как S может при- нимать только 5 различных значений О, ±2,±4, при h = 0 имеется всего 5 раз- личных значений энергии (рис. 15.12): 0,±2J,±4J,±8J. Рис. 15.12. Возможные изменения энергии в двумерной модели Изинга при перевороте одного спина Следовательно, чтобы не вычислять каждый раз значение экспоненты, для уменьшения времени счета можно один раз вычислить и запомнить таблицу значений г. Внесите в функцию Ising2, необходимые изменения и попробуйте оценить, на сколько сократилось время вычислений. 468
15. Моделирование канонического ансамбля методом Монте-Карло Задача 15.12 Исследуйте зависимость времени релаксации системы к равновесному состоянию тге1 от температуры системы Т и числа спинов системы Nspin. Отобразите зависимости тге1=тге1{Т^), rlfl =Trel(Nspin). Ап- проксимируйте данные зависимости методом наименьших квадратов. СЕ{г}= Задача 15.13 В описанном выше документе мы оценивали равновесные значения энер- гии, удельной теплоемкости, магнитного момента и намагниченности, как средние значения, вычисляемые по соответствующим мгновенным значениям после достижения системой состояния равновесия. В данном подходе априори полагается, что каждое из мгновенных значений явля- ется статистически независимым от остальных значений, т. е. «время корреляции» между выборками равно нулю. При более правильном под- ходе следует вычислить автокорреляционные функции (E(/)E(f + г))-(E)2 (е2)-(е)2 1 ~ ~77,2\ /.х\2 ’ 1 .М где ( ) усреднение по всем возможным значениям t, оценить число ша- гов метода Монте-Карло, за которое значение автокорреляционной функции уменьшается в е раз, и вычислять среднее значения энергии, удельную теплоемкость, средний магнитный момент, удельную намаг- ниченность, проводя выборку значений, отстоящих друг от друга не менее, чем на тС0ГГ. Дополните описанный выше документ, собственной функцией, возвращающей значения автокорреляционной функции. Вы- числите значения автокорреляционных функций системы, состоящей из N = 64 спинов, при температурах Т, меняющихся в интервале [1.5,3.5] с шагом КГ = 0.1. Как зависит время корреляции от температуры? До- полните описанный выше документ функцией, возвращающей среднее значение энергии системы, удельную теплоемкость, средний магнитный момент, удельную намагниченность, вычисляемые по значениям, от- стоящим друг от друга по времени не менее, чем на гсоДТ). Сравните полученные термодинамические характеристики системы с аналогич- ными характеристиками, найденными усреднением по всей реализации. 469
Компьютерное моделирование физических процессов в пакете MATLAB Задача 15.14 Для более реалистичного описания процесса релаксации системы к рав- новесию следует проводить выбор спинов, подлежащих опрокидыванию, случайным образом. Однако, если мы интересуемся равновесными свой- ствами системы, то можно сэкономить машинное время, выбирая спи- ны последовательно. Как влияет на время корреляции способ выбора спинов, подлежащих опрокидыванию. Почему нежелателен последова- тельный выбор спинов в одномерной модели Изинга? В пределе бесконечно большой решетки (Nspin —>оо) модель Изинга имеет точное решение [13]. В предельном случае при h-О энергия систе- мы Е дается выражением Е Nspin Г 2 -J-coth(2x) 1 + — к'К1(к) , я (15.28) где х = tanhf—; к = 2 - .. к’ -2 tanh 2 (2х) -1; cosh(x) = —; IT J’ cosh2(2x) V ’ 2 ex-e~x ex-e~x sinh(x) =------; tanh(x) =---—; coth(x) - гиперболический арккотан- 2 ex+e x гене; Кх(к) - полный эллиптический интеграл первого рода: к Удельная намагниченность при Т <ТСравна М Nspin (15.29) где -2 tanh — I Т J z=e v 7. Задача 15.15 Для бесконечной решетки вычислите и отобразите графически зависи- мости энергии, удельной теплоемкости и намагниченности на один спин при h = 0 от температуры в диапазоне температур [0.1;3.5]. 470
15 Моделирование канонического ансамбля методом Монте-Карло Задача 15.16 Решив задачу 15.16, вы обнаружили, что в двумерной модели Изинга возникает фазовый переход: намагниченность системы в точке фазо- вого перехода становится равной нулю, а теплоемкость системы и ее магнитная восприимчивость расходятся. Проведите численные иссле- дования поведения модели Изинга вблизи точки фазового перехода и сравните ваши результаты с точным решением. Каков размер магнит- ных доменов при температуре, близкой к критической? Как влияет ко- нечный размер решетки на особенности зависимостей термодинамиче- ских величин от температуры? Задача 15.17 Используйте описанный выше документ для исследования термодина- мических свойств модели Изинга при hH). ЛИТЕРАТУРА 1. Creutz М., Microcanonical Monte Simulation, Phys. Rev. Letts. 50, 1411, 1983. 2. Bhanot G., Creutz M., Neuberger H., Microcanonical simulation of Ising system, Nucl. Phys. 235,417, 1984. 3. Metropolis N., Rosenbluth A. W., Rosenbluth M. N., Teller A. H„ Keller E. Equation of state calculations for fast computing machines, J. Chem. Phys. 6, 1087, 1953. 4. ГулдХ., ТобочникЯ. Компьютерное моделирование в физике. М.: Мир, 1990. Т. 2. 5. Киттель Ч. Введение в физику твердого тела М.: Наука, 1978. 6. Кунин С. Вычислительная физика. М.: Мир, 1992. 7. Ландау Л. Д., Лифшиц Е. М. Статистическая физика. М.: Наука, 2000. 8. Методы Монте-Карло в статистической физике/Под ред. К. Биндера. М.: Мир, 1982. 9. Дайсон Ф., Монторолл Э., Кац М., Фишер М. Устойчивость и фазовые переходы. М.: Мир, 1973. 10. Матвеев А. Н. Молекулярная физика. М.: Высшая школа, 1981. 11. Вильсон К., Когут Дж. Ренормализационная группа и Е-разложения. М.: Мир, 1975. 12. Хеерман Д. В. Методы компьютерного эксперимента в теоретической физике. М.: Наука, 1990. 13. Хуанг К. Статистическая механика. М.: Мир, 1966. 471
Глава 16 МОДЕЛИРОВАНИЕ КВАНТОВЫХ СИСТЕМ 16.1. Введение В квантовой механике любая система полностью описывается заданием волновой функции (в общем случае комплексной), квадрат модуля ^(r,f)2 которой определяет плотность вероятности обнаружить частицу в момент времени t в некоторой точке пространства с радиусом-вектором г . Так как частица может находиться в произвольной точке пространства, ве- роятность того, что частица находится в элементарном объеме dV = d3r в точке пространства с радиусом-вектором f в момент времени t равна P(f,t)d2T = C2|(/(F,r)26Z3r , (16.1) где С — нормировочная постоянная, выбираемая из условия = 1 > (16.2) здесь ,/*(г,г) — функция комплексно-сопряженная (y(F,t) . Если частица движется в потенциале то временная эволюция функции (/(?,/) описывается нестационарным уравнением Шредингера = Д^(Г,0 + (7(Г,Г>(Г,Г), (16.3) dt 2т где т - масса частицы, Й - постоянная Планка, деленная на 2тс, а д2 02 92 Д - — , + — 1 н--- - оператор Лапласа. д х~ д / 5 z Каждой физической классической характеристике частицы (например, координате, скорости, импульсу, моменту импульса, энергии и др.) ставится в соответствие некоторый оператор. Наблюдаемое значение величины А есть среднее значение соответствующего оператора А (А) = jV’(r,r)A,t)dyr . (16.4)
I6. Моделирование квантовых систем Например, оператор, соответствующий импульсу р, имеет вид Р-ЧйА а его среднее р — iri — , d ciu ириднии дГ (Р) = -ih [. J dr В одномерном случае уравнение Шредингера принимает вид /Й = - ——-j/(x,/) + t/(x,z)(/(x,f). (16.5) дt 2т дх Для независящего от времени потенциала можно искать решения урав- нения (16.3), (16.5) в виде _/£7 <p(r,t) = 0(r,t)e й , (16.6) y/(x,t) = 0(x,t)e й , (16.7) соответственно. Частица, находящаяся в состоянии, описываемом волновой функцией (16.6), (16.7), имеет вполне конкретное значение энергии Е. Подставив (16.7) в (16.5), получаем стационарное уравнение Шредингера _ Й д$х) + = Еф^ 2т дх1 Отметим, что уравнение можно записать в виде Г й2 а2 —-у + 1/(х) ф(х) = Еф{х), 2т дх1 (16.8) (16.9) из которого видно, что ---------х +U(x) является оператором энергии 2т дх1 Й (оператор Гамильтона), ф(х) - собственная функция гамильтониана, Еп - собственное значение оператора Й , т. е. Йф(х) = Еф(х). (16.10) Вообще говоря, оператор Й может иметь п собственных функций фп и п соответствующих им собственных значений энергии Еп, которые в ряде случаев могут совпадать (вырожденные состояния) или принимать конти- нуум непрерывных значений (непрерывный спектр). Основным состоянием называется состояние с наименьшей энергией Е1. 473
Компьютерное моделирование физических процессов в пакете МА TLAB Общее решение (16.9) можно представить в виде суперпозиции собст- венных функций оператора, отвечающего выбранной физической величине. Например, если Й не зависит от времени, то можно записать = й . (i6.li) П где ^„(х) — собственные функции оператора, а суммирование проводится по всем дискретным состояниям и интеграл по непрерывному спектру. Собственные функции фп (х), соответствующие различным собственным значениям, являются ортогональными, т. е. +00 Jф\(,х)фп. (х) dx = Sm,. (16.12) -X Коэффициенты сп в (16.11) определяются по известным значениям функции ^(х,г). Например, если известны значения ^(х,0), то, воспользо- вавшись свойством ортогональности (16.12), легко получить сп = Jф* (x)^(x,0)Jx . (16.13) Коэффициент сп можно интерпретировать, как амплитуду вероятности обнаружить в измерении значение полной энергии, равное Еп. 16.2. Стационарное уравнение Шредингера Рассмотрим решения одномерного стационарного уравнения Шрединге- ра (16.9) частицы, движущейся в одномерном потенциале t/(x), форма ко- торого представлена на рис. 16.1 (в точках xmin, хтаг потенциал становится бесконечно большим). Это означает, что в точках xmin, xmax расположены вертикальные стенки, а между ними находится яма конечной глубины. Для удобства дальнейшего решения запишем уравнение Шредингера (16.9) в виде: ^~~ + k2(x)i^(x) = 0, (16.14) d х где 474
16. Моделирование квантовых систем Рис. 16.1. К постановке задачи решения стационарного уравнения Шредингера С математической точки зрения задача состоит в отыскании собствен- ных функций оператора - — + Л2(х), отвечающих граничным условиям d х2 и соответствующих собственных значений энергии Е. Так как Р(х)>0 при х е [xleft,xrighJ и Р(х)<0 при xe[xmi„,xw], х е [xrigA/, хтих ], то можно ожидать, что собственному решению данной за- дачи соответствует собственная функция, осциллирующая в классически разрешенной области движения Е > U (х) (хе [х^, x.-.ght ]) и экспоненци- ально затухающим в запрещенных областях, где E<U(x) (хе [xm„.,xleft], х е ПРИ x-xmin’ Л -Хт«х ^(х) = 0 Так как все состояния частицы в потенциальной яме оказываются связанными (т. е. локализован- ными в конечной области пространства), спектр энергий является дискрет- ным. Частица, находящаяся в потенциальной яме конечных размеров 475
Компьютерное моделирование физических процессов в пакете МА TLAB (U(x) < 0 при х е [х„„„,хтах], U(х) = О при л г [xffl,„,хтах]), имеет дискрет- ный спектр при Е < О и непрерывный спектр при Е > О . Традиционно для решении задачи о нахождении собственных значений уравнения Шредингера используется метод пристрелки. Идея метода при- стрелки состоит в следующем. Допустим, в качестве искомого значения ищется одно из связанных состояний, поэтому в качестве пробного началь- ного значения энергии выбираем отрицательное собственное значение. Проинтегрируем уравнение Шредингера каким-либо известным численным методом на интервале [xm;n, х1е/} ]. По ходу интегрирования от xmiil в сторо- ну больших значений х сначала вычисляется решение I//, (х), экспоненци- ально нарастающее в пределах классически запрещенной области. После перехода через точку поворота х1е^, ограничивающую слева область дви- жения, разрешенную классической механикой, решение уравнения стано- вится осциллирующим. Если продолжить интегрирование далее за правую точку поворота хп- А/, то решение становится численно неустойчивым. Это обусловлено тем, что даже при точном выборе собственного значения, для которого выполняется условие i//4 (хтах) = 0, решение в области л[Лн?л; > Хтах ] всегда может содержать некоторую примесь экспоненци- ально растущего решения, не имеющего физического содержания. Отме- ченное обстоятельство является общим правилом: интегрирование по на- правлению вовнутрь области, запрещенной классической механикой, будет неточным. Следовательно, для каждого значения энергии более разумно вычислить еще одно решение у/_(х), интегрируя уравнение (16.9) от х„шд. в сторону уменьшения х. Критерием совпадения данного значения энергии является совпадение значений функций ^+(х) и V'-CO в некоторой про- межуточной точке хт. Обычно в качестве данной точки выбирают левую точку поворота xtcfl . Так как функции у/((х), у/^(х) являются решениями однородного уравнения (16.9), их всегда можно отнормировать так, чтобы в точке хт выполнялось условие у/х (л,„) = у/ (хт). Помимо совпадения зна- чений функций в точке хт для обеспечения гладкости сшивки решений по- требуем совпадения значений их производных у/' (х„,) = у/'_(хт): ''Т'1 =^'-- . (16.17) ах : v_r ах г_г Л~Лт л~лт 476
16. Моделирование квантовых систем Используя в (16.17) простейшие левую и правую конечно-разностные аппроксимации производных функций +(х), I//, (х) в точке хт, находим эквивалентное условие гладкости сшивки решений: f = w-u,„ +h)]_ 0 (, 6 ] 8 max yr- Число maxi^/j является масштабирующим множителем, который выби- рается из условия /si. Если точки поворота отсутствуют, т. е. Е > 0 , то в качестве хт можно выбрать любую точку отрезка [хт/л, х,П(И]. Для потен- циалов, имеющих более двух точек поворота и, соответственно, три или бо- лее однородных решений, общее решение получается сшивкой отдельных кусков. В описанном ниже документе, для интегрирования дифференциаль- ного уравнения второго порядка мы используем метод Нумерова. Для полу- чения вычислительной схемы аппроксимируем вторую производную трех- точечной разностной формулой: ~2А+2л-1 = / + y""+o(h^ , 7 17 \ п Из уравнения (16.9) имеем Подставив (16.19) в (16.20) и перегруппировав члены, получаем 12 -2 1-----к; 12 " = 0. (16.19) (16.20) (16.21) Разрешив (16.21) относительно у„и или >„_j, найдем рекуррентные формулы для интегрирования уравнения (16.9) вперед или назад по х с ло- кальной погрешностью о(/гб). Отметим, что погрешность данного метода оказывается на порядок выше, чем погрешность метода Рунге-Кутта чет- вертого порядка Кроме этого данный алгоритм более эффективен, потому что значение функции к~(х) вычисляется только в узлах сетки. Для нахождения численного решения оказывается удобным провести обезразмеривание уравнения (16.9). используя в качестве единиц измерения расстояния а — ширину потенциальной ямы, в качестве единиц измерения энергии - модуль минимального значения потенциала Uo. В выбранных единицах измерения уравнение (16.9) имеет вид 477
Компьютерное моделирование физических процессов в пакете MATLAB 2 Д + /2(Е-(7(х)>=0, (16.22) где Х=-£7(х) = -®, z2=^!Eo. (16.23) tz (70 6/о Й Таким образом, вычислительный алгоритм для нахождения собственных функций и собственных значений уравнения Шредингера реализуется сле- дующей последовательностью действий. 1. Задать выражение, описывающее безразмерный потенциал £7(х). 2. Задать значение /2 . 3. Задать пространственную сетку, на которой проводится интегрирова- ние уравнения (16.9). 4. Задать хт!п , хтах . 5. Задать начальное значение энергии Eslart. 6. Задать конечное значение энергии Е^1П . 7. Задать шаг изменения энергии ДЕ . 8. Проинтегрировать уравнение (16.9) для значения энергии Е, слева направо на отрезке [хт,-„,хт]. 9. Проинтегрировать уравнение (16.9) для значения энергии Е(- справа налево на отрезке [х„мх,хт ]. 10. Вычислить значения переменной для значения энергии Е, . 11. Увеличить текущее значение энергии на ДЕ : Е(+1 = Ej + ДЕ . 12. Проинтегрировать уравнение (16.9) для значения энергии ЕМ1 слева направо на отрезке [хт,„, хт ]. 13. Проинтегрировать уравнение (16.9) для значения энергии Е;+1 справа налево на отрезке [хшах,хт]. 14. Вычислить значения переменной /(41 для значения энергии Ен1. 15. Сравнить знаки /(, /((j 16. Если /; • //+1 > 0 и ЕМ1 < Етах. увеличить текущее значение энергии на ДЕ и повторить действия, описанные в пп. 8-15. 17. Если /, • у+1 <0, уточнить собственное значение энергии методом линейной интерполяции. 478
16. Моделирование квантовых систем 18. Если £, + 1 < EmHV, повторить действия, описанные в пп. 8-17. 19. Если > Е„|ЯХ, закончить вычисления. Для реализации описанного вычислительного алгоритма в пакете MATLAB необходимо создать три m-файла: 1) файл Num.m, содержащий описание функции, возвращающей для заданной энергии величину f вы- числяемую в соответствии с (16.18), и значения волновой функции в узлах координатной сетки; 2) файл U.m, содержащий описание функции, возвра- щающей значение потенциала; 3) файл Elevel.m, содержащий описание функции, возвращающей собственные значения и собственные функции уравнения Шредингера. % листинг файла Num.m function [f,psi]=Num(gamma,E,V,Xmin,Хтах,Ngreed) % функция, возвращающая для заданной энергии величину/, % вычисляемую в соответствии с (16.18), и значения волновой % функции в узлах координатной сетки % gamma - коэффициент, входящий в обезразмеренное уравнение % Шредингера (16.22) % Е - заданное значение энергии % V - вектор, содержащий значения потенциала в узлах координатной сетки % Xmin - левая граница координатной сетки % Хтах - правая граница координатной сетки % Ngreed - число узлов координатной сетки dx=(Xmax-Xmin)/N greed; c=dx.A2*gammaA2/12; Imatch=l; psi(l)=0; psi(2)=9.99999*10A-10; % интегрирование уравнения Шредингера справа налево Kiml=c*(E-V(l)); Ki=c*(E-V(2)); for i=2:Ngreed-l Kipl=c*(E-V(i+l)); if and(Ki*Kip l<=0,Ki>0) Imatch=i; i=Ngreed; end; if i<=Ngreed-l psi(i+l)=(psi(i)*(2-10*Ki)-psi(i-l)*(l + Kiml))/(l+Kipl); 479
Компьютерное моделирование физических процессов в пакете MATLAB if abs(psi(i+l))>=10A10 for k=l:i+l psi(k)=psi(k) *9.99999*10A -6; end; end; Kiml=Ki; Ki=Kipl; end; end; if Imatch==l Imatch=Ngreed-10; end; % интегрирование уравнения Шредингера слева направо psi_Left=psi(Imatch); psi(Ngreed)=0; psi(Ngreed-l)=9.99999*10A-10; Kipl=c*(E-V(Ngreed)); Ki=c*(E-V(Ngreed-l)); for i=Ngreed-l:-l:Imatch+l Kiml=c*(E-V(i-l)); psi(i-l)=(psi(i)*(2-10*Ki)-psi(i+l)*(l+Kipl))/(l+Kiml); if abs(psi(i))>10A10 for k=Ngreed:-l:i psi(k)=psi(k)*9.99999*10A-6; end; end; Kipl=Ki; Ki=Kiml; end; if psi_Left<0 for i=Imatch:Ngreed psi(i)=-psi(i); end; end; psil=abs(psi); Psimax=max( psi 1); % вычисление разности между волновыми функция, полученными % интегрированием уравнения Шредингера слева направо и справа % налево, в узде с номером Iinatch 480
16. Моделирование квантовых систем f-(psi_Left+psi(Imatch)-(psi(Imatch-l)+psi(Imatch+l)))/Psimax; % листинг файла U.m function z = U(x,Xmin,Хтах) % функция, возвращающая значения потенциала в узлах % координатной сетки % х - вектор, содержащий координаты узлов % Xmin - левая граница потенциала % Хтах - правая граница потенциала if and(Xmin<=x,x<=Xmax) z=-l; else z=10A309; end; % листинг файла Elevel.m function [EL,Psi]=Elevel(gamma,dE,V,Emax,Xmin,Xmax,Ngreed) % функция, возвращающая собственные значения и собственные % функции уравнения Шредингера % gamma - коэффициент, входящий в обезразмеренное уравнение % Шредингера (16.22) % dE - приращение энергии % V - вектор, содержащий значения потенциала в узлах координатной сетки % Emax - максимальное значение энергии % Xmin - левая граница координатной сетки % Хтах - правая граница координатной сетки % Ngreed - число узлов координатной сетки Tolf=10A-6; Emin=-1; E=Emin+dE; m=l; Start=0; while E<Emax if Start==O E1=E; [f,psi]=Num(gamma,E,V, Xmin, Xmax, Ngreed); E=E+dE; Fl=f; Start=l; end; 16—1576 481
Компьютерное моделирование физических процессов в пакете МА TLAB Е2=Е; [f,psi] =Num(gamma,E, V, Xmin, Xmax, N greed); F2=f; ifFl*F2>0 E1=E; F1=F2; E=E+dE; end; ifFl*F2<0 % уточнение собственного значения энергии и вычисление % значений собственной функции в узлах координатной сетки a=(E2-El)/(F2-Fl); E=El-a*Fl; [f,psi]=Num(gamma,E,V,Xmin,Xmax,Ngreed); F1=F2; E1=E2; EL(m,l)=m; EL(m,2)=E; if m==l PsiO=psi'; else PsiO=cat(2,PsiO,psi'); end; m=m+l; E=E+dE; end; end; dx=(Xmax-Xmin)/(Ngreed-l); Nl=size(PsiO,2); % нормировка собственных волновых функций for i=l:Nl S=PsiO(:,i); S1=S.A2; Norm=0; for j=l:Ngreed-l Norm=Norm+0.5*(Sl(j)+Sl(j+l))*dx; end; S=S./(NormA0.5); if i==l 482
16. Моделирование квантовых систем Psi=S; else Psi=cat(2,Psi,S); end; end; Далее необходимо выполнить следующую последовательность команд: » Xmin=-0.5; % левая граница координатной сетки » Хтах=0.5; % правая граница координатной сетки » gamma=20; » Ngreed=500; % число узлов координатной сетки % вычисление координат узлов сетки »i=l:Ngreed; » x(i)=Xmin+(Xmax-Xmin)/(Ngreed-l)*(i-l); » dE=10A-3; % приращение энергии » Ешах=-0; % максимальное значение энергии » V(i)=U(x(i),Xmin,Xmax); % вычисление значения потенциала % в узлах координатной сетки % вычисление собственных значений и собственных функций % уравнения Шредингера » [ELJ*si]=EleveI(gamma,dE,V,Emax,Xmin,Xmax,Ngreed); » EL EL = 1.0000 -0.9751 2.0000 -0.9005 3.0000 -0.7761 4.0000 -0.6020 5.0000 -0.3782 6.0000 -0.1046 % визуализация собственных функций » pIot(x(i),Psi(:,l),'k',x(i),Psi(:,2),'--k',x(i),Psi(:,3),'-.k'); » pIot(x(i),Psi(:,4),'k',x(i),Psi(:,5),'--k',x(i),Psi(:,6),'-.k,'>; Результат выполнения описанной последовательности команд представ- лен на рис. 16.2 и 16.3. 483
Компьютерное моделирование физических процессов в пакете МА TLAB Рис. 16.2. Волновые функции, соответствующие первому, второму и третьему собственным значениям энергии Рис. 16.3. Волновые функции, соответствующие четвертому, пятому и шестому собственным значениям энергии Задача 16.1 Проверьте условие ортогональности собственных функций уравнения Шредингера (16.12). Оцените точность выполнения данного условия. Исследуйте зависимость точности ортогональности собственных функций уравнения Шредингера от шага изменения энергии \Е и числа узлов пространственной сетки Ngreed. Задача 16.2 Для бесконечной прямоугольной ямы шириной а удается найти анали- тические выражения для собственных функций уравнения и собствен- ных значений Шредингера [I, задача 18]: 484
16. Моделирование квантовых систем й2^2 (а) 2 (их} 2пга2 ' \2) I а )' т г л л с (aY2 . ( 2я х\ п = 2 , Е, = 4 - 5 = 4Е,, ш-у = - sin — , 2лш2 W < а ) 22 z ’ z э г- n 71 OT7 I a] 2 ( Зях] n = 3, E-, - 9-x -9E,, W-, - — соя-- , 2ma2 W \ a ) 22 z ’ z Uй л n (a) 2 .(4ях] n = 4 ,E4= 16----= ”E], = — я«л ------ , 2ma \2) \ a J 2 2 z > - v я nr- I a\ 2 (5ях} п=э ,Et= 25----z- = 9E., Щ = — соя---- , 2ma2 * 1 5 <2J U J z „ й2л-2 n_ (aYl . (6я x) n = D ,E6= 36----у = 9E,, y/6 = — ягл - . 2ma \2) \ a ) Используя безразмерные переменные, определяемые в соответствии с (16.23), получите выражения для безразмерных значений энергии и собственных функций. Сравните численные значения энергий и волновых функций с соответствующими значениями, вычисляемыми по анали- тическим выражениям. Оцените точность численных значений энергии и волновых функций. Почему точность зависит от номера собст- венного значения энергии? Задача 16.3 Для различных собственных значений энергии. 1. Постройте зависимость плотности вероятности Р(х) от х. 2. Вычислите (х), (х2^ в соответствии с (16.4). 3. Вычислите (р), ^р2^ в соответствии с (16.5). 4. Постройте зависимость разности между соседними уровнями энергии от номера уровня. Задача 16.4 1. Определите влияние малого возмущения на собственные значения и собственные волновые функции частицы в бесконечной прямоугольной яме, в которой находится небольшой прямоугольный горб высотой Uh и шириной Ь, симметрично относительно точки х = 0. Выберите 485
Компьютерное моделирование физических процессов в пакете МА TLAB Uh«U0, Ь«а и определите, как зависит энергия основного состоя- ния и соответствующие собственные функции от Ub, b. 2. Пусть у/0 ~ собственная функция, отвечающая наименьшему собствен- ному значению энергии, \рь — собственная функция основного состояния при Ub*0. Вычислите значение выражение а x)y/(x)dx о. а jp2(x)dx о при различных значениях Ь. Как связана данная величина с изменением относительных значений энергии? (Указание. Предваряя решение задачи, запишите ее условие в безразмер- ных единицах.) Задача 16.5 Так как при х = I— глубина ямы конечна, функция ^(х) не равна нулю в ' 2 запрещенной классической механикой области, в которой E<U0 и х> . Используя рис. 16.1, измените функцию, описывающую зависи- мость потенциала от координаты, и рассмотрите движение частицы в прямоугольной потенциальной яме конечной глубины. 1. Вычислите собственные функции и собственные значения энергии, начав с уровней, близких ко дну ямы. Как меняются волновые функции по мере удаления от дна ямы? 2. Определите «глубину проникания под барьер» как расстояние от х - а/2 до точки, в которой значение функции составляет 1/е~ 0.37 от ее макси- мального значения. Как зависит глубина проникания от величины Uo? * 1 Задача 16.6 1. Получите несколько первых собственных значений энергии и собствен- ные функции гармонического осциллятора, описываемого потенциалом 1 7 U(x) = -кх'. Сравните полученные значения с известными аналитиче- скими результатами. 486
16. Моделирование квантовых систем 2. Постройте зависимость плотности вероятности Р(х) от х. 3. Вычислите (х), (х2^ в соответствии с (16.4). 4. Вычислите (р), (р2''/ в соответствии с (16.5). Задача 16.7 Получите несколько первых собственных значений энергии и собствен- ные функции ангармонического осциллятора, описываемого потенциа- лом U(x) = ^k х2 +Ь х2. Вычислите энергию основного состояния для к = 1, Ь=0.1,0.2,0.5. Как зависят энергия основного состояния и форма волновых функций от Ь? Задача 16.8 Получите численное решение для основного состояния линейного потен- циала (Данный потенциал может быть использован при моделировании свя- занной системы кварк - антикварк.) 16.3. Моделирование колебаний двухатомной молекулы в квазиклассическом приближении В данном разделе мы рассматриваем задачу об описании колебаний двухатомной молекулы, методы аналитического решения которой под- робно рассматриваются в работах [2-4]. Следуя выбранному подходу, обсу- дим постановку задачи и основное внимание сосредоточим на вычисли- тельных проблемах, возникающих при использовании для. ее решения в па- кете MATLAB. Двухатомная молекула состоит из двух ядер, связанных электронами. Поскольку масса ядер на три порядка больше массы электронов, можно считать, что распределение электронов мгновенно подстраивается к изме- нению положения тяжелых ядер (приближение Бора-Оппенгеймера). Это позволяет свести рассматриваемую задачу к задаче о движении двух ядер в потенциальном поле, зависящем от расстояния между ними. Причем на больших расстояниях потенциал должен быть притягивающим (силы Ван- дер-Вальса), а на близких расстояниях - отталкивающим (кулоновские си- лы и обменное взаимодействие). Таким свойством обладает потенциал Ле- нарда-Джонсона 487
Компьютерное моделирование физических процессов в пакете MATLAB V(r) = 4V0 (16.24) где Vo, а - параметры потенциала (рис. 16.4), который рассматривался нами при моделировании неидеального газа методом молекулярной динамики в главе 10. Из (16.6) очевидно', что потенциал достигает своего минимума, равного Vo, в точке rmin=2l/6ст. Рис. 16.4. Потенциал Лейнарда-Джонсона Принимая во внимание большую массу ядер, можно провести дальней- шее упрощение задачи, считая движение молекулы суммой двух независи- мых друг от друга движений: медленного вращения молекулы как единого целого и более быстрого колебательного движения ядер атомов относитель- но центра масс. Первое движение хорошо описывается как квантово- механическое вращение жесткой системы типа «гантель». Колебательное движение ядер описывается уравнением Шредингера (16.8), в котором U (х) - потенциал Лейнарда-Джонсона. Наша задача состоит в нахождении собственных значений энергии (энергетического спектра) колебательного движения. Принимая во внима- ние большую массу ядер, можно считать, что их движение близко к класси- ческому. Поэтому приближенные значения энергии колебаний можно най- ти, решив классическую задачу о движении частицы в потенциальном поле, а затем для определения энергетического спектра использовать правила квантования Бора-Зоммерфельда [5]. Классическое финитное движение в потенциале V(r) возможно в диапа- зоне энергий -Vb < Е <0. При этом изменение межъядерного расстояния имеет характер периодического движения между точками поворота, кото- рые мы будем в дальнейшем обозначать rnght. Для частицы, двигающей- ся в потенциальном поле, выполняется закон сохранения энергии 2 E=£-+V(r), (16.25) 2т 488
16. Моделирование квантовых систем где р - импульс относительного движения ядер. Поэтому в фазовом пространстве движение представляет собой некоторую замкнутую кривую, в каждой точке которой выполняется условие (16.25). В явной форме уравнение траектории в фазовом пространстве получается решением уравнения (16.25) относительно р: p = ±[2m(E-V(r))]1/2. (16.26) В классическом случае движение частицы возможно при любом значе- нии энергии в диапазоне [-Vo;O]. Для нахождения дискретного энергетиче- ского спектра Е„ уравнения Шредингера вводится переменная величина - действие, зависящая от энергии системы [5]: S(E) = jk(r)dr, (16.27) где k(r) = h^p(r) - волновое число волны де Бройля, а интегрирование ве- дется по одному полному периоду колебания. По своему физическому смыслу переменная действия соответствует площади, охваченной траекто- рией в фазовом пространстве и измеряемой в единицах Й. В соответствии с правилом квазиклассического квантования разрешены лишь те значения энергии Еп, которым соответствует действие, равное 2тг(м+1/2), где п =0,1,2 ... Таким образом, используя (16.25) и замечая, что траектория сим- метрична относительно прямой х=0, получаем S(E„) = 2T|^ - й -.1/2 r'K/" rleft [Еп -V(r)]1/2dr = 2^n+^ (16.28) В граничных точках интервала интегрирования подынтегральное выра- жение в (16.28) равно нулю. Для удобства решения данной задачи введем следующие безразмерные переменные Е г Е = —,Х = —,У = Vo 2ma2V0 (16.29) используя которые, выражение (16.28) можно записать в следующем виде: Xright ( \ S(e,,) = Y Jk, -v(T)]1/2rfx = 2X + J, (16.30) Xlefl где v(x) = 4 1 _X12 1_’ x6. 489
Компьютерное моделирование физических процессов в пакете МА TLAB Из (16.30) видно, что величина у является мерой квантового характера движения в данной задаче, так как в классическом пределе h —» 0, т —» оо у становится большим. Для молекул Н2, HD, О2 величина у составляет 21,7, 24,8, 150 соответственно. Сравнив (16.30) и (16.27), видим, что выражение Jc(x) = у -,[еп -v(x) является обезразмеренным волновым числом волны де Бройля. В соответствии с вышеизложенным решение рассматриваемой задачи разбивается на следующие этапы. 1. Нахождение зависимости 5(f) и спектра вп колебаний двухатомной молекулы в соответствии с (16.30). 2. Построение спектра совместно с зависимостью V( х ). 3. Решение уравнений Гамильтона и построение траектории на фазовой плоскости. Будем находить разрешенные значения энергетического спектра еп в соот- ветствии со следующим алгоритмом. 1. Найти по таблице значений функции S(e) для заданного квантового числа п интервала, на котором выполняется условие Sj_A < 2л^п + < Sj. 2. Если Sj_x = 2л^п + ^, принять в качестве значения и-го энергетиче- ского спектра Ej_^. 3. Если Sj = 2л^п + , принять в качестве значения п-го энергетиче- ского спектра Ej. 4. Если Sj^ < 2я^п + < Sj, принять в качестве п-го значения энерге- тического спектра значение, получаемое с помощью линейной интерполя- ции зависимости 5(f) на отрезке [е _1(Е .]: где а = 490
16. Моделирование квантовых систем b SMEJ~SJEM Е>~Е>^ 5. Увеличить квантовое число на единицу п = п +1: Если 2я^л + < max(S(E)), повторение пп. 1—6. Если 2лГп + ~ ) > max(S(E)), завершение работы. Геометрическая интерпретация описанного алгоритма представлена на рис. 16.5. Для реализации описанного выше алгоритма вычисления спектра коле- баний двухатомной молекулы необходимо создать два m-файла: 1) файл Ас- tion.m, содержащий описание функции, возвращающей значения функции S(E) для заданных значений энергии; 2) файл Spectr.m, содержащий опи- сание функции, возвращающей собственные значения энергетического спектра колебаний двухатомной молекулы. Рис. 16.5. Геометрическая интерпретация алгоритма вычисления энергетического спектра % листинг файла Action.m function z - Action(Emin,Emax,Xmin,gamma) % функция, возвращающая значения функции S(E) для заданных % значений энергии; % Emin - минимальное значение энергии % Emax - максимальное значение энергии % Xmin - координата минимума потенциальной энергии % gamma - коэффициент, входящий в обезразмеренное уравнение % Шредингера (16.22) % нахождение корней уравнения U(x)=Emax 491
Компьютерное моделирование физических процессов в пакете MATLAB sl='4*(l./r.A12-Ur.A6)'; s2=num2str (Emax); s=strcat(sl,'-',s2); xO=O.l; Xleft=fzero(inline(s,'r'),[0.1 Xmin]); % левая точка поворота x0=10*Xmin; Xrihgt=fzero(inline(s,'r'),[Xmin xO]); % правая точка остановки Emin=Emin+10A-3; Ne=100; % число значений зависимости S(E) De=(Emax-Emin)/(Ne-l); Np=1000; % число узлов сетки, используемых для вычисления интеграла j=l:Np; for i=l:Ne E=Emin+De*(i-l); x0=0.1; s2=num2str(E); s="; s=strcat(sl,'-',s2); Xleft=fzero(inline(s,'r'),[xO Xmin]); % левая точка остановки, % соответствующая энергии Е x0=10*Xmin; Xright=fzero(inline(s,'r'),[Xmin хО]); % правая точка остановки, % соответствующая энергии Е z(i,l)=E; x(j)=Xleft+(Xright-Xleft)/(Np-l)*(j-l); s=strcat('(,,s2,'-',sl,')','.A0.5'); F=inline(s,'r'); S(j)=gamma*real(F(x(j))); I=trapz(x,S); % вычисление интеграла (16.28) z(i,2)=I; end; (Обращаем внимание читателя на строчку программы S(j)=gamma* *real(F(x(j))); в файле Action.m, в которой в вектор S заносится значение дей- ствительной части подынтегральной функции в (16.28). Необходимость данной операции обусловлена тем, что для нахождения координат точек остановки мы используем встроенную в пакет MATLAB функцию fzero, возвращающую приближенное значения корня нелинейного уравнения. Так как любое числен- ное решение имеет погрешность, может оказаться, что значение соответствую- щего корня окажется левее истинного значения левой точки поворота и/или 492
I6. Моделирование квантовых систем правее правой точки поворота, а потому значения подынтегральной функции и, соответственно, интеграла (16.28) становятся мнимыми.) % листинг программы Spectr.m function [Xleft,Xright,EL] = Spectr(z,Xmin) % функции, возвращающая собственные значения энергетического % спектра колебаний двухатомной молекулы, и соответствующие % данным значениям координаты точек поворота % z - матрица, возвращенная функцией Action % Xmin - координата минимума потенциальной энергии п=0; Ml=max(z(:,2)); j=i; sl='4*(l./r.A12-l./r.A6)'; while and((n+0.5)*pi<Mlj+l<length(z)) while z(j,2)<(n+0.5)*pi j=j+i; end; if j+l<length(z); x=[z(j-l,l) z(j,1)]; y=[z(j-l,2) z(j,2)]; a=(y(2)-y(l))/(x(2)-x(l)); b=y(l)-a*x(l); EL(n+l)=((n+0.5)*pi-b)/a; x0=0.1; s2=num2str(EL(n+l)); s="; s=strcat(sl,'-',s2); Xleft(n+l)=fzero(inline(s,'r'),[xO Xmin]); x0=10*Xmin; Xright(n+l)=fzero(inline(s,'r'),[Xmin xO]); n=n+l; end; end; Далее необходимо выполнить следующую последовательность команд: » Xmin=2A(l/6); % координата минимума потенциала » gamma=80; % коэффициент, входящий в обезразмеренное % уравнение Шредингера (16.22) » Emin=-1; % минимальное значение энергии 493
Компьютерное моделирование физических процессов в пакете MATLAB » Етах=-10л-4; % максимальное значение энергии » z = Action(Emin,Emax,Xmin,gamma); % вычисление зависимости S(E) » figure(l);plot(z(:,l),z(:,2)) % визуализация зависимости 5(E) » [XIeft,Xright,EL] = Spectr(z,Xmin) % вычисление энергетического % спектра колебаний двухатомной % молекулы » EL % вывод значений энергетического спектра EL = Columns 1 through 7 -0.9346 -0.8120 -0.7002 -0.5987 -0.5071 -0.4249 -0.3519 Columns 8 through 14 -0.2875 -0.2312 -0.1825 -0.1411 -0.1064 -0.0778 -0.0548 Columns 15 through 16 -0.0368 -0.0233 Результат выполнения описанной последовательности команд представ- лен на рис. 16.6. Рис. 16.6. Зависимость действия от энергии Рассмотрим задачу отображения потенциала Лейнарда-Джонсона и энергетического спектра колебаний двухатомной молекулы на одном чер- теже. Данный чертеж представляет собой график функции V(x) и набор от- резков прямых у = Еп, параллельных оси абсцисс, координаты левых и правых концов которых есть решения уравнения V(r)= Е . К сожалению, 494
16. Моделирование квантовых систем графические средства MATLAB не позволяют автоматически отобразить на одном чертеже зависимость V (х) и энергетический спектр колебаний двух- атомной молекулы, поскольку при построении функций, зависящих от од- ной переменной, линиями соединяется последовательно каждая пара точек. Основная идея данного подхода основана на формировании матрицы, в одном столбце которой в определенном порядке расположены значения по- тенциала v(x) и энергетического спектра Еп, в другом - соответствующие значения переменной х и координаты точек остановки. Причем каждое зна- чение спектра в первый столбец матрицы заносится три раза подряд, при этом в соответствующие строки нулевого столбца матрицы последователь- но заносятся значения x/f/„ xright, хщ. Очевидно, что при последовательном соединении точек линия через данные точки будет проводиться дважды: от точки с координатами {xteft,E^ к точке с координатами (xngA„E„) и наоборот. Так как происходит возвращение в начальную точку, то дальнейшее по- строение графика начнется с той же самой точки и искажений не возникнет (рис. 16.7). Х rightn & п Xi&„ Sn xi+l Рис. 16.7. К объяснению метода формирования матрицы для построения на одном чертеже энергетического спектра колебаний двухатомной молекулы и зависимости V(x) Другая проблема, связанная с формированием указанной матрицы, со- стоит в необходимости упорядоченного размещения в массиве значений за- висимости v(x) и энергетического спектра £п . Для автоматизации процеду- ры упорядочивания можно использовать тот факт, что при х < xmjn функ- ция У(х) является монотонно убывающей. Следовательно, нужно создать 495
Компьютерное моделирование физических процессов в пакете МА TLAB матрицу, которая содержит в нулевом столбце значения аргумента на ин- тервале [д,хт,„], в первом - значения функции V(x). Дополнить ее коорди- натами точек остановки и значениями энергетического спектра £п в соот- ветствии с описанной выше процедурой, затем провести упорядочивание матрицы в порядке убывания значений энергии. После этого дополнить упорядоченную матрицу значениями координат х из отрезка [xm(/I,fe] и со- ответствующими значениями функции V(х), затем отобразить зависимость, сохраненную в описанной матрице на графике. (Здесь [а,Ь] - выбранный интервал для построения графика функции У(х).) Для реализации описанного алгоритма создадим m-файл Potential_and _Spectr.m, содержащий описание функции, возвращающей искомую мат- рицу. % листинг файла Potentiai_and_Spectr.m function z = Potential_and_Spectr(EL,Xleft,Xright,xl,x2) % функция, возвращающая матрицу, используемую для построения на % одном чертеже графика потенциала и значений энергетического спектра % EL - вектор, содержащий значения энергетического спектра % Xleft - вектор, содержащий координаты левых точек поворота % Xright - вектор, содержащий координаты правых точек поворота % XI - левая граница интервала построения графика % Х2 - правая граница интервала построения графика N0=100; Tmp=EL; Dx=(x2-xl)/(N0-l); i=l:N0; xO(i)=xl+Dx*(i-l); yO(i)=V(xO(i)); Ymin=min(yO); N=l; for i=l:N0 if Ymin==yO(i) N=N+i; end; end; for i=l:N X0(i)=x0(i); Y0(i)=y0(i); 496
16. Моделирование квантовых систем end; K=length(Tmp); m=l; for i=N:N+K-l XO(i+m)=Xleft(i-N+l); VO(i+m)=EL(i-N+l); m=m+l; XO(i+m)=Xright(i-N+1); YO(i+m)=EL(i-N+l); m=m+l; XO(i+m)=Xleft(i-N+l); YO(i+m)=EL(i-N+l); end; Nl=length(YO); for i=l:Nl Sy=-10A309; forj=l:Nl ifSy<Y0(j) Sy=Y0(j); N2=j; end; end; z(i,l)=X0(N2); z(i,2)=Y0(N2); Y0(N2)=-10A309; end; Xmax=max(XO); i=l; Xt=xO(N); while Xt<Xmax z(i+Nl,l)=Xt; z(i+N13)=V(Xt); i=i+l; Xt=Xt+Dx; end; function z = V(x) % функция, возвращающая значение потенциала Лейнарда-Джонсона z=4*(lJx.A12-Ux.A6); 497
Компьютерное моделирование физических процессов в пакете МАTLAB Далее необходимо выполнить следующую последовательность команд: » Xmin=2A(l/6); % координата минимума потенциала » gamma=80; % коэффициент, входящий в обезразмеренное % уравнение Шредингера (16.22) » Emin=-1; % минимальное значение энергии » Ешах=-10Л-4; % максимальное значение энергии » l — Action(Emin,Emax,Xmin,gamma); % вычисление зависимости S(E) » [Xleft,Xright,EL] = Spectr(z,Xmin) % вычисление энергетического % спектра колебаний % двухатомной молекулы % формирование матрицы, используемой для построения на одном % чертеже графика потенциала и значений энергетического спектра » Z=Potential_and_Spectr(EL,Xleft,Xright,x 1,х2) » plot(Z(:,l),Z(:,2),'k') Результат выполнения описанной последовательности команд представ- лен на рис. 16.8. 1.2 1.4 16 16 2 2.2 2.4 2.6 Рис. 16.8. Зависимость потенциала взаимодействия ядер от расстояния между ними и энергетический спектр колебаний двухатомной молекулы При построении фазовой траектории колебаний двухатомной молекулы, задаваемой (16.26), необходимо учитывать, что данная траектория является двузначной функцией, поэтому ее построение - выполнение предваритель- ных действий, которые достаточно очевидны. Для построения траектории 498
J 6. Моделирование квантовых систем движения на фазовой плоскости сначала необходимо сформировать матри- цу, в верхней половине которой находятся строки, содержащие значения переменной х е [xlejt, xri),ht ] и соответствующие им значения импульса р(х), в нижней половине матрицы содержатся значения координаты х, изменяю- щиеся от х,ight до х/е}1, и соответствующие им значения импульса -р(х), а за- тем отобразить искомую зависимость. Отметим, что поведение рассматриваемой нами модели определяется единственным параметром у, являющимся комбинацией физических пара- метров системы: характерного размера системы а, массы системы т и глу- бины потенциала Vo, величину которого мы задавали при нахождении энер- гетического спектра колебаний двухатомной молекулы. Поэтому для описа- ния особенностей движения молекулы в фазовом пространстве удобнее использовать не импульс, пропорциональный массе (значение которой мы не задавали), но безразмерный волновой вектор волны де Бройля, который с одной стороны прямо пропорционален импульсу и зависит только от у с другой. Для реализации данного алгоритма создадим m-файл РТг.т, содержа- щий описание функции, возвращающей координаты точек фазовой траекто- рии для каждого собственного значения энергии. % листинг файла РТг.т function z = PTr(EL, Xleft,Xright, gamma, Np) % функция, возвращающая координаты точек фазовой траектории % для каждого собственного значения энергии N=length(EL); k=l:Np; for i=l:N dx=(Xright(i)-Xleft(i))/(Np-l); x(k)=Xleft(i)+dx*(k-l); for j=l:Np Z(j,l)=x(j); Z(j,2)=reaI(p(x(j),EL(i),gamma)); end; for j=Np+l :2*Np Z(j,l)=x(2*Np-j+l); Z(j,2)=-Z(2*Np-j+l,2); end; Z(2*Np+l,l)=x(l); Z(2*Np+l,2)=Z(l,2); 499
Компьютерное моделирование физических процессов в пакете MATLAB if i==l z=Z; else z=cat(3,z,Z); end; end; function z=p(x,E,gamma) % функция, возвращающая значения импульса z=gamma*(E-V(x)).A0.5; function z=V(x) % функция, возвращающая значения потенциала % Лейнарда-Джонсона z=4*(l./x.A12-lJx.A6); Далее необходимо выполнить следующую последовательность команд: » Xmin=2A(l/6); % координата минимума потенциала » gamma=80; % коэффициент, входящий в обезразмеренное % уравнение Шредингера (16.22) » Emin=-1; % минимальное значение энергии » Етах=-10А-4; % максимальное значение энергии » z = Action(Emin,Emax,Xmin,gamma); % вычисление зависимости 5(Я) » [XIeft,Xright,EL] = Spectr(z,Xmin) % вычисление энергетического % спектра колебаний % двухатомной молекулы » Np=2000; % число точек одной фазовой траектории » Ph=PTr(EL,Xleft,Xright,gamma,Np); % вычисление координат точек % фазовых траекторий для каждого % значения энергетического спектра % визуализация фазовых траекторий » plot(Ph(:,l,l),Ph(:,2,l),'k') » hold on » for k=2:length(EL) plot(Ph(:,l,k),Ph(:,2,k),'k'); end; » hold off Результат выполнения описанной последовательности команд представ- лен на рис. 16.9. 500
16. Моделирование квантовых систем Рис. 16.9. Фазовые траектории колебаний двухатомной молекулы, соответствующие первым шестнадцати уровням энергетического спектра Другой метод построения фазовой траектории основан на использовании зависимостей г - r(t), р = p{t), которые являются решением системы уравнений Гамильтона: (16.31) т Р дг Продифференцировав по времени первое уравнение и подставив в него второе уравнение, для переменой г получаем уравнение второго порядка = (16.32) т д г Для выбора начальных условий уравнения (16.32) будем считать, что в момент времени /=0 частица находится в одной из точек остановки, для оп- ределенности - в левой, т. е. r(0) = xleft, г'(0) = 0 . Для проведения числен- ного решения уравнения (16.32) целесообразно предварительно записать r t Е систему в безразмерных переменных X = - ,t = — , где а - параметр а Т Vo потенциала, характеризующий его ширину (см. (16.24)), Т - характерное время движения. 501
Компьютерное моделирование физических процессов в пакете МА TLAB Потенциал Лейнарда-Джонсона и уравнение движения в выбранных без- размерных переменных имеют следующий вид: Г(х) = 4[\±_2.), (16.33а) .2ЫпТ2( 2 _ та2 It13 T7J Для выбора переменной Т найдем разложение потенциала в ряд Тэйлора вблизи минимума потенциала (rmin=21/6a) 2 V( Дг)» -Vo + -- У0Дг2 . (16.34) а Сравнив (16.34) с выражением для потенциальной энергии линейного гармонического осциллятора (16.35) приходим к выводу о том, что вблизи минимума потенциал Ленарда- Джонсона ведет себя подобно потенциалу гармонического осциллятора, у 2 2-18-23 которого / =-----j— ч) • Следовательно, в качестве характерного времени а Т можно выбрать период колебаний гармонического осциллятора, в данном случае равный (16.36) (16.37) [m 23 та2 Т = 2л\ — =2д---J-----. Vz 6 v0 Подставляя (16.36) в (16.336), окончательно получаем 7 . 23-гр 1 > 3 L13 X7)' Для нахождения численных решений (16.37) необходимо создать rn- файл Асс2.т, содержащий описание функции, возвращающей значения первых производных. % листинг файла Асс2.т function z = Acc2(t,x); % функция, возвращающая значения первых производных ОДУ (16.37) z=zeros(2,l); 502
16. Моделирование квантовых систем z(l)=x(2); z(2)=2A(7/3)*piA2/3*(2./x(l).A13-l./x(l).A7); Далее необходимо выполнить следующую последовательность команд: » Xmin=2A(l/6); % координата минимума потенциала » gamma=80; % коэффициент, входящий в обезразмеренное % уравнение Шредингера (16.22) » Emin=-1; % минимальное значение энергии » Етах=-10Л-4; % максимальное значение энергии » z = Action(Emin,Emax,Xmin,gamma); % вычисление зависимости S(E) » [Xleft,Xright,EL] = Spectr(z,Xmin) % вычисление энергетического % спектра колебаний % двухатомной молекулы » R0=[Xleft(5) 0]; % вектор начальных условий » Np=5000; % число узлов временной сетки » Tfin=1.8; % правая граница временного интервала »[T,M]=ode45('Acc2',[0:Tfin/Np:Tfin],R0); % нахождение численного % решения ОДУ (16.37) % визуализация зависимостей х = x(t), v = v(t) и % фазовой траектории » figure(l); plot(T,M(:,l), 'k') » figure(2); plot(T,M(:,2), 'k') » figure(3); plot(M(:,l),M(:,2), 'k') Результаты выполнения описанной последовательности команд пред- ставлены на рис. 16.10-16.12. Задача 16.9. Вычислите энергетический спектр колебаний двухатомной молекулы, используя метод, описанный в разделе 16.2. Сравните результаты, по- лученные в квазиклассическом приближении, с результатами, получен- ными численным интегрированием уравнения Шредингера. Постройте зависимость расстояния между значениями энергетического спектра от номера квантового числа. Задача 16.10 Используя квазиклассическое приближение, определите собственные значения энергии частицы, находящейся в прямоугольной яме с беско- нечно высокими прямоугольными стенками. Сравните полученные зна- чения энергии с соответствующими значениями, найденными аналити- ческими методами. Зависит ли точность квазиклассического прибли- жения для рассматриваемого потенциала от номера квантового числа? 503
Компьютерное моделирование физических процессов в пакете MATLAB 1 35 - / 13’“ / 1 25 - ,2~ / 1151 / Рис. 16.10. Зависимость расстояния между ядрами двухатомной молекулы, находящейся на пятом энергетическом уровне, от времени Рис. 16.11. Зависимость скорости движения ядер двухатомной молекулы, находящейся на пятом энергетическом уровне, от времени Рис. 16.12. Фазовая траектория колебаний двухатомной молеклы, находящейся на пятом энергетическом уровне 504
16. Моделирование квантовых систем Задача 16.11 Используя квазиклассическое приближение, найдите собственные зна- чения энергии для потенциалов, рассмотренных в задачах 16.5—16.7. Сравните соответствующие значения энергий, полученные прямым чис- ленным интегрированием стационарного уравнения Шредингера, с результатами, полученными в квазиклассическом приближении. Зависит ли разность между значениями энергии, полученными численным интегрированием (16.4), и соответствующими значениями энергии, полученными в квазиклассическом приближении от номера квантового числа? Объясните полученный результат. Задача 16.12 Поле U(x) представляет собой две одинаковые потенциальные ямы, разделенные барьером (рис. 16.13). При непроницаемом барьере существуют уровни энергии, отвечающие движению частицы только в одной из ям. В данном случае вследствие симметрии ям будут существовать одинаковые значения энергии, соответствующие двум различным состояниям (когда частица находится в правой или левой ямах), которые называются вырожденными. Возможность прохож- дения частицы через потенциальный барьер приводит к снятию вырождения и расщеплению каждого из уровня на два близких уровня, соответствующих состоянию, когда частица может одновременно находиться в обеих ямах. Выберите для описания потенциала подходящую функцию и определите величину расщепления уровней, используя квазиклассическое приближение и метод численного интегрирования уравнения Шредингера, описанный в разделе 16.2. 505
Компьютерное моделирование физических процессов в пакете MATLAB 16.4. Нестационарное уравнение Шредингера В общем случае для описания эволюции квантовой системы во времени требуется найти решение нестационарного уравнения Шредингера (16.3). С математической точки зрения данная задача относится к краевым задачам дифференциальных уравнений в частных производных, в которых требуется найти решение уравнения если известны значения данной функции в момент времени t = 0 у/-(й,О). Рассмотрим численные методы решения нестационарного уравнения Шредингера на примере одномерного уравнения (16.5). Введем в рассмотрение пространственную сетку с числом узлов N и ша- , 1 „ гом по пространству h - ~ , на которой вместо непрерывной производной используем ее конечно-разностную аппроксимацию 5 Л./ " h2 ^ ~ (16.38) Производную по времени аппроксимируем простейшей разностной формулой первого порядка точности, считая дискретный шаг изменения времени равным Аг: = di+1 -v" dt х=хп Л* Подставляя (16.38), (16.39) в (16.5), получаем Аг 2т 1г2 7 ’ (16.39) (16.40) здесь I — комплексная единица. При i = l и i = N в уравнении (16.40) используют значения функции на границе области, в которой ищется решение уравнения, у/0 и \yN. Из (16.40) можно выразить + | : ^"+1 =(/" +/- + и , (16 41) I 2/j 7J здесь и далее в данном разделе мы полагаем Й = 1 , т = 1 . Для более компактной записи (16.41) введем следующие обозначения 506
16. Моделирование квантовых систем +и (р ну (]642) 2h2 1 v 77 Используя (16.42), запишем (16.41) в виде y/'H1 =(l-/Az£>V''. (16.43) Разностная схема (16.43) называется явной, так как она позволяет по из- вестным значениям функции y/(t) в момент времени tn вычислить значе- ния y/(z) в момент времени Z,H1. Однако данная схема, в которой эволюция решения во времени определяется оператором (1 — t'AzZ)), оказывается неус- тойчивой при любом шаге Az, так все собственные значения данного опе- ратора 1 -iEj&t, равные по абсолютной величине j [1 + (^Az)2]2 оказываются больше единицы. Один из способов, позволяющий сделать схему устойчивой, состоит в использовании пространственной производной в момент времени Z,H1: i П----L.L = . (16.44) Az h2 В выбранных обозначениях данная схема имеет следующий вид: = -if) y/pi. (16.45) AZ 7 Так как неизвестные значения у/j входят в обе части уравнения, дан- ная вычислительная схема называется неявной. Уравнение (16.45) можно разрешить относительно у/н1 = ' (16.46) ^7 l + ZAz£> 7 Так как абсолютная величина собственных значений оператора перехо- да, стоящего в правой части (16.46) (1 + ф/2)"?, 507
Компьютерное моделирование физических процессов в пакете MATLAB всегда меньше единицы, вычислительная схема оказывается устойчивой при любых значениях А/. Однако данная схема, так же, как и явная, не может быть использована для решения уравнения Шредингера (16.4), так как получаемое численное решение не является унитарным — модуль волновой функции оказывается монотонно убывающим во времени. Свободной от указанных недостатков оказывается следующая модификация неявной разностной схемы: 1-i-Mt) 2 l+i- Mt) 1 (16.47) Оператор, стоящий в правой части (16.47), оказывается эрмитовым уни- тарным оператором, собственные значения которого равны единице, поэто- му модуль волновой функции остается постоянным при переходе от одного момента времени к следующему. Кроме того, можно показать, что соотно- шение (16.47) аппроксимирует точный оператор перехода с точно- стью до членов O\h1 2). Для проведения практических расчетов оказывается более удобным пе- реписать (16.47) в следующем эквивалентном виде (16.48) который устраняет один проход по узлам сетки, необходимый для вычисле- ния числителя. Для нахождения на каждом шаге по времени значений промежуточной функции х, определяемой уравнением 1 + (- Mt)]%" = 2у/'-, (16.49) 2 ) перепишем данное уравнение в явном виде iM 2/Г 1 п Г iAt 2^1+ Ь / 2 L п iM ,, 1 ,, iM ,, „ „ + 2 £ J 2.П iM 2h (.16.50) и, разделив обе части (16.70) на -iM 2h2 окончательно получим 508
16. Моделирование квантовых систем 2 -2+2^ -й2^- Z"+Z 1 At j 1 . Д-ih2 у". (16.51) At Таким образом, на каждом шаге по времени для нахождения значений приходится решать систему линейных уравнений /V-го порядка, кото- рая оказывается зрехдиагональной (в каждое уравнение системы входят только три рядом расположенных неизвестных: переменная, соответствую- щая диагональному коэффициенту, и переменные, стоящие слева и справа от диагонального элемента). Для систем линейных уравнений с трехдиаго- нальной матрицей известен эффективный вычислительный алгоритм, назы- ваемый методом прогонки. Проведем обсуждение данного алгоритма на самом общем случае систе- мы линейных уравнений Ax = h, (16.52) где А - трехдиагональная матрица, X - вектор-столбец неизвестных, b - век- тор-столбец свободных членов. Запишем данную систему в виде, аналогич- ном (16.51): А~хн +A°jXj + AjXjU = hj, (16.53) здесь Aj, ApAj обозначены отличные от нуля элементы матрицы А. В частности, для системы линейных уравнений (16.51) AJ=Aj =1, А°=-2 + — -h2U:. 1 At 1 Для решения системы уравнений (16.53) предположим, что искомое ре- шение удовлетворяет рекуррентному соотношению, связывающему значе- ния Xj в соседних узлах j иу+1: х;41 -ajXj+Pj. (16.54) где aj,Pj — неизвестные коэффициенты, которые необходимо определить. Подставляя (16.54) в (16.53) получаем AJXjA + A°jXj + Ay (ptjXj + (16.55) Разрешив (16.55) относительно Xj, получаем x.i = A1 xi-\ + (A; Pt ~ bj)’ (16-56) 509
Компьютерное моделирование физических процессов в пакете MATLAB где Сравнивая (16.54) и (16.56), видим, что они тождественны, если коэффи- циенты (Xj.Pj удовлетворяют следующим рекуррентным соотношениям: (16.58) (16.59) Таким образом, решение трехдиагональной системы уравнений осуществляется следующей последовательностью действий: 1. Вычисление коэффициентов , а}по формулам (16.57) - (16.59), в которых j = N-2, N-3,..., О,, aN_} = 0, = xN (обратный ход). 2. Вычисление Xj по формуле (16.54), в которой j = 0,1, ..., А- 1, где х0 известно из начальных условий (прямой ход). Описанный алгоритм решения системы линейных уравнений, состоящий из обратного и прямого ходов, требует 2А арифметических операций, в от- личие от прямых методов (например, умножение на обратную матрицу), требующих порядка № операций. Для реализации описанного алгоритма в пакете MATLAB создадим че- тыре m-файла: 1) файл Barrier.m, содержащий описание функции, возвра- щающей значения потенциального барьера в узлах пространственной сетки; 2) файл Package.™, содержащий описание функции, возвращающей значе- ния действительной и мнимой частей волнового пакета; 3) файл Coeff.m, содержащий описание функции, возвращающей значения коэффициентов, используемых в методе прогонки; 4) файл Psi.m, содержащий описание функции, возвращающей значения волновой функции в момент времени t + Аг. % листинг файла Barrier.m function z = Barrier(x,vO,xO,A,Mode); % функция, возвращающая значения потенциального барьера % в заданном узле координатной сетки % х - координата узла % vO - высота барьера % хО - координата, определяющая положение максимума огибающей пакета % А - ширина барьера 510
16. Моделирование квантовых систем % Mode - переменная, определяющая тип барьера if Mode==l z=Rect(x,vO,xO,A); % прямоугольный барьер end; if Mode==2 z=Gauss(x,vO,xO,A); % барьер, описываемый кривой Гаусса end; if Mode==3 z=StepB(x,vO,xO,A); % ступенчатый барьер end; if Mode==4 z=Parabolic(x,vO,xO,A); % параболический барьер end; function z = Rect(x,vO,xO,A) % функция, возвращающая значения прямоугольного барьера if and(xO-A/2<=x,x<=xO+A/2) z=vO; else z=0; end; function z = Gauss(x,vO,xO,A) % функция, возвращающая значения потенциального барьера, % описываемого Гауссовой кривой z=v0*exp(-(x-x0).A2*Iogl0(20)/A.A2); function z = StepB(x,vO,xO,A) % функция, описывающая ступенчатый барьер z=(v0*atan((x-x0)*2*6.313/A*2/pi)+l)/2; function z = Parabolic(x,vO,xO,A) % функция, описывающая параболический барьер if and(xO-A/2<=x,x<=xO+A/2) z=-vO*(2/A).A2*(x-xO).A2+vO; else z=0; end; % листинг файла Package.m function z = Package(x,kO,xO,sigma,Mode) % функция, возвращающая значения действительной и мнимой 511
Компьютерное моделирование физических процессов в пакете МА TLAB % частей волнового пакета Xmin=min(x); Xmax=max(x); if Mode==l z=exp(j*k0*x)*0.9.*exp(-(x-x0).A2*logl0(2)/sigma.A2); end; if Mode==2 z=exp(j*kO*x)*sigma.A2J(sigma.A2+(x-xO).A2); end; A=Norm(x,z); z=z/A.A0.5; function z = Norm(x,Z) % функция, возвращающая значение нормировочного множителя zl=abs(Z); zl=zl.A2; z=trapz(x,zl); % листинг функции Coeff.m function z=Coeff(dt,dx,V) % функция, возвращающая значения коэффициентов в методе прогонки % dt - шаг по времени % dx - шаг пространственной сетки % V - вектор, содержащий значения барьера Npoints=length(V); for k=l:Npoints Az(k)=-2+2*j*dxA2/dt-dxA2*V(k); end; a!pha(N points-1 )=0; gamma(Npoints)=-l/Az(Npoints); Ap=l; k=Npoints; while k>=2 alpha(k-l)=gamma(k)*Ap; gamma(k-l )=-1 /(Az(k-1) +Ap*alpha(k-1)); k=k-l; end; z=ganuna; % листинг функции Psi.m function z=Psi(Coeff,psi,dx,dt,x) 512
16. Моделирование квантовых систем % функция, возвращающая значения волновой функции в момент % времени t + Л/ % Coeff - вектор, возвращенный функцией Coeff % psi - вектор, содержащий значения волновой функции в момент % времени I = 0; % dx - шаг пространственной сетки % dt - шаг по времени %х- вектор, содержащий координаты узлов пространственной сетки Npoints=length(psi); % обратный ход Ар=1; beta(Npoints)=0+0*j; k=Npoints-l; while k>=2 beta(k-l)=Coeff(k)*(Ap*beta(k)-4*j*dxA2/dt*psi(k)); k=k-l; end; % прямой ход xi(l)=O+O*j; for k=l:Npoints-l xi(k+l)=Coeff(k)*xi(k)+beta(k); psi(k+l)=xi(k+l)-psi(k+l); end; fi=abs(psi).A2; B=trapz(x,fi); z=psi/BA0.5; Далее необходимо выполнить следующую последовательность команд: » Xmin=-200; % левая граница пространственной сетки » Хтах=200; % правая граница пространственной сетки » Npoints=500; % число узлов пространственной сетки » dt=0.5; % шаг по времени % вычисление координат узлов пространственной координатной сетки »i=l:Npoints+l; » dx=(Xmax-Xmin)/Npoints; » x(i)=Xmin+dx*(i-l); % вычисление значений волновой функции в момент времени t = 0 » k0=0.5; » х0=-100; 17—1576 513
Компьютерное моделирование физических процессов в пакете МА TLAB » sigma=2; » z = Package(x,k0,x0,sigma,2); % вычисление значений потенциального барьера % в узлах координатной сетки » v0=1.5; » х0=0; » А=60; » Mode=4; » for i=l:Npoints+l V(i)=Barrier(x(i),vO,xO,A,Mode); end; °lo вычисление значений волновой функции в последовательные % моменты времени » C=Coeff(dt,dx,V); » for i=l:300 if i==l Z=Psi(C,z,dx,dt,x); zl=Z; else Z=Psi(C,Z,dx,dt,x); zl=cat(3,zl,Z); end; end; » figure(l);plot(x,V,'k',x,abs(zl(l,:,l)),'k'); » figure(2);plot(x,V,'k',x,abs(zl(l,:,10)),'k'); » figure(3);pIot(x,V,'k',x,abs(zl(l,:,20)),'k'); » figure(4);plot(x,V,'k',x,abs(zl(l,:,50)),'k'); » figure(5);plot(x,V,'k',x,abs(zl(l,:,75)),'k'); » figure(6);plot(x,V,'k',x,abs(zl(l,:,100)),'k'); » figure(7);pIot(x,V,'k',x,abs(zl(l,:,125)),'k'); » figure(8);plot(x,V,'k',x,abs(zl(l,:,150)),'k'); » figure(9);plot(x,V,'k',x,abs(zl(l,:,175)),'k'); » figure(10);plot(x,V,'k',x,abs(zl(l,:,200)),'k'); » figure(ll);plot(x,V,'k',x,abs(zl(l,:,225)),'k'); » figure(12);plot(x,V,'k',x,abs(zl(l,:,250)),'k'); » figure(13);plot(x,V,'k',x,abs(zl(l,:,275)),'k'); » figure(14);plot(x,V,'k',x,abs(zl(l,:,300)),'k'); Результат выполнения описанной последовательности команд представ- лен на рис. 16.14—16.27. 514
16. Моделирование квантовых систем Рис. 16.14. Огибающая волнового пакета в момент времени 1=0 Рис. 16.15. Огибающая волнового пакета в момент времени t=10 Рис. 16.16. Огибающая волнового пакета в момент времени 1—20 515
Компьютерное моделирование физических процессов в пакете MATLAB Рис. 16.18. Огибающая волнового пакета в момент времени t=75 100 150 200 Рис. 16.17. Огибающая волнового пакета в момент времени t=50 Рис. 16.19. Огибающая волнового пакета в момент времени t=100 516
1 б. Моделирование квантовых систем Рис. 16.20. Огибающая волнового пакета в момент времени t=125 Рис. 16.21. Огибающая волнового пакета в момент времени t=150 Рис. 16.22. Огибающая волнового пакета в момент времени t=175 517
Компьютерное моделирование физических процессов в пакете МА TLAB 100 1S0 200 Рис. 16.23. Огибающая волнового пакета в момент времени t-200 Рис. 16.24. Огибающая волнового пакета в момент времени t=225 Рис. 16.25. Огибающая волнового пакета в момент времени 1'250 518
16. Моделирование квантовых систем Рис. 16.26. Огибающая волнового пакета в момент времени t=275 i Рис. 16.27. Огибающая волнового пакета в момент времени 1=300 .................... -200 -150 -100 -50 0 50 100 150 200 Для рассмотрения эволюции волнового пакета в динамике необходимо создать анимационный клип, выполнив следующую последовательность команд: » mov=avifile('example.avi'); % открытие avi-файла » for k=l:300 % запись в avi-файл 300 последовательных изображений h=plot(x,V,'k',x,abs(zl(l,:,k)),'k'); set(h,'EraseMode','xor'); F=getframe; mov=addframe(mov,F); end; » mov=close(mov); % закрытие avi-файла » movie(mov); % воспроизведение анимационного клипа 519
Компьютерное моделирование физических процессов в пакете МА TLAB Для чтения ранее созданного анимационного клипа используется команда: »mov=aviread('Example.avi');___________________ ___ Задача 16.13 Проверьте точность интегрирования нестационарного уравнения Шредингера, используя следующий прием. Проинтегрируйте уравнение на некотором временном интервале, затем измените знак шага по вре- мени и проинтегрируйте уравнение Шредингера в обратном направле- нии на временном интервале аналогичной длины. Сравните начальную форму волнового пакета и волнового пакета, полученного интегрирова- нием уравнения Шредингера описанным выше способом. Дополните опи- санный выше документ функцией, возвращающей мгновенные значения энергии пакета. Проверьте, что точность сохранения энергии не зави- __сит от шага интегрирования. ______________ ______ Задача 16.14 Исследуйте движение квантового волнового пакета в отсутствие потен- циала. Сравните полученные результаты с результатами, полученными при описании движения волнового пакета в среде с дисперсией в гл. 9. Задача 16.15 Исследуйте рассеивание волновых пакетов с различной формой, шири- ной и энергией на потенциальных ямах и барьерах различной формы и размера. Объясните особенности наблюдаемой эволюции пакетов во времени. Для прямоугольной ямы и ступенчатого потенциала сравните относительные вероятности прохождения и отражения волнового па- кета с соответствующими аналитическими выражениями, приведен- ными в [1, задача 23—25]. Рассмотрите резонансный случай при рассеи- вании пакета на потенциальной яме. Пронаблюдайте распад волнового пакета на быструю и затухающую компоненты. Задача 16.16 Опишите эволюцию волнового пакета в двойной яме, представленной на рис. 16.13. Задача 16.17 Замените вычислительную формулу (16.47) на неустойчивый явный ме- тод или на неунитарный неявный метод и исследуйте получаемые ре- шения нестационарного уравнения Шредингера. Задача 16.18 Замените граничное условие Дирихле у = дна одной из границ сетки на условие Неймана с нулевой производной на этой же границе. Опишите эволюцию волнового пакета при его приближении к данной границе. 520
16. Моделирование квантовых систем 16,5» Оценка энергии основного состояния квантовой системы методом Монте-Карло В основу метода нахождения энергии и волновой функции основного состояния положена связь уравнения Шредингера с процессом диффузии в мнимом времени [2—4]. Продемонстрируем основные идеи данного метода на примере движения частицы в одномерном потенциале, описываемом од- номерным уравнением Шредингера (16.5), которое для свободной частицы имеет вид =--------(16.60) д I 2т д х Выполнив в (16.60) замену переменной t -» -z • г Й , получим dy/(.X,t) Й2 Э2 / х = ----- (16.61) dt 2т дх2 Уравнение (16.61) по свой форме совпадает с уравнением диффузии - = D , (16.62) dt дх2 где Р(х,1) — плотность вероятности обнаружить частицу в момент времени t в точке с координатой х. Следовательно, можно интерпретировать волновую функцию у/(х, г) как плотность вероятности диффузионного процесса с коэффициентом диффу- ^2 зии D = — . Вспомним, что ранее в гл. 12 мы продемонстрировали возмож- 2т ность использования метода случайных блужданий для моделирования реше- ний уравнения диффузии. Таким образом, обнаруженная аналогия между урав- нениями (16.61), (16.62), позволяет вместо непосредственного решения уравнения Шредингера искать решение задачи о случайных блужданиях. Уравнение Шредингера (16.5) относится к классу линейных дифферен- циальных уравнений в частных производных, поэтому при решении задачи можно рассмотреть движение не одного, но большого количества пешехо- дов, движущихся независимо друг от друга. Для понимания роли потенци- альной энергии, перепишем одномерное уравнение Шредингера (16.5) в следующем виде: а^(л,г)= й2 гУ(х.г)_[7(л>(лг) (1663 дт 2т дх2 521
Компьютерное моделирование физических процессов в пакете МА TLAB При отсутствии члена в правой части уравнения (16.63), уравнение превращается в обыкновенное уравнение диффузии. С другой Л2 г) стороны, при отсутствии в правой части члена -------~—- уравнение 2m дх (16.63) можно трактовать как кинетическое уравнение, описывающее вет- вящиеся процессы, такие как, например, радиоактивный распад или дина- мику численности биологической популяции. Следовательно, уравнение (16.63) можно трактовать как комбинацию диффузионного и ветвящегося процессов, в которых число пешеходов увеличивается или уменьшается в зависимости от знака функции ?/(х). Отметим, что диффузионной интер- претации требуется, чтобы амплитуда вероятностей была неотрицательной функцией. Общее решение уравнения (16.5) находится в соответствии с формулой (16.11). Выполнив в (16.11) замену переменной t —> -i • rti, получим общее решение уравнения (16.63) в виде ^Ur) = Xc'^oWe~£''r • (16.64) п Из (16.64) видно, что для достаточно больших г основной вклад в сумму дает член, соответствующий состоянию с минимальной энергией Ео (основному состоянию): софо(х)е~Е’,Т, (16.65) а пространственная зависимость плотности распределения вероятности про- порциональна собственной функции основного состояния ф$(х) В то же время решение в виде (16.65) имеет существенный недостаток, заключающийся в том, что Нт у/(х,т) = О для всех х. Для устранения отмеченного недостатка можно отсчитывать Ео от произвольного значения начальной энергии Uref, которая выбирается из условия достижения стационарного распределения. Для нахождения формулы при оценке Ео перепишем (16.63) и (16.65) в явном виде, введя начало отсчета энергии в точке Urej : ..Хм. <16.66, от 2т ох 522
16. Моделирование квантовых систем -{En U Jr щ(х,т) * софо(х)е ref . (16.67) Проинтегрировав (16.66) по х и учтя, что lim*=0, s X получаем J дщ^Х.т) Дх _ _J (Л> ^Дх + уJ Т} (16.68) Продифференцировав (16.67) по т, найдем Э^г) = (17ге/-Е0У(х,г). (16.69) от Подставив (16.69) в (16.68), получаем |(l/re/-E0 }^(х,г)Лг = U(x)ys(x,T)dx +Uref $ i//-(x,T)dx. (16.70) Сократив в (16.70) члены, пропорциональные t/rej, получаем E0J y/(x,r)dx = JU(x)y/(x,т)dx, (16.71) откуда и(х)ц/(х, т) dx £о=2--г-----------• (16-72) I цЛх, г) dx Так как (/(х, г) равно плотности пешеходов н(х,т) в точке х в момент времени т, для случая случайных блужданий уравнение (16.72) можно окончательно записать в виде N ]Ги(х,,гМх,) Ео=([7) = -^-----------, (16.73) 1=1 где N — число пешеходов. Оценка Ео получается, как среднее по нескольким значениям г, отве- чающим стационарному распределению. Волновая функция основного состояния ф0(х) есть функция распреде- ления плотности вероятности пешеходов по узлам сетки и(л-,), вычисляе- 523
Компьютерное моделирование физических процессов в пакете МА TLAB мая как среднее по нескольким значениям т, отвечающим стационарному распределению. Метод случайных блужданий для нахождения энергии основного со- стояния квантовой частицы и соответствующей волновой функции реализу- ется следующей последовательностью действий. 1. Размещение No пешеходов случайным образом в начальные точки х(-. 1 N 2. Вычисление опорного потенциала U = —^//(х,). N0 j 3. Перемещение случайным образом пешехода вправо или влево на за- данный шаг As . (Длина шага As связана с шагом по времени соотношени- ем (As)2 =Dr, D — коэффициент диффузии. В системе единиц Й = /н = 1, 4. Вычисление АС/ = [с/(х)-С/(.^]Аг и случайного числа г, равномерно распределенного на отрезке [0,1]. 5. Если АС/ > 0 и г < АС/ , удалить пешехода. 6. Если АС/ < 0 и г < -АС/ , добавить пешехода в точку х. 7. Повторить пп. 3—6 для каждого из No пешеходов. 8. Заменить опорный потенциал на Uref=(U)-± (N-N0)At, где N - новое число пешеходов, (U) — средняя потенциальная энергия N пе- шеходов, представляющая собой оценку энергии основного состояния. 9. Повторение пп. 3—8 до достижения энергией стационарного значения. 10. Повторение пп. 3—9 для получения нескольких стационарных значе- ний энергии. 11. Получение усредненного значения энергии по нескольким стацио- нарным значениям. 12. Получение усредненной функции распределения плотности вероят- ности по нескольким стационарным значениям. Для реализации описанного алгоритма создадим файл WalkSh.m, со- держащий описание функции, возвращающей среднее значение энергии ос- новного состояния и мгновенные (на каждом шаге Монте-Карло) значения числа пешеходов в заданных интервалах. 524
16. Моделирование квантовых систем % листинг функции WalkSh.m function [Em,h]=WalkSh(N,Srange,К,ds,NTrial,Interval) % функция, возвращающая среднее значение энергии основного % состояния и мгновенные (на каждом шаге Монте-Карло) значения % числа пешеходов в заданных интервалах % N - число пешеходов % Srange - размер начальной области размещения пешеходов % К - доля неиспользуемых нестационарных состояний % ds - размер шага пешехода % NTrial - число испытаний % Interval - вектор, содержащий координаты концов отрезка, используемых % для вычисления плотности распределения пешеходов Vref=0; % инициализация начальной конфигурации пешеходов for i=l:N Xsite(i)=Srange*(0.5-rand(l)); Vref=Vref+V(Xsite(i)); end; Vref=Vref/N; Ninitial=N; % число пешеходов в начале испытания Nwalker=N; % число пешеходов в ходе испытания dt=ds.A2; % шаг по времени Nequial=K*NTrial; % номер первого стационарного состояния т=1; for i=l:NTrial Vsum=0; % полная потенциальная энергия for j=Ninitial:-l:l if rand(l)<0.5 Xsite(j)=Xsite(j)+ds; else Xsite(j)=Xsite(j)-ds; end; Potential=V(Xsite(j)); dv=Potential-Vref; if dv<0 % проверка на добавление пешехода if rand(l*)<-dv*dt Nwalker=Nwalker+l; Xsite(Nwalker)=Xsite(j); % новый пешеход Vsum=Vsum+2*Potential; 525
Компьютерное моделирование физических процессов в пакете MATLAB else Vsum=Vsum+Potential; % добавляем только энергию старого пешехода end; else if rand(l)<dv*dt % проверка на удаление пешехода Xsite(j)=Xsite(Nwalker); Nwalker=Nwalker-l; else Vsum=Vsum+Potential; end; end; end; Vave=Vsum/Nwalker; % средний потенциал if i>Nequial E(m)=Vave; for n=l:Nwalker X(n)=Xsite(n); end; h l=hist(X,Inter val); if m==l h=hl'; else h=cat(2,h,hl'); end; m=m+l; end; Vref=Vave-(Nwalker-N)/(N*dt); % новый опорный потенциал end; Em=mean(E); function z=V(x); % функция, описывающая потенциал z=0.5*x.A2; » N=1000; % начальное число пешеходов » ds=0.1; % длина шага пешехода » NTrial=1000; % число испытаний » Srange=2; % размер начальной области размещения пешеходов >> К=0.2; %- доля неиспользуемых нестационарных состояний » Ni=40; % число интервалов, используемых для вычисления % плотности распределения пешеходов 526
16. Моделирование квантовых систем % вычисление границ интервалов »i=l:Ni+l; »Interval(i)=-2*Srange+(4*Srange/Ni*(i-l)); % вычисление усредненной энергии основного состояния % и вычисление мгновенных (на каждом шаге Монте-Карло) % волновых функций » [A h]=WalkSh(N,Srange,К,ds,NTrial,Interval); » А % энергия основного состояния ans = 0.4978 % вычисление значений усредненной волновой функции » Nx=size(h,l) » Ny=size(h,2) » for i=l:Nx for j=l:Ny A(j)=h(ij); end; Al(i)=sum(A); end; % визуализация потенциала и усредненной волновой функции » Ni=500; » dx=(max(Interval)-min(Interval))/(Ni-l); »i=l:Ni; » x(i)=min(Interval)+dx*(i-l); » plot(x,0.5*x.A2,'k', Interval, Al/max(Al),'k') Результаты выполнения описанной последовательности команд пред- ставлены на рис. 16.28. Задача 16.19 Сравните найденное значение энергии основного состояния с его точ- ным значением [1, задача 30]. Исследуйте зависимость точности чис- ленного значения энергии основного состояния, найденного методом Монте-Карло, от числа пешеходов и числа шагов Монте-Карло. Задача 16.20 Дополните описанный выше документ блоком, позволяющим нормиро- вать волновую функцию так, чтобы она удовлетворяла условию (16.2). Сравните численное значение нормированной волновой функции с соот- ветствующими значениями известной аналитической функции [1, зада- ча 30]. (Указание. Для вычисления интеграла (16.2) проведите, интерполяцию усредненной зависимости n(xt)). 527
Компьютерное моделирование физических процессов в пакете МА TLAB 0----1—-т—Г----1 I—- 1 ----------------- .« з -г -1 о 1 г з < Рис. 16.28. Волновая функция основного состояния, нормированная на ее максимальное значение, и график зависимости потенциальной энергии от координаты Задача 16.21 Получите численное решение для ангармонического осциллятора с по- тенциалом 1 7 и(х) = ~~х +Ьх . ’ 2 Рассмотрите следующие значения параметра: Ь = О. 1,0.2,0,5. В чем проявляется увеличение нелинейности потенциала? Задача 16.22 Внесите необходимые изменения в описанный выше документ и вычис- лите энергию и волновую функцию основного состояния прямоугольной потенциальной ямы. Найдите зависимость энергии основного состоя- ния от Uo. Сравните полученные результаты с аналогичными резуль- татами, полученными методами, описанными в разделах 16.2, 16.4. Задача 16.23 Вычислите изменения значений энергии и волновых функций волнового состояния, частицы, находящейся в прямоугольной потенциальной яме, обусловленные малым возмущением: Uh при jx- <0.2 U(х) = 0 при 0.2 < х| < 1. (70 П > 1 528
it). Моделирование квантовых систем 16.6. Оценка энергии основного состояния квантовой системы вариационными методами Монте-Карло Альтернативный подход к оценке энергии основного состояния кванто- вых систем состоит в использовании вариационного метода, позволяющего получить оценки верхних границ значений энергии основного состояния. Данный вариационный метод находит многочисленные приложения в атом- ной физике, молекулярной физике, ядерной физике и физике конденсиро- ванных сред. Подробное рассмотрение многочисленных примеров, относя- щихся к перечисленным выше разделам физики, выходит за рамки нашей книги, поэтому далее мы ограничиваемся обсуждением основных идей ва- риационного метода Монте-Карло. Рассмотрим квантовую систему, описываемую оператором Гамильтона Й вида (16.9). Вариационный принцип утверждает, что для произвольной функции <р(х) выполняется неравенство Г <р* (х)Й<р(х)с!х -------- (16-74) <р* (x)<p(x)dx где Ео — энергия основного состояния системы. Неравенство (16.74) превращается в точное равенство только в том слу- чае, когда функция <р(х) является собственной функцией оператора Й , со- ответствующей собственному значению Ео. Величину (Н) можно тракто- вать как математическое ожидание полной энергии для приближенной вол- новой функции <р(х). Неравенство (16.74) является основой вариационного метода. Механизм реализации данного метода состоит в физически обоснованном выборе пробной функции, зависящей от нескольких параметров, вычислении (Н) в соответствии с (16.74), варьировании одного или более параметров до тех пока не будет достигнуто минимальное значение (И}. Данное значения яв- ляется верхней 1раницей истинного значения энергии основного состояния. Рассмотрим реализацию вариационного метода Монте-Карло на примере одномерной системы. Введем пространственную временную сетку x,=iAx, где Ах - шаг сетки, в узлах которой будем вычислять значения функции. 18—1576 529
Компьютерное моделирование физических процессов в пакете МА TLAB Алгоритм вариационного метода Мотне-Карло реализуется следующей по- следовательностью действий: 1. Выбрать физически обоснованных значений пробной функции <р(х} в точках х,. 2. Выбрать случайную точку х;- и изменить значение <р- = ^(х,) на слу- чайную величину Л<д е [-£;£] - 3. Вычислить изменение энергии ДЕ для (Я). 4. Если ДЕ < 0, принять выполненное изменения <д,. 5. Если ЛЕ > 0, отклонить выполненное изменение . 6. Повторять пп. 2—5 до достижения постоянного (с заданной точностью) значения (Я). Рассмотрим реализацию описанного алгоритма в пакете MATLAB для случая, когда волновая функция является симметричной. Далее приводится листинг m-файла Variation.m, содержащего описание функции, возвра- щающей верхнюю границу значения энергии основного состояния, соответ- ствующую волновую функцию, и мгновенные (на каждом шаге итерацион- ного процесса) значения энергии. % листинг файла Variation.m function [Em,psi,W] = Variation(Xmax,delta,N) % функция, возвращающая верхнюю границу значения энергии основного % состояния, соответствующую волновую функцию, и мгновенные % (на каждом шаге итерационного процесса значения энергии) % Хтах - максимальное значение координаты % delta - максимальное изменение волновой функции % N - число узлов координатной сетки в каждом направлении dx=Xmax/N; % расстояние между узлами координатной сетки delta=2*delta; Nmove=1000*N; % число шагов итерационного процесса Norm=(); k=l; % вычисление значений начального приближения for i=l :2*N+1 psi(i)=f(-Xmax+dx*(i-l)); end; Norm=sum(psi.A2); % нормировочный множитель % вычисление начальной энергии 530
16. Моделирование квантовых систем Е=0; for i=N+2:2*N x=-Xmax+(i-1 )*dx; pe=psi(i)*psi(i)*V(x); % потенциальная энергия ke=0.5*psi(i)*(2*psi(i)-psi(i+l)-psi(i-l))/dxA2; % кинетическая энергия E=E+2*(pe+ke); end; E=E+E*V(0)*psi(N+l)A2; E=E+0.5*psi(N+l)*(2*psi(N+l)-psi(N+2)-psi(N))/dxA2; % варьирование волновой функции Ecum=(); for Imove=l:Nmove i=floor((N-l)*rand(l ))+N+2; % координата точки dpsi=delta*(rand(l)-0.5); % изменение волновой функции Psi_Trial=psi(i)+dpsi; % пробное значение волновой функции % в i-м узле вычисление изменения энергии, обусловленное % изменением волновой функции в i-ом узле dpsi2=Psi_Trial*Psi_Trial-psi(i)*psi(i); dV=dpsi2*V(-Xmax+(i-l)*dx); % изменение потенциальной энергии dK=(dpsi2-dpsi*(psi(i+l)+psi(i-l)))/dxA2; % изменение % кинетической энергии ifi==N+l EtriaI=E+dK+dV; Norm_Trial=Norm+dpsi2; else Etrial=E+2*(dV+dK); Norm_Trial=Norm+2*dpsi2; end; dE=Etrial/Norm_Trial-E/Norm; if dE<0 % принятие изменения волновой функции psi(i)=Psi_Trial; psi(2*N+2-i)=Psi_Trial; Norm=Norm_Trial; E=Etrial; end; Ecum=Ecum+E/Norm; W(Imove)=E/Norm; end; Em=Ecum/Nmove; 531
Компьютерное моделирование физических прогрессов в пакете МА TLAB function z = f(x) % функция, описывающая начальное приближение z=exp(-x.A2); function z = V(x) % функция, описывающая потенциал z=0.5*x.A2; Далее необходимо выполнить следующую последовательность команд: » Хтах=4; % максимальное значение координаты » N=40; % число узлов в каждом направлении оси оХ » delta=0.1; % максимальное изменение волновой функции » [Em psi W] = Variation(Xmax,delta,N); % визуализация волновых функций и зависимости мгновенного % значения энергии от номера шага итерации (рис. 16.29) » Ni=1000; »i=l:Ni; » dx=Xmax/Ni; » x(i)=-Xmax+2*dx*i; » j=l:length(psi); » X(j)=-Xmax+2*Xmax/length(psi)*(j-l); » pIot(X(j),psi(j),'k',x,exp((-x.A2)/2),'-.k',x,exp(-x.A2),'—k'); » plot(W,'k'); pIot(W,'k');axis([0 length(W) 0.5 0.65]) Puc. 16.29. Волновая функция основного состояния гармонического осциллятора: I - начальное приближение, 2 - после 40000 итераций, 3 - точное значение 532
16. Моделирование квантовых систем 0 66 0 6 : \у о 65 0.51--------1---1----:---1-----1----1---- О 05 1 15 2 2.5 3 35 4 X104 Рис. 16.30. Зависимость мгновенного значения энергии основного состояния гармонического осциллятора от номера шага итерации Задача 16.24 Сравните скорость сходимости итерационного процесса при выборе в качестве пробной волновой функции <р(х) = co.s(x), <р(х) = 1, X2 9>(х) = е 15 . Исследуйте влияние величины максимального изменения волновой функции на точность вычисления собственного значения энер- гии и собственной волновой функции основного состояния. Задача 16.25 Модифицируйте функцию Variation( ) так, чтобы изменения волновой функции проводились последовательно для каждого узла пространст- венной сетки. Приводит ли данная модификация программы к ускоре- нию сходимости итерационного процесса? Задача 16.26 Вычислите энергию основного состояния нелинейного гармонического осциллятора с потенциалом U(x)-^x2 +Ьх4. Сравните полученные значения собственной энергии и волновой функции основного состояния, полученные вариационным методом Монте-Карло, с соответствующи- ми значениями, полученными в квазиклассическом приближении, мето- дом пристрелки и методом случайных блужданий. Рассмотрите случаи 533
Компьютерное моделирование физических процессов в пакете МА TLAB b>Q, b<Q. Как зависит энергия основного состояния от коэффици- ента Ь, определяющего степень нелинейности системы? Задача 16.27 Используйте, описанный выше документ, для расчета энергии основно- го состояния прямоугольной потенциальной ямы с параметрами Uq- -2,-20, а = 1. Положите X тах:=2, N = 40, Д = 0.1. Рассмот- рите начальные пробные волновые функции <p(x) = cos(x), <р(х) = \, X2 9>(х) = е 15 . Какая из перечисленных выше функций дает наиболее бы- струю сходимость к искомому результату? Чему равна глубина под- барьерного проникания волновой функции? Сравните полученные значе- ния собственной энергии и волновой функции основного состояния, по- лученные вариационным методом Монте-Карло, с соответствующими значениями, полученными в квазиклассическом приближении, методом пристрелки и методом случайных блужданий. Задача 16.28 Вычислите вариационным методом Монте-Карло изменение значений энергии и волновых функций волнового состояния, частицы, находящейся в прямоугольной потенциальной яме, обусловленные малым возмущением: Uh при |xj < 0.2 С/(х) = -0при 0.2 < |х| <1. Сравните полученные значения собственной энергии и волновой функции основного состояния, полученные вариационным методом Монте- Карло, с соответствующими значениями, полученными в квазиклассиче- ском приближении, методом пристрелки и методом случайных блуж- даний. Задача 16.29 Сравните скорость сходимости итерационного процесса при выборе в качестве пробной волновой функции <£>(х) = co.v(x), (р(х) = \, х2 <р{х} = е 15 . Исследуйте влияние величины максимального изменения волновой функции на точность вычисления собственного значения энер- гии и собственной волновой функции основного состояния. 534
16. Моделирование квантовых систем Задача 16.30 Модифицируйте функцию Variation( ) так, чтобы изменения волновой функции проводились последовательно для каждого узла пространст- венной сетки. Приводит ли данная модификация программы к ускоре- нию сходимости итерационного процесса? Задача 16.31 Используйте документ, описанный в данном разделе, для вычисления энергии основного состояния нелинейного гармонического осциллятора 1 2 с потенциалом U(x) = -х +Ьх . Сравните полученные значения собст- венной энергии и волновой функции основного состояния, полученные ва- риационным методом Монте-Карло, с соответствующими значениями, полученными в квазиклассическом приближении, методом пристрелки и методом случайных блужданий. Рассмотрите случаи b>0, b <0. Как зависит энергия основного состояния от коэффициента Ъ, определяю- щего степень нелинейности системы? Задача 16.32 Используйте, описанный выше документ, для расчета энергии основно- го состояния прямоугольной потенциальной ямы с параметрами С/о =-2,-20, а = 1. Положите X max:=2, М=40, А = 0.1. Рассмот- рите начальные пробные волновые функции <р(х) = cos(x), ср(х) -1, X2 <р(х) = е 15 . Какая из перечисленных выше функций дает наиболее бы- струю сходимость к искомому результату? Чему равна глубина под- барьерного проникания волновой функции? Сравните полученные значе- ния собственной энергии и волновой функции основного состояния, по- лученные вариационным методом Монте-Карло, с соответствующими значениями, полученными в квазиклассическом приближении, методом пристрелки и методом случайных блужданий. Задача 16.33 Вычислите вариационным методом Монте-Карло изменения значений энергии и волновых функций волнового состояния частицы, находящейся в прямоугольной потенциальной яме, обусловленные малым возмущением: Uh при |х| < 0.2 {/(х) = -0при 0.2<|х|<1. Uo х\ > 1 535
Компьютерное моделирование физических процессов в пакете MATLAB Сравните полученные значения собственной энергии и волновой функции основного состояния, полученные вариационным методом Монте-Кар- ло, с соответствующими значениями, полученными в квазиклассическом приближении методом пристрелки и методом случайных блужданий. Для вычисления собственного значения энергии основного состояния можно использовать принцип вариации постоянных коэффициентов разложения волновой функции по полному набору ортогональных базисных функций fn: <Р = • п Подставив (16.75) в (16.74), получим (16.75) (16.76) f T/mfnfi^C^dx ХС»-С j f№'<dx т n Неравенство (16.76) превращается в точное равенство только в том слу- чае, когда функция <р(х) является собственной функцией оператора Й , со- ответствующей собственному значению Ео. Для вычисления математиче- ского ожидания (Я) необходимо вычислить матричные элементы J f*nfifndx. (При необходимости вычисления матричных элементов в про- странстве больших размерностей можно использовать для вычисления ин- тегралов метод Монте-Карло.) После вычисления матричных элементов проводится вариация коэффициентов с*, ст до тех пор, пока не будет дос- тигнуто минимальное значение (Я). Данное значения является верхней границей истинного значения энергии основного состояния. Рассматриваемый алгоритм вариационного метода Монте-Карло реали- зуется следующей последовательностью действий. 1. Выбрать ортонормированный набор базисных функций. 2. Выбрать числа используемых базисных функций Nb. 3. Вычислить значений матричных коэффициентов j f*nftfndx. 4. Задать начальные значения коэффициентов с,-. 5. Вычислить начальное значение энергии Е. 6. Выбрать случайным образом коэффициент с, и изменить его значение на случайную величину Ас е [-£, <?] 536
16. Моделирование квантовых систем 7. Вычислить изменение энергии (Н), обусловленное изменением значе- ния коэффициента. 8. Если ДЕ < 0 принять новое значение коэффициента. 9. Если ДЕ > 0 отклонить новое значение коэффициента. 10. Повторять пп. 6—9 до достижения постоянного (с заданной точно- стью) значения (Н). Задача 16.34 Решите задачу 16.29, используя метод вариации постоянных разложе- ния собственной функции по ортонормированному базису. В качестве ортонормированного базиса выберите собственные волновые функции частицы, находящейся в бесконечно глубокой потенциальной яме. Задача 16.35 Определите, используя метод вариации постоянных разложения собствен- ной функции по ортонормированному базису, собственное значение энергии основного состояния частицы, находящейся в потенциале Морза U(x) = U0(e~2ax -26^), (16.77) используя в качестве набора ортонормированного набора базисных функций базисные функции линейного гармонического осциллятора: = (16.78) где Н„(х) —полиномы Эрмита, Nn — нормировочная постоянная, н,,Ы=(-1)"гг < <•- (16.79) N (16.80) L/r22nn!j 1. Создайте функцию, позволяющую для заданных волновых функций вычис- лять матричные элементы Jf^flfndx, вычислите значения элементов матрицы для п,т=2,3,...,10. 2. Создайте функцию, реализующую описанный выше алгоритм вариации по- стоянных разложения волновой функции по ортонормированному базису. 3. Проведите вычисления для различного числа используемых базисных функций п, выбирая в качестве начальных значений с0 = 1, сп = 0 для п *0. Как зависят получаемые значения энергии от числа используемых 537
Компьютерное моделирование физических процессов в пакете МА TLAB базисных функций? Как зависят получаемые значения энергии от мак- симальной величины изменения шага? Сравните полученные численные значения с известными точными значениями энергии [1, задача 70]. ЛИТЕРАТУРА 1. Флюгге 3, Задачи по квантовой механике. Т. 1. М.: Мир, 1974. 2. Anderson J. В. A random walk simulation of Schrodinger equation//.!. Chem. Phys, 63, 1499, 1975. 3. Anderson J. B. Quantum chemistry by random walk//J. Chem. Phys, 65, 4121, 1976. 4. Anderson J. B. Quantum chemistry by random walk//Higher accuracy, J. Chem. Phys, 73,3897, 1980. 5. Ландау Л. Д., Лифшиц E. M. Квантовая механика. Нерелятивистская теория. М.: Нау- ка, 2001. 6. Давыдов А. С. Квантовая механика. М.: Наука, 1973. 7. Крайнов А. В., Мигдал А. Б. Качественные методы в квантовой механике. М.: Наука, 1976. 8. Мигдал А. Б. Качественные методы в квантовой теории. М.: Наука, 1975. 9. Методы Монте-Карло в статистической физике. Под ред. К. Биндера. М.: Мир, 1982. 10. Гулд X., Тобочник Я. Компьютерное моделирование в физике. М.: Мир, 1990. Т. 2. 11. Кунин С. Вычислительная физика. М.: Мир, 1992. 538
Приложение 1 ОСНОВНЫЕ ПРИЕМЫ РАБОТЫ Ш.1. Введение в пакет MATLAB MATLAB является интерактивным, матрично-ориентированным паке- том, предназначенным для выполнения научных и инженерных расчетов. Имя пакета MATLAB является аббревиатурой двух слов MATrix LABoratory (МАТричная ЛАБоратория). Цель данного раздела - познако- мить читателя с необходимыми сведениями для начала работы с пакетом MATLAB. Мы рекомендуем совместить изучение данного раздела с одно- временным выполнением приведенных в разделе примеров. Отметим, что во время работы с системой можно пользоваться встроен- ной оперативной помощью, которая содержит сведения, необходимые для успешной работы с пакетом. После входа в систему команда help выведет список групп, в которые объединены функции: » help То get started, select "MATLAB Help" from the Help menu. HELP topics: matlab\general - General purpose commands. matlab\ops - Operators and special characters. matlabMang - Programming language constructs. matlab\elmat - Elementary matrices and matrix manipulation. matlab\elfun - Elementary math functions. matlab\specfun - Specialized math functions. matlab\matfun - Matrix functions - numerical linear algebra. matlab\datafun - Data analysis and Fourier transforms. matlab\audio - Audio support. matlab\polyfun - Interpolation and polynomials. matlab\funfun - Function functions and ODE solvers. matlab\sparfun - Sparse matrices. matlab\graph2d - Two dimensional graphs. matlab\graph3d - Three dimensional graphs. matlab\specgraph - Specialized graphs. matlab\graphics - Handle Graphics. matlab\uitools - Graphical user interface tools. matlab\strfun - Character strings. matlab\iofun - File input/output. matlab\timefun - Time and dates. matlab\datatypes - Data types and structures. matlab\verctrl - Version control.
Компьютерное моделирование физических процессов в пакете MATLAB matlabVwinfun - Windows Operating System Interface Files (DDE/ActiveX). matlab\demos - Examples and demonstrations. toolboxMocal - Preferences. simulink\simulink - Simulink simulink\blocks - Simulink block library. simulink\simdemos - Simulink 4 demonstrations and samples. simdemos\aerospace - Simulink: Aerospace model demonstrations and samples. simdemos\automotive - Simulink: Automotive model demonstrations and samples. simdemos\simfeatures - Simulink: Feature demonstrations and samples. simdemos\simgeneral - Simulink: General model demonstrations and samples. simdemos\simnew - Simulink: New features model demonstrations and samples. simulink\dee - Differential Equation Editor. stateflow\stateflow - Stateflow. stateflow\sfdemos - Stateflow demonstrations and samples. stateflow\coder - Stateflow Coder. rtw\rtw - Real-Time Workshop. rtw\rtwdemos - Real-Time Workshop Demonstrations: asap2\asap2 - (No table of contents file). asap2\user - (No table of contents file). cdma\cdma - CDMA Reference Blockset. cdma\cdmamasks - CDMA Reference Blockset mask helper functions. cdma\cdmamex - CDMA Reference Blockset S-Functions. cdma\cdmademos - CDMA Reference Blockset demonstrations and examples. commblks\commblks - Communications Blockset. commblksXcommmasks - Communications Blockset mask helper functions. commblks\commmex - Communications Blockset S-functions. commblksXcommblksdemos - Communications Blockset Demos. commblks\commblksobsolete - Archived Simulink Files from Communications Tool- box Version 1.5. comm\comm - Communications Toolbox. comm\commdemos - Communications Toolbox Demonstrations. comm\commobsolete - Archived MATLAB Files from Communications Toolbox Version 1.5. control\control - Control System Toolbox. control\ctrlguis - Control System Toolbox — GUI support functions. control\ctrlobsolete - Control System Toolbox — obsolete commands. controlXctrlutil - (No table of contents file) control\ctrldemos - Control System Toolbox — Demos. dspblks\dspblks - DSP Blockset. dspblks\dspmasks - DSP Blockset mask helper functions. dspblks\dspmex - DSP Blockset S-Function MEX-files. dspblks\dspdemos - DSP Biockset demonstrations and examples. dsprtw\util_c - (No table of contents file). daq\daq - Data Acquisition Toolbox. daq\daqdemos - Data Acquisition Toolbox - Data Acquisition Demos. database\database - Database Toolbox. 540
Приложения database\dbdemos - Database Toolbox Demonstration Functions, database\vqb - Visual Query Builder functions. datafeed\datafeed - Datafeed Toolbox, datafeed\dfgui - Datafeed Toolbox Graphical User Interface toolbox\dials - Dials & Gauges Blockset. toolbox\exlink - (No table of contents file). filterdesign\filterdesign - Filter Design Toolbox. filterdesignXquantization - (No table of contents file). filterdesign\filtdesdemos - Filter Design Toolbox Demonstrations. fmderiv\finderiv - Financial Derivatives Toolbox. ftseries\ftseries - Financial Time Series Toolbox. ftseries\ftsdemos - (No table of contents file). ftseries\ftsdata - (No table of contents file). ftseries\ftstutorials - (No table of contents file). finance\finance - Financial Toolbox. finance\calendar - Financial Toolbox calendar functions. finance\findemos - Financial Toolbox demonstration functions. finance\finsupport - (No table of contents file). toolbox\fixpoint - Fixed-Point Blockset. fixpoint\fxpdemos - Fixed-Point Blockset Demos. fixpointXobsolete - Obsolete Fixed-Point Blockset. fuz.z.y\fuzzy - Fuzzy Logic Toolbox. fuzzy\fuzdemos - Fuzzy Logic Toolbox Demos. garchXgarch - GARCH Toolbox. garch\garchdemos - (No table of contents file). images\images - Image Processing Toolbox. images\imdemos - Image Processing Toolbox — demos and sample images. instrument\instrument - Instrument Control Toolbox. instrument\instrumentdemos - (No table of contents file). ImiMmictrl - LMI Control Toolbox: Control Applications. ImiUmilab - LMI Control Toolbox. toolbox\compiler - MATLAB Compiler. toolbox\rptgen - MATLAB Report Generator. map\map - Mapping Toolbox. map\mapdisp - Mapping Toolbox Map Definition and Display. map\mapproj - Mapping Toolbox Projections. mpc\mpccmds - Model Predictive Control Toolbox. mpc\mpcdemos - Model Predictive Control Toolbox. motdsphnotdsp - Motorola DSP Developer’s Kit. motdsp\motdspmex - Motorola DSP Developers Kit. mot<ispasm\bin - (No table of contents file). motdsp\motdspblks - Motorola DSP Developers Kit block libraries. motdsp\motdspmasks - Motorola DSP blockset mask helper functions. motdsp\motdspdemos - MOTDSP Toolbox demonstrations and examples: mutoolsXcommands - Mu-Analysis and Synthesis Toolbox. mutoolsXsubs - Mu-Analysis and Synthesis Toolbox. 541
Компьютерное моделирование физических процессов в пакете МА TLAB nnet\nnet - Neural Network Toolbox. nnet\nnutils - (No table of contents file). nnet\nncontrol - Neural Network Toolbox Control System Functions. nnet\nndemos - Neural Network Demonstrations. nnet\nnobsolete - (No table of contents file). toolbox\ncd - Nonlinear Control Design Blockset. toolboxXoptim - Optimization Toolbox. toolbox\pde - Partial Differential Equation Toolbox. powersys\powersys - Power System Blockset. powersysXpowerdemo - Power System Blockset Demos. rtw\ada - Real-Time Workshop Ada Coder. targets\ecoder - Real-Time Workshop Embedded Coder. toolbox\reqmgt - Requirements Management Interface. toolbox\robust - Robust Control Toolbox. toolbox\sb2sl - SB2SL (converts SystemBuild to Simulink). signal\signal - Signal Processing Toolbox. signal\fdatoolgui - Signal Processing Toolbox GUL signal\sptoolgui - Signal Processing Toolbox GUI. signal\sigdemos - Signal Processing Toolbox Demonstrations. rtw\accel - Simulink Accelerator. simulink\mdldiff - Model Differencing for Simulink and Stateflow. simulink\simcoverage - Simulink Model Coverage Tool. toolboxXrptgenext - Simulink Report Generator. toolbox\splines - Spline Toolbox. toolbox\stats - Statistics Toolbox. toolbox\symbolic - Symbolic Math Toolbox. ident\ident - System Identification Toolbox. ident\idobsolete - (No table of contents file), idenfiidguis - (No table of contents file). ident\idutils - (No table of contents file), idenfiiddemos - (No table of contents file). ident\idhelp - (No table of contents file). wavelet\wavelet - Wavelet Toolbox. wavelet\wavedemo - Wavelet Toolbox Demonstrations. xpcXxpc - xPC Target. build\xpcblocks - (No table of contents file). xpcXxpcdemos - xPC Target — demos and sample script files. kernel\embedded - xPC Target Embedded Option. MatlabR12\work - (No table of contents file). For more help on directory/topic, type "help topic". » help HELP topics: matlab\general - General purpose commands. matlab\ops - Operators and special characters. 542
Приложения matlabMang - Programming language constructs. matlab\elmat - Elementary matrices and matrix manipulation. matlab\elfun - Elementary math functions. matlab\specfun - Specialized math functions. matlab\matfun - Matrix functions - numerical linear algebra. matlab\datafun - Data analysis and Fourier transforms. matlab\audio - Audio support. matlab\polyfun - Interpolation and polynomials. matlab\funfun - Function functions and ODE solvers. matlab\sparfun - Sparse matrices. matlab\graph2d - Two dimensional graphs. matlab\graph3d - Three dimensional graphs. matlab\specgraph - Specialized graphs. matlab\graphics - Handle Graphics. matlab\uitools - Graphical user interface tools. matlab\strfun - Character strings. matlab\iofun - File input/output. matlab\timefun - Time and dates. matlab\datatypes - Data types and structures. matlab\verctrl - Version control. matlabYwinfun - Windows Operating System Interface Files (DDE/ActiveX). matlab\demos - Examples and demonstrations. toolbox\local - Preferences. simulink\simulink - Simulink simulink\blocks - Simulink block library. simulink\simdemos - Simulink 4 demonstrations and samples. simdemos\aerospace - Simulink: Aerospace model demonstrations and samples. simdemos\automotive - Simulink: Automotive model demonstrations and samples. simdemos\simfeatures - Simulink: Feature demonstrations and samples. simdemos\simgeneral - Simulink: General model demonstrations and samples. simdemos\simnew - Simulink: New features model demonstrations and samples. simulink\dee - Differential Equation Editor. stateflow\stateflow - Stateflow. stateflowXsfdemos - Stateflow demonstrations and samples. stateflow\coder - Stateflow Coder. rtw\rtw - Real-Time Workshop. rtw\rtwdemos - Real-Time Workshop Demonstrations: asap2\asap2 - (No table of contents file). asap2\user - (No table of contents file). cdma\cdma - CDMA Reference Blockset. cdma\cdmamasks - CDMA Reference Blockset mask helper functions. cdma\cdmamex - CDMA Reference Blockset S-Functions. cdma\cdmademos - CDMA Reference Blockset demonstrations and examples. commblks\commblks - Communications Blockset. commblks\commmasks - Communications Blockset mask helper functions. commblks\commmex - Communications Blockset S-functions. 543
Компьютерное моделирование физических процессов в пакете MATLAB commblksXcommblksdemos -Communications Blockset Demos. commblksXcommblksobsolete - Archived Simulink Files from Communications Took box Version 1.5. commXcomm - Communications Toolbox. commXcommdemos - Communications Toolbox Demonstrations. commXcommobsolete - Archived MATLAB Files from Communications Toolbox Ver- sion 1.5. controlXcontrol - Control System Toolbox. controlXctrlguis - Control System Toolbox — GUI support functions. controlXctrlobsolete - Control System Toolbox — obsolete commands. controlXctrlutil - (No table of contents file). controlXctrldemos - Control System Toolbox — Demos. dspblksXdspblks - DSP Blockset. dspblksXdspmasks - DSP Blockset mask helper functions. dspblksXdspmex - DSP Blockset S-Function MEX-files. dspblksXdspdemos - DSP Blockset demonstrations and examples. dsprtw\util_c - (No table of contents file). daqXdaq - Data Acquisition Toolbox. daqXdaqdemos - Data Acquisition Toolbox - Data Acquisition Demos. databaseXdatabase - Database Toolbox. databaseXdbdemos - Database Toolbox Demonstration Functions. databaseXvqb - Visual Query Builder functions. datafeedXdatafeed - Datafeed Toolbox. datafeedXdfgui - Datafeed Toolbox Graphical User Interface tooIboxXdials - Dials & Gauges Blockset. toolboxXexlink - (No table of contents file). filterdesignXfilterdesign - Filter Design Toolbox. filterdesignXquantization - (No table of contents file). filterdesignXfiltdesdemos - Filter Design Toolbox Demonstrations. finderivXfinderiv - Financial Derivatives Toolbox. ftseriesXftseries - Financial Time Series Toolbox ftseriesXftsdemos - (No table of contents file). ftseriesXftsdata - (No table of contents file). ftseriesXftstutorials - (No table of contents file). financeXfinance - Financial Toolbox. financeXcalendar - Financial Toolbox calendar functions. financeXfindemos - Financial Toolbox demonstration functions. financeXfinsupport - (No table of contents file). toolboxXfixpoint - Fixed-Point Blockset. fixpointXfxpdemos - Fixed-Point Blockset Demos. fixpointXobsolete - Obsolete Fixed-Point Blockset. fuzzyXfuzzy - Fuzzy Logic Toolbox. fuzzyXfuzdemos - Fuzzy Logic Toolbox Demos. garchXgarch - GARCH Toolbox. garchXgarchdemos - (No table of contents file). imagesXimages - Image Processing Toolbox. 544
Приложения images\imdemos - Image Processing Toolbox — demos and sample images. instrument\instrument - Instrument Control Toolbox. instrument\instrumentdemos - (No table of contents file) ImiXlmictrl - LMI Control Toolbox: Control Applications. ImiXlmilab - LMI Control Toolbox. toolbox\compiler - MATLAB Compiler. toolbox\rptgen - MATLAB Report Generator. map\map - Mapping Toolbox. map\mapdisp - Mapping Toolbox Map Definition and Display. map\mapproj - Mapping Toolbox Projections. mpc\mpccmds - Model Predictive Control Toolbox. mpc\mpcdemos - Model Predictive Control Toolbox motdsp\motdsp - Motorola DSP Developer's Kit. motdsp\motdspmex - Motorola DSP Developers Kit. motdspasm\bin - (No table of contents file). motdsp\motdspblks - Motorola DSP Developers Kit block libraries. motdspXmotdspmasks - Motorola DSP blockset mask helper functions. motdsp\motdspdemos - MOTDSP Toolbox demonstrations and examples: mutools\commands - Mu-Analysis and Synthesis Toolbox. mutools\subs - Mu-Analysis and Synthesis Toolbox. nnet\nnet - Neural Network Toolbox. nnet\nnutils - (No table of contents file). nnet\nncontrol - Neural Network Toolbox Control System Functions. nnet\nndemos - Neural Network Demonstrations. nnet\nnobsolete - (No table of contents file). toolbox\ncd - Nonlinear Control Design Blockset. toolbox\optim - Optimization Toolbox. toolbox\pde - Partial Differential Equation Toolbox. powersys\powersys - Power System Blockset. powersys\powerdemo - Power System Blockset Demos. rtw\ada - Real-Time Workshop Ada Coder. targets\ecoder - Real-Time Workshop Embedded Coder. toolbox\reqmgt - Requirements Management Interface. toolbox\robust - Robust Control Toolbox. toolbox\sb2sl - SB2SL (converts SystemBuild to Simulink). signal\signal - Signal Processing Toolbox. signal\fdatoolgui - Signal Processing Toolbox GUL signal\sptoolgui - Signal Processing Toolbox GUL signal\sigdemos - Signal Processing Toolbox Demonstrations. rtw\accel - Simulink Accelerator. simulink\mdldiff - Model Differencing for Simulink and Stateflow simulink\simcoverage - Simulink Model Coverage Tool. toolbox\rptgenext - Simulink Report Generator. toolbox\splines - Spline Toolbox. toolbox\stats - Statistics Toolbox. toolboxXsymbolic - Symbolic Math Toolbox. 545
Компьютерное моделирование физических процессов в пакете MATLAB ident\ident - System Identification Toolbox. ident\idobsolete - (No table of contents file). ident\idguis - (No table of contents file). ident\idutils - (No table of contents file). ident\iddemos - (No table of contents file). ident\idhelp - (No table of contents file). wavelet\wavelet - Wavelet Toolbox. wavelet\wavedemo - Wavelet Toolbox Demonstrations. xpc\xpc - xPC Target. build\xpcblocks - (No table of contents file). xpc\xpcdemos - xPC Target — demos and sample script files. kernel\embedded - xPC Target Embedded Option. MatlabR12\work - (No table of contents file). For more help on directory/topic, type "help topic". Команда help <имя_группы> выведет на экран список функций, разме- щенных в этой группе с краткими пояснениями. Например, команда help wavelet выдаст список функций, реализующих методы вэйвлет анализа: » help wavelet Wavelet Toolbox. Version 2.0 (R12) 16-June-2000 What's new. Readme - New features, bug fixes, and changes in this version. To display the Readme file for Version 2.0, type "whatsnew wavelet" in the MATLAB command window. Wavelet Toolbox GUI (Graphical User Interface). wavemenu - Start graphical user interface tools. Wavelets: General. biorfilt - Biorthogonal wavelet filter set. centfrq — Wavelet center frequency. dyaddown - Dyadic downsampling. dyadup - Dyadic upsampling. intwave - Integrate wavelet function psi. orthfilt - Orthogonal wavelet filter set. qmf - Quadrature mirror filter. scal2frq - Scale to frequency. wavefun - Wavelet and scaling functions. wavemngr - Wavelet manager. wfilters - Wavelet filters. wmaxlev - Maximum wavelet decomposition level. Wavelet Families. biorwavf - Biorthogonal spline wavelet filters. cgauwavf - Complex Gaussian wavelet. cmorwavf - Complex Morlet wavelet. coifwavf - Coiflet wavelet filter. 546
Приложения dbaux - Daubechies wavelet filter computation. dbwavf - Daubechies wavelet filters. fbspwavf - Complex Frequency В-Spline wavelet. gauswavf - Gaussian wavelet. mexihat - Mexican hat wavelet. meyer - Meyer wavelet. meyeraux - Meyer wavelet auxiliary function. morlet - Morlet wavelet. rbiowavf - Reverse Biorthogonal spline wavelet filters. shanwavf - Complex Shannon wavelet. symaux - Symlet wavelet filter computation. symwavf - Symlet wavelet filter. Continuous Wavelet: One-Dimensional. cwt - Real or Complex Continuous wavelet coefficients 1-D. Discrete Wavelets: One-Dimensional. appcoef - Extract 1-D approximation coefficients. detcoef - Extract 1-D detail coefficients. dwt - Single-level discrete 1-D wavelet transform, dwtmode - Discrete wavelet transform extension mode, idwt - Single-level inverse discrete 1-D wavelet transform, upcoef - Direct reconstruction from 1-D wavelet coefficients, upwlev - Single-level reconstruction of 1-D wavelet decomposition, wavedec - Multi-level 1-D wavelet decomposition. waverec - Multi-level 1-D wavelet reconstruction. wrcoef - Reconstruct single branch from 1-D wavelet coefficients. Discrete Wavelets: Two-Dimensional. appcoef2 - Extract 2-D approximation coefficients. detcoef2 - Extract 2-D detail coefficients. dwt2 - Single-level discrete 2-D wavelet transform. dwtmode - Discrete wavelet transform extension mode. idwt2 - Single-level inverse discrete 2-D wavelet transform. upcoef2 - Direct reconstruction from 2-D wavelet coefficients. upwlev2 - Single-level reconstruction of 2-D wavelet decomposition. wavedec2 - Multi-level 2-D wavelet decomposition. waverec2 - Multi-level 2-D wavelet reconstruction. wrcoef2 - Reconstruct single branch from 2-D wavelet coefficients. Wavelets Packets Algorithms. bestlevt - Best level tree (wavelet packet). besttree - Best tree (wavelet packet). entrupd - Entropy update (wavelet packet). wentropy - Entropy(wavelet packet). wp2wtree - Extract wavelet tree from wavelet packet tree. wpcoef - Wavelet packet coefficients. wpcutree - Cut wavelet packet tree. 547
Компьютерное моделирование физических процессов в пакете MATLAB wpdec - Wavelet packet decomposition 1-D. wpdec2 - Wavelet packet decomposition 2-D. wpfun - Wavelet packet functions. wpjoin - Recompose wavelet packet. wprcoef - Reconstruct wavelet packet coefficients. wprec - Wavelet packet reconstruction 1-D. wprec2 - Wavelet packet reconstruction 2-D. wpsplt - Split (decompose) wavelet packet. Discrete Stationary Wavelet Transform Algorithms. iswt - Inverse discrete stationary wavelet transform 1-D. iswt2 - Inverse discrete stationary wavelet transform 2-D. swt - Discrete stationary wavelet transform 1-D. swt2 - Discrete stationary wavelet transform 2-D. De-noising and Compression for Signals and Images. ddencmp - Default values for de-noising or compression. thselect - Threshold selection for de-noising. wbmpen - Penalized threshold for wavelet 1-D or 2-D denoising. wdcbm - Thresholds for wavelet 1-D using Birge-Massart strategy. wdcbm2 - Thresholds for wavelet 2-D using Birge-Massart strategy, wden - Automatic 1-D de-noising using wavelets. wdencmp - De-noising or compression using wavelets. wnoise - Generate noisy wavelet test data. wnoisest - Estimate noise of 1-D wavelet coefficients. wpbmpen - Penalized threshold for wavelet packet denoising, wpdencmp - De-noising or compression using wavelet packets. wpthcoef - Wavelet packet coefficients thresholding. wthcoef - Wavelet coefficient thresholding 1-D. wthcoef2 - Wavelet coefficient thresholding 2-D. wthresh - Perform soft or hard thresholding. wthrmngr - Threshold settings manager. Tree Management Utilities. allnodes - Tree nodes. depo2ind - Node depth-position to node index. drawtree - Draw wavelet packet decomposition tree (GUI). dtree - Constructor for the class DTREE. get - Get tree object field contents. ind2depo - Node index to node depth-position. isnode - True for existing node. istnode - Determine indices of terminal nodes. leaves - Determine terminal nodes. nodeasc - Node ascendants. nodedesc - Node descendants. nodejoin - Recompose node. nodepar - Node parent. nodespit - Split (decompose) node. 548
Приложения noleaves - Determine nonterminal nodes. ntnode - Number of terminal nodes. ntree - Constructor for the class NTREE. plot - Plot tree object. read - Read values in tree object fields. readtree - Read wavelet packet decomposition tree from a figure. set - Set tree object field contents. tnodes - Determine terminal nodes. treedpth - Tree depth. treeord - Tree order. wptree - Constructor for the class WPTREE. wpviewcf - Plot wavelet packets colored coefficients. write - Write values in tree object fields. wtbo - Constructor for the class WTBO. wtreemgr - NTREE object manager. General Utilities. wcodemat - Extended pseudocolor matrix scaling. wextend - Extend a Vector or a Matrix. wkeep - Keep part of a vector or a matrix. wrev - Flip vector. Other. instdfft - Inverse non-standard 1-D fast Fourier transform. nstdfft - Non-standard 1-D fast Fourier transform. wvarchg - Find variance change points. Wavelets Information. waveinfo - Information on wavelets. Demonstrations. wavedemo - Wavelet Toolbox demos. See also WAVEDEMO. Команда help <имя_функции> выдаст подробную информацию о функ- ции. Например, команда help waveinfo выдаст информацию о функции, воз- вращающей справочную информацию о вэйвлете конкретного вида: » help waveinfo WAVEINFO Information on wavelets. WAVEINFO provides information for all the wavelets within the toolbox. WAVEINFO('wname') provides information for the wavelet family whose short name is specified by the string 'wname'. Available family short names are: 'haar' : Haar wavelet. 'db' : Daubechies wavelets. 549
Компьютерное моделирование физических процессов в пакете MATLAB 'sym' : Symlets. 'coif : Coiflets. 'bior' : Biorthogonal wavelets. 'rbio' : Reverse biorthogonal wavelets. 'meyr' : Meyer wavelet. 'dmey' : Discrete Meyer wavelet. 'gaus' : Gaussian wavelets. 'mexh' : Mexican hat wavelet. 'morl' : Morlet wavelet. 'cgau' : Complex Gaussian wavelets. 'cmor' : Complex Morlet wavelets. 'shan' : Complex Shannon wavelets. 'fbsp' : Complex Frequency B-spline wavelets. or user-defined short names for their own wavelet families (see WAVEMNGR). WAVEINFO('wsys') provides information on wavelet packets. See also WAVEMNGR. » Вы можете также познакомиться с некоторыми возможностями системы MATLAB с помощью команд intro и demo. Для более основательного зна- комства с системой желательно ознакомиться с книгой «MATLAB User’s Guide» (Руководство пользователя). Система MATLAB работает на таких платформах, как Sun/Apollo/ VAXstation/HP workstations, VAX, MicroVAX, Gould, PC и AT совместимые, компьютеры с с процессором 80386 и выше, Apple Macintosh, и на ряде па- раллельных машин. В настоящем руководстве будут описаны основные свойства системы, которые одинаково применимы при использовании вер- сий 5.0., 5.1,5.2. и 6.0. MATLAB является собственным знаком фирмы Math- Works, Inc., Cochituate Place, 24 Prime Park Way, Natick, MA 01760, (508)653- 1415, Fax: (508)653-2997, Email: info@mathworks.com. П1.2. Работа в командном окне Ш.2.1. Вход в систему MATLAB Войти в пакет MATLAB в большинстве операционных систем (напри- мер, в системе MS DOS) после входа в саму операционную среду можно, набрав в ответ на системный запрос команду matlab. При работе в ОС Windows-9x, Windows-2000, Windows ХР необходимо найти соответст- вующую иконку и кликнуть на ней. Выход пакета осуществляется с помо- щью команды quit. В версии пакета 5.0 и выше, работающих в ОС семейст- 550
Приложения ва Windows, используется собственный встроенный редактор текста'. В обоих случаях командное окно пакета MATLAB находится в одном окне, а редактор текста - в другом окне. В командном окне MATLAB помимо собственно команд MATLAB можно использовать системные команды ОС MS DOS. Например, команда dir выводит на экран содержимое текущего каталога, команда what выводит только список m-файлов* текущего каталога. Команда cd позволяет сменить текущий каталог, а команды delete имяфайла и type имя файла стирают и печатают на экране содержимое файла соответственно. Ш.2.2. Интерактивный доступ к справочной информации и документации Существуют следующие способы получить информацию о функциях па- кета MATLAB в процессе работы: • команда help; • команда lookfor; • меню Help; • просмотр и вывод на печать страниц документации; • обращение к WEB-серверу фирмы The MathWorks. П1.2.2.1. Команда help Основной и наиболее быстрый способ выяснить синтаксис и особенно- сти применения m-функции - использовать команду help <имя ш- функции>. Соответствующая информация появляется непосредственно в командном окне. Например, команда help zeros выведет в командное окно следующую информацию на английском языке; » help zeros ZEROS Zeros array. ZEROS(N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros. ZEROS(M,N,P,...) or ZEROS([M N P...]) is an M-by-N-by-P-by ... array of zeros. ZEROS(SIZE(A)) is the same size as A and all zero?. See also ONES. * Далее речь будет идти только о версии 5.x и выше и работе в ОС семейства Windows-95. ' Здесь и далее т-файлом мы будем называть любой текстовой файл, содер- жащий набор команд пакета MATLAB, имеющий расширение .т. Подробнее об этих файлах и их роли в системе MATLAB см. в п. 7 данного приложения. 551
Компьютерное моделирование физических процессов в пакете MATLAB Следует обратить внимание, что текст интерактивной справки использу- ет верхний регистр для написания имен функций и переменных, чтобы вы- делить их из основной части текста. Однако при использовании функций их имена необходимо вводить с помощью символов нижнего регистра. Команда help без аргументов выводит на экран список каталогов, кото- рые имеются в системе с кратким описанием их содержимого. Повторный набор этой команды с именем каталога, например help elmat, выведет спи- сок функций, предназначенных для создания и работы с матрицами специ- ального вида. Ввод команды с именем определенной функции выдаст на эк- ран описание этой функции. Следует особо обратить внимание, что в каче- стве ответа на запрос о помощи выводятся все строки комментариев, которые написаны в начале каждой функции - как созданной разработчи- ками системы, так и собственными функциями пользователя. П1.2.2.2. Команда lookfor Эта команда позволяет выполнить поиск m-функции по ключевому сло- ву; при этом анализируется первая строка комментария, и она же выводится на экран, если в ней встретилось ключевое слово. Например, в системе MA- TLAB нет m-функции с именем inverse, и поэтому на команду » help inverse ответом будет inverse.m not found (inverse.m не найден). Однако команда lookfor inverse покажет все совпадения, найденные в справочных файлах пакетов прикладных программ, подключеных к пакету MATLAB. Добавление к команде lookfor опции -all в виде lookfor <слово> -all расширяет область поиска - <слово> ищется в первом блоке коммента- риев, т. е. в блоке комментариев между заголовком функции и первым оператором. П1.2.2.3. Меню Help Это меню командного окна системы MATLAB позволяет активизировать следующие окна: • HelpWindow • Help Tips • Help Desk (HTML) • Examples and Demos • AboutMatlab • Subscribe (HTML) 552
Приложения Окно справки HelpWindow позволяет получить в отдельном окне то же самое, что и команда help. Отличие состоит в том, что в этом окне можно погружаться внутрь раздела с помощью двойного щелчка мыши, а не по- вторно набирая команду help с новыми аргументами. В пункте меню Help Tips приведена краткая справка по использованию помощи, т. е. описаны все пункты этого меню. Вызов пункта меню Help Desk позволяет получить доступ к большому объему справочной информации и к документации по системе, размещае- мой на жестких дисках, либо на диске CD-ROM в формате HTML. При ис- пользовании этого пункта меню желательно, чтобы в системе был установ- лен какой-либо Internet-браузер (например, Internet Explorer или Netscape Navigator). Все операторы и функции пакета MATLAB описаны подробно и с большим числом примеров. Реализована поисковая система, позволяющая выполнить необходимые запросы. В пункте меню Examples and Demos приведено большое число приме- ров использования пакета MATLAB для решения задач из разных областей. Пункт меню AboutMatlab выводит на экран стандартную заставку MATLAB, а в пункте меню Subscribe HTML предлагается подписаться (при наличии лицензии на продукт) на доступ через сеть Internet к услугам фирмы MathWorks. Просмотр и распечатка документации. Версии справочной докумен- тации доступны для просмотра и распечатки в формате PDF с помощью программы Adobe Acrobat. Он позволяет просматривать текст в формате пе- чатной страницы, с полным набором шрифтов, графики и изображений, с полным ощущением чтения книги. Одновременно это и наилучший способ получения копий нужных страниц. П1.2.3. Редактирование и повторный вызов командной строки Командная строка MATLAB легко редактируется. Курсор можно пере- мещать с помощью стрелок <= => и удалять неправильно набранные сим- волы с помощью клавиш Backspace или Delete. При работе на IBM PC со- вместимом компьютере доступны также и другие редактирующие клавиши: Home, End и Delete. При работе на других системах необходимо использо- вать команду edit для ознакомления со списком доступных команд. Удоб- ным свойством системы является возможность использовать клавиши- стрелки ft ft для доступа к буферу с ранее введенными командами. Это дает возможность осуществить повторный вызов ранее выполненной команды, отредактировать ее и выполнить вновь. Для небольших процедур это гораз- до удобнее, чем писать и отлаживать m-файлы, что требует постоянного перехода из командного окна MATLAB в окно текстового редактора (см. п. 8 и 8.2). Например, если вы хотите сравнить графики функций sin(wrr) и 553
Компьютерное моделирование физических процессов в пакете МА TLAB sin(nx) на интервале [0, 2.] для различных значений п и т, то можете вос- пользоваться командной строкой » m=2;n=3;x=0:.01:2*pi;y=sin(m*x);z=sin(n*x); plot(x,y,x,z) с последующим ее вызовом и редактированием. Проделайте все описанное выше самостоятельно. П1.2.4. Формат вывода Поскольку все вычисления в MATLAB выполняются с двойной точно- стью, формат вывода может управляться с помощью следующих команд: format short С фиксированной точкой и 4 знаками после точки (по умолчанию) format long С фиксированной точкой и 14 знаками после точки format short e Научная нотация с 4 десятичными знаками format long e Научная нотация с 15 десятичными знаками format short g С фиксированной точкой и 3 знаками после точки format long g Научная нотация с 13 десятичными знаками После вызова одного из приведенных выше форматов он сохраняется до вызова другого формата. Команда format compact подавляет большинство пустых строк, позволяя большее количество информации вывести на экран или страницу. Она не зависит от других команд формата. Ш.2.5. Копия протокола сессии Легче всего протокол сессии получить с помощью команды diary. Вызов команды diary <имя_файла> приведет к тому, что все появившееся далее на экране (кроме графики) будет записано в файл <имя_файла>. Если имя файла в команде будет опущено, то протокол сессии будет записан в файл с именем diary. Команда diary off приведет к выключению режима записи команд в протокол сессии, а команда diary on к восстановлению режима за- писи. После завершения записи сессии вы можете отредактировать этот файл как обычный текстовой файл и при необходимости распечатать его или использовать для последующего написания т-файла. Ш.З. Создание матриц MATLAB работает практически с одним видом объектов - с числовыми прямоугольными матрицами, элементами которых могут быть в общем слу- чае комплексные числа. Все переменные представляют собой матрицы. В некоторых случаях матрицы 1 х 1 интерпретируются как скаляры, а матрицы 554
Приложения с одной строкой или одним столбцом интерпретируются как вектора. В сис- теме MATLAB матрицы могут быть созданы разными способами. • Введены явно с помощью списка элементов; • Сгенерированы встроенными операторами или функциями; • Созданы в m-файлах (см. прил. 2); • Загружены из внешнего файла данных. П1.3.1. Явное задание матриц Например, любой из приведенных далее операторов » А=[1 2 3; 4 5 6; 7 8 9] <Enter> или » А=[1 2 3 <Shift>+<Enter> 4 5 6 <Shift>+<Enter> 7 8 9] <Enter> создает матрицу 3x3 и присваивает ее значение переменной: А = 12 3 4 5 6 7 8 9 Элементы внутри строки матрицы могут отделяться друг от друга не только пробелами, но и запятыми. При вводе чисел в экспоненциальной форме (например, 2.34е-9) не следует использовать пробелы. Ввод больших матриц лучше выполнять с помощью m-файлов, в которых легко находить и исправлять ошибки (см. прил. 2). В пакет MATLAB встроен ряд функций, позволяющих создавать функции специального вида, например, rand, magic, zeros и ones позволяют легко сгенерировать матрицы. Функция rand(n) возвращает матрицу размером пхп, случайных чисел с равномерным законом распределением в диапазоне [0 1]. Функция rand(m,n) создает матрицу размером mxn, состоящую из случай- ных чисел, которые распределены по равномерному закону в диапазоне [0 1]. Функция magic(n) создает матрицу размером пхп, которая является ма- гическим квадратом (суммы элементов по строкам и столбцам равны). Функция zeros(m,n) создает нулевую матрицу размера mxn. Функция ones(m,n) создает матрицу размера mxn, каждый элемент ко- торой равен единице. Матрицы могут быть сгенерированы также с помощью цикла for (см. П1.5). Ссылки на отдельные элементы матриц и векторов осуществляются с помощью индексов в круглых скобках обычным образом. Например, А(1,3) означает элемент матрицы, стоящий на 1-й строке и 3-м столбце матрицы А, 555
Компьютерное моделирование физических процессов в пакете МА TLAB а х(3) означает 3-й элемент вектора х. В качестве индексов векторов и матриц могут использоваться только положительные числа. Ссылать- ся на элементы матрицы А можно, используя единственный индекс, А(к). В этом случае эта матрица рассматривается как один длинный вектор- столбец, сформированный из столбцов исходной матрицы. Например, обра- титься ко второму элементу второй строки матрицы А можно, указав А(2,2) или А(5). Ш.3.2. Подматрицы и использование двоеточия (:) Для записи алгоритмов сложной обработки данных в компактной форме в системе MATLAB используются векторы и подматрицы. Использование нотации с двоеточием (которая используется и для генерации векторов и подматриц) и векторов вместо индексов является ключом к эффективной манипуляции этими объектами. Эффективное использование этих возмож- ностей позволяет минимизировать число явных циклов, использование ко- торых существенно замедляет работу MATLAB, и делает написанную про- грамму простой и легко читаемой. (Правда, овладение данной технологии требует от пользователя пакета определенных усилий.) Например, выраже- ние 1:5 фактически является вектор-строкой [1 2 3 4 5]. Отметим, элементы вектора могут быть не только целыми, но и действительными. Например, команда » х=0.2:0.2:1.2 создает вектор х = [0.2, 0.4, 0.6, 0.8, 1.0, 1.2], а команда »5:-1:1 создает в результате вектор [54321]. Для создания и вывода на экран таблицы синусов необходимо выпол- нить следующую последовательность команд: » х = [0.0:0.1:2.0]'; % транспонирование вектора » у = sin(x); % вычисление вектора, содержащего значения sin » [х у] % вывод таблицы значений Отметим, что, так как sin является скалярной функцией (т. е. функцией, действующей поэлементно), результатом ее применения к вектору х будет вектор у. Для доступа к подматрицам может быть использовано двоеточие. На- пример, А(1:2,3) является вектор-столбцом, состоящим из двух первых эле- ментов третьего столбца матрицы А: » А(2:3,3) ans = 6 9 556
Приложения Двоеточие само по себе означает всю строку или весь столбец, например: » А(:,3) ans = 3 6 9 » А(3,:); ans = 7 8 9 В качестве индекса подматрицы может использоваться произвольный целый вектор: » А(1,[2 3]) ans = 2 3 Описанные способы индексирования могут использоваться с обеих сто- рон знака присваивания. Например, после выполнения команды » А(:,[2 4 5]) = В(:,1:3) 2,4 и 5-й столбцы матрицы А будут заменены на первые три столбца матрицы В. П1.3.3. Функции построения матриц Имеются следующие стандартные функции для построения матриц: eye(m,n) - создание единичной матрицы размером mxn; zeros(m,n) - создание нулевой матрицы размером mxn; ones(m,n) - создание матрицы размером mxn, каждый элемент которой равен единице; diag(x) - создание матрицы, у которой на главной диагонали стоят эле- менты вектора х; diag(A) - создание матрицы, у которой на главной диагонали стоят диа- гональные элементы матрицы А; triu(A) - создание верхней треуюльной матрицы, элементы которой, расположенные на главной диагонали и выше главной диагонали равны со- ответствующим элементам матрицы А; tril(A) - создание нижней треугольной матрицы, элементы которой, рас- положенные на главной диагонали и ниже главной диагонали, равны соот- ветствующим элементам матрицы А; 557
Компьютерное моделирование физических процессов в пакете МА TLAB П1.4. Операции, выражения и переменные П1.4.1. Правила записи операторов Пакет MATLAB является интерпретирующим языком непосредственных вычислений. Это означает, что выражения, которые вы вводите, интерпрети- руются и вычисляются. Операторы пакета MATLAB обычно имеют форму: » имя переменной = выражение или просто » выражение Выражение, как правило, формируется из операторов, функций и имен переменных. После выполнения выражения генерируется матрица, которая выводится на экран и присваивается соответствующей переменной для по- следующего использования. Если имя переменной в левой части и знак - отсутствуют, автоматически генерируется переменная ans (answer - ответ), которой присваивается результат вычислений. Обычно оператор завершается клавишей <Enter>. Однако при необхо- димости оператор может быть продолжен на следующей строке. Для этого его необходимо завершить тремя или более точками, после которых следует <Enter>. С другой стороны, в одной строке может быть несколько операто- ров, разделенных запятой или точкой с запятой. Если последним символом в строке является точка с запятой, то вывод значений результата не производится, но присвоение значения выражения переменной выполняется. Это помогает подавить вывод ненужных проме- жуточных результатов. Важно помнить, что MATLAB различает строчные и прописные буквы в именах команд, функций и переменных. Для получения списка всех переменных, расположенных в рабочем про- странстве, используется команда who. Переменная может быть удалена из рабочего пространства командой clear <имя_переменной>. Команда clear без аргументов очищает все непостоянные переменные, расположенные в рабочем пространстве. Примером постоянной переменной является пере- менная eps (epsilon), значение которой по умолчанию равноЮ 6. Данная пе- ременная используется для оценки точности вычислений итеративных про- цессов. Вывод на дисплей или вычисления могут быть прерваны на большинстве компьютеров, не покидая MATLAB, с помощью комбинации клавиш <Ctrl>+<C> (<Ctrl>+<Break> на PC). Ш.4.2. Матричные операции В пакете MAI LAB доступны следующие матричные операции: <+> - сложение: 558
Приложения < -> - вычитание; < *> - умножение; < л> - возведение в степень; < ’> - транспонирование; < \> - левое деление < /> - правое деление Данные матричные операции применимы, конечно, и к скалярам - мат- рицам 1x1. Если размерность матриц не соответствует используемой опера- ции, то система генерирует сообщение об ошибке за исключением случаев, когда одним из операндов является скаляр, потому что в этом случае опера- ция выполняется между скаляром и каждым элементом матрицы второго операнда. Отметим, что операция возведения в степень применима только для квадратных матриц. Если А является невырожденной квадратной матрицей, а b - вектор- столбец или вектор-строка, соответственно, тогда вектор х = А\Ь является решением уравнения А -х = Ь, а вектор х = b/А является решением уравнения хА =Ь. Если А - квадратная матрица, то при левом делении для факториза- ции используется метод исключения Гаусса. Если матрица не квадратная, то для ее факторизации используется метод ортогонализации Хаусхольдера с ведущим столбцом, а приведенная матрица используется для решения не- дили переопределенной системы уравнений в смысле наименьших квадра- тов. Правое деление определяется в терминах левого деления по формуле Ь/А = (А\ЬУ. Ш.4.3. Операции с массивами Матричные операции сложения и вычитания действуют поэлементно, а ос- тальные приведенные выше операции - нет, они являются матричными опера- циями. Следует отметить, что приведенные выше операции \ / могут стать поэлементными, если перед ними поставить точку. Например, команда » [1,2,3,4].*[1,2,3,4] или » [1,2,3,4].л2 дадут один и тот же результат ans= [1,4,9,16] П1.4.4. Сохранение данных из рабочей области При выходе из системы MATLAB значения всех переменных, находя- щихся в рабочей области, теряются. Для сохранения их значений на диске в нетекстовом формате в файле с именем matlab.mat перед выходом из паке- та необходимо выполнить команду save. Для восстановления ранее сохра- 559
компьютерно^ модс.шроеапке финте^гпх процессов в им: те MATLAB пенных значений переменных иеппльзугт ея команда load, восстанавливаю- щая все переменные рабочею пространства. 111.5. Операторы for, while, if, case и операторы отношения Операторы управления MATLAB for while, if, case и операторы отно- шения (and. or. xor. not) при использовании ь своей основной форме рабо- тают так же, как и в большинстве языков программирования. П1.5.1. Цикл for Например, для данного п. оператор » х - [ ]; for i = 1:5,x=[x,iA2], end x - 1 X = 1 4 x = I 4 9 x -• 14 9 16 x ~ 1 4 9 16 25 » создает определенный вектор размерности и, оператор » х = [ ]; for i ~ 5:-l:l,x=[x,iA21, end x ~ 25 x = 25 16 x = 25 16 9 x = 25 16 9 4 x = 25 16 9 4 1 создает вектор с теми же моментами по размещенными в обратном поряд- ке. Заметим. что матрица может быть пустой ' например, в спучае оператора х = I ] ) Последовательность операторов. » П1=3; 560
Приложения n=3 for i = l:in for j = l:n H(i, j) = l/(i+j-l); end end H H = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 создает и выводит на экран матрицу Гильберта размерности mxn. Точка с запятой, которая завершает внутренний оператор, предотвращает вывод на экран ненужных промежуточных результатов. П1.5.2. Цикл while В общем виде цикл while записывается следующим образом: while <условие> <оиераторы> end <операторы> будут повторяться до тех пор, пока <условие> будет оста- ваться истинным. Например, для заданного числа а приведенная далее по- следовательность операторов вычислит и выведет на дисплей наименьшее неотрицательное число п, такое что пл2 < а: » п = 0;а=100; » while пл2 < а n = n + 1; end п п= 10 П1.5.3. Условный оператор if В общем виде простой оператор if записывается следующим образом: if <условие> <операторы1> else <операторы2> end 19 -Л576 561
Кохтыотерпое моделирование физических процессов в пикете MA1LAB <операторы!> выполняются, если <условие> истинно, <операторы2> - сс ли <условие> ложно. В пакете MATLAB возможно также множественное ветвление, например, if п < О parity = 0; elseif remln,2) == 0 9? если условие п < 0 не выполняется parity = 2; % если число п четное else parity = 1; % если число п нечетное end При использовании двухвариантного условного оператора часть, связан- ная с elseif, не используется. П1.5.4. Оператор переключения case При необходимости построить конструкцию ветвления с более чем двумя логическими условиями, удобнее использовать не вложенные опера- торы if, а оператор переключения switch ... case. Этот оператор имеет сле- дующую структуру: switch <выражение> % <выражение> - обязательно скаляр или строка case <значение1> <операторы!> % <операторы1> выполняются, если % <выражение> = <значение1> case <значение2> <операторы2> % <операторы2> выполняются, если % <выражение> = <значение2> otherwise <операторы> % <операторы> выполняются, если <выражение> % не совпало ни с одним из значений П1.5.5. Условия (операторы отношения) В MATLAB используются следующие операторы отношения: < - меньше чем > - больше чем <= - меньше или равно >= - больше или равно = = - равно .= - не равно Отметим, что знак = используется в операторах присваивания, в то вре- мя как в операторах отношения используется знак ==. Операторы огноше- 562
Приложения ния (или, другими словами, логические переменные, которые они создаю!) метут объединяться с помощью следующих логических операторов: &-И I -ИЛИ . -НЕ Операторы отношения, примененные к скалярам, также возвращают скаляр, значение которого равняется 1 или 0 в зависимости от того, является ли результат истиной или ложью. Операторы отношения, примененные к матрицам одного размера, воз- вращают матрицу того же размера, у которой в качестве элементов стоят О или I, в зависимости от соот ношения между соответствующими элементами исходных матриц. Операторы while и if интерпретируют отношение между матрицами как истинное в том случае, если результирующая матрица не имеет нулевых элементов. Например, если необходимо выполнить оператор <операторы>, когда матрицы А и В совпадают, следует использовать оператор соотношения if А == В <операторы> end Если необходимо выполнить оператор в том случае, когда матрицы А и В не равны, можно использовать следующий оператор if А • В else <операторы> end Ш.6. Функции MATLAB В системе MATLAB существует большое количество функций, создан- ных разработчиками системы, многие из которых предоставлены в виде гп- файлов, содержащих исходные тексты. Можно подойти к классификации данных функций различными способами, например, по областям их исполь- зования (тригонометрические, спецфункции, функции линейной алгебры и т. д.). Далее мы используем подход, основанный на виде аргумента функ- ции: скаляр, вектор, матрица. П1.6.1. Скалярные функции Скалярные функции MATLAB действуют только на скаляры. Если аргу- ментом данных функций является матрица, то они действуют поэлементно. К таким функциям, например, относятся sin asin exp abs round cos acos log (натуральный логарифм) sqrt floor tan atan rem (остаток от деления двух чисел) sign ceil 563
Компьютерное мпоелнроемн^ филе-елких пробел <>« в накс/т MATL-ltt Ш.6,2. Векторные функции Ар1ументами векторных функций являются вскчоры (строки или столб- цы). Если в качестве аргумента функции указана матрица размера mxn (in >= 2), то данная функция действует посголбцово, г. е результатом дей- ствия является вектор-етолбеи, каждый элемент которого является резу.ть татом действия этой функции на соответствующий столбец. Построчное действие такой функции (если необходимо) может быть достигнуто использованием операции транспонирования. Некоторые из этих функций приведены далее: max sum median any min prod mean ail sort std Например, максимальный элемент прямоугольной матрицы находится с помощью команды max(max(A)), а не с помощью шах(А), так как резуль- тат, возвращенный функцией тах(А) - вектор, каждая компонега которого есть максимальный элемент соответствующего столбца. Ш.6.3. Матричные функции Наибольшую мощь системе MATLAB дают матричные функции, наибо- лее употребительные из которых приведены ниже: eig - собственные значения и собственные вектора; chol- факторизация Холсцкого; svd - сингулярная декомпозиция; inv - обратная матрица; lu - LU-факторизация; qr -• QR-факторизация; hess - вычисление формы Хессенберга; schur - декомпозиция Шура; rref - приведение к треугольной форме методом Гаусса; ехрт - матричная экспонента: sqrtm - матричный корень квадратный; poly - характеристический полином; det - определитель; size - размерность; norm - норма вектора или матрицы; cond - число обусловленности; rank - ранг матрицы; Функции MATLAB могут возвращать одновременно несколько пере- менных. Например, функция у = eig(A), или просто eig(A) 1 еиерирует век- 564
Приложения тор-столбец, содержащий собственные значения матрицы А, в то время как оператор [LT,D] = eig(A) генерирует матрицу И, чьи столбцы являются соб- ственными векторами А, а диагональная матрица 1) содержит на главной диагонали собственные значения этой матрицы. Приложение 2. М-ФАЙЛЫ MATLAB может выполнять последовательность операторов, записанных в файл на диске. Такие файлы называются m-файлами, потому что имена этих файлов имеют вид <имя>.ш. Большая часть работы в MATLAB состо- ит в создании, редактировании и выполнении таких m-файлов. Существует два типа m-файлов: файлы-программы (или сценарии) и файлы-функции. П2.1.1. Файлы-программы Файлы-программы состоят из последовательности обычных операторов пакета MATLAB. Если m-файл с таким сценарием имеет имя, например, in- verse.m, то команда inverse, введенная в командной строке, вызовет выпол- нение последовательности операторов, находящейся в данном файле. Пере- менные в программе являются глобальными и изменят значения таких же переменных (если таковые есть) в рабочей области текущей сессии. Про- граммы или сценарии часто используются для ввода данных в большие мат- рицы; в таких файлах легко исправить ошибки ввода. Если, например, файл на диске с именем data.m содержит строки А=[ 1234 5678 ]; то выполнение команды data приведет к тому, появлению в рабочей облас- ти матрицы А. Внутри m-файлов можно ссылаться на другие m-файлы, в том числе и рекурсивно на самого себя. П2.1.2. Файлы-функции Файлы-функции фактически дают возможность расширять MATLAB, поскольку определенные пользователем новые функции, специфические для решения конкретных задач, имеют тот же статус, что и другие функции MATLAB. Переменные в функциях являются по умолчанию локальными, но начиная с версии 4.0 и выше, разрешено объявлять глобальные перемен- ные (global). Рассмотрим пример файла функции, находящейся в файле randint.m function z = randint(m,n,a,b) 565
Компьютерное моделирование физических процессов в пакете MATLAB % randint(m,n,a,b) - функция, возвращающая случайную матрицу % с целыми элементами из диапазона [а,Ь] % randint(m,n) - функция, возвращающая случайную матрицу с целыми % элементами из диапазона [0,9] if nargin < 3, а = 0; b = 9; end z = floor((b-a+l)*rand(m,n)) + a; Отметим, что совпадение имени функции и имени файла является в па- кете MATLAB обязательным условием. Первая строка функции содержит объявление выходных аргументов, имени функции и входные аргументы (списка формальных параметров). Без такой строки весь следующий файл является программой (или сценарием), но не функцией. Так, например, оператор г = randint(4,5) приведет к пере- даче чисел 4 и 5 переменным m и п, а выходной результат будет передан переменной z. Поскольку переменные в файле-функции локальные, их име- на никак не влияют на имена и значения переменных в текущей рабочей об- ласти MATLAB. Символ % указывает на то, что вся строка символов после него является комментарием и игнорируется при исполнении. Тем не менее несколько первых строк-комментариев, которые являются кратким описанием данной функции, доступны при вводе оператора, т. е. являются той помощью, кото- рая вызывается с помощью команды help randint. Как показал опыт работы с пакетом MATLAB версии 6.0-6.2, при использовании в комментариях строчной буквы я возникает ошибка периода исполнения. Выход из данной ситуации состоит в использовании прописной (заглавной) буквы Я, что по- зволяет избежать указанной ошибки. Отметим, что здесь мы использовали функцию nargin, возвращающую длину списка формальных параметров функции. Использование функции nargin в данном примере позволяет установить значение отсутствующих входных аргументов по умолчанию переменных а и Ь. В общем случае на- личие такой функции позволяет использовать функции с переменным чис- лом входных аргументов и в зависимости от их числа направлять вычисле- ния по разным логическим веткам функции. Функция может иметь множественные выходные аргументы, например: function [mean, stdev] = STAT(x) % STAT - функция, возвращающая для вектора х, среднее значение % и стандартное отклонение функция STAT возвращает для матрицы х % две строки, первая из которых содержит средние значения, % вторая - стандартные отклонения, соответствующих столбцов матрицы х [m n] = size(x); if т == 1 566
Приложения m = n; % если входные данные вектор end mean = sum(x)/m; stdev = sqrt(sum(x.A2)/m - mean.A2); Данный файл следует записать на диск под именем stat.m. Если ввести команду »[xm,xd]=stat(x) то, переменным xm, xd будут присвоены среднее значение и стандартное отклонение элементов вектора х. Несмотря на наличие нескольких выход- ных аргументов, можно присвоить значение функции одной переменной. Например, xm = stat(x) (никаких скобок вокруг хт не требуется) присвоит хт среднее значение х. Отметим, оператор х.А2, который является возведением в степень каж- дого элемента вектора х, оператор с функцией sum, которая является век- торной функцией (см. прил. 1), функцию sqrt, которая является скалярной функцией (см. прил. 1.), и деление в выражении sum(x)/m, которое является матрично-скалярной операцией. Другим примером является функция, позволяющая вычислить наиболь- ший общий делитель двух чисел. function [b, steps] = bisect(fun, х, tol) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % функция, возвращающая решение уравнения fun(x)=0 методом % половинного деления % входные переменные: % fun - строка, содержащая имя вещественной функции, зависящей от % вещественной переменной % х - начальное приближение, используемое для поиска корня % tol - переменная, определяющая точность нахождения корня % выходные переменные: % b - значение корня % step - матрица, содержащая значения корня и соответствующие значения % функции на концах отрезка на каждом шаге вычислительного процесса if nargin < 3, tol = eps; end % проверка длины списка формальных % параметров, если значение переменной % tol не указано, то точность корня % определяется встроенной переменой eps trace = (nargout == 2); % проверка длины списка выходных параметров, % если список состоит из двух переменных, то trace = 1 % выбор шага изменения переменной х if х ~= О 567
Компьютерное моделирование физических процессов в пакете MATLAB dx = х/20; else dx = 1/20; end; a = x - dx; % левый конец отрезка fa = feval(fun,a); % значение функции в левом конце отрезка b = х + dx; % правый конец отрезка fb = feval(fun,b); % значение функции в правом конце отрезка % поиск отрезка, на котором функция меняет знак while (fa > 0) == (fb > 0) dx = 2.0*dx; a = x - dx; fa = feval(fun,a); if(fa>0) -=(fb>0) break end; b = x + dx; fb = feval(fun,b); end; if trace steps = [a fa; b fb]; end; % основной цикл while abs(b - a) > 2.0*tol*max(abs(b),1.0) c = a + 0.5*(b - a); fc = feval(fun,c); if trace steps = [steps; [c fc]]; end; if(fb>0)== (fc>0) b = c; fb = fc; else a = c; fa = fc; end; end; Здесь для вычисления значения функции, имя которой передается в функцию bisect через строковою переменную fun, используется функция feval, аргументами которой являются имя функции и координата точки, в которой вычисляется значение данной функции. Отметим, что некоторые функции MATLAB являются встроенными, в то время как другие поставляются в виде m-файлов. Текст реально имеющихся 568
Приложения m-файлов (пакета MATLAB или ваших собственных) можно просмотреть с помощью команды type <имя_функции>. П2.1.3. Текстовые строки, сообщения об ошибках Текстовые строки вводятся в MATLAB в виде текста в одинарных ка- вычках. Например, оператор s = 'This is a test' присваивает данный текст переменной s. Вывод текстовой строки осуществляется с помощью оператора disp. На- пример, оператор disp(s) выведет на экран сообщение: This is a test Сообщения об ошибках лучше выводить с помощью функции error, так как после обращения к данной функции выполнение m-файла будет пре- кращено. Например, если в процессе выполнения m-файла будет выполнен оператор error('Sorry, the matrix must be symmetric'), то после вывода со- общения на экран выполнение m-файла будет прекращено. В m-файле может быть запрос на интерактивный ввод данных, организо- ванный с помощью оператора input. Когда вводится оператор iter = input ('Введите число итераций:'), на экран выводится запрос на ввод, и выпол- нение программы приостанавливается до того момента, пока пользователь не введет с клавиатуры требуемые входные данные. После нажатия клави- ши Enter данные присваиваются переменной iter, и выполнение программы будет продолжено. П2.2. Работа с ш-файлами Во время работы в MATLAB часто возникает необходимость создавать или редактировать m-файлы, после чего возвращаться в командное окно пакета MATLAB для отладки и/или вычислений. Начиная с версии 5.0 (в ОС Windows-95) в пакете имеется специальный редактор/отладчик, в ко- тором можно исправлять текст m-файлов и выполнять пошаговую отладку программы. Для работы с редактором/ отладчиком необходимые т-файлы должны быть доступны. Для этого либо текущая директория должна быть директорией с вашими файлами, либо необходимо проложить туда путь (в смысле MS DOS). Это можно сделать либо с помощью команд MS DOS непосредственно из командного окна (команда cd), либо с помощью пункта меню Fiie/Set Path, который позволяет установить путь к соответствующим папкам. П2.2.1. Список путей доступа Для поиска m-файлов система MATLAB использует механизм путей доступа, поскольку m-файлы записываются в каталоги или папки файловой 569
Компьютерное моделирование физических процессов в пакете MATLAB системы. Например, при поиске файла с именем test пакет MATLAB вы- полняет следующие действия: 1) просматривает, не является ли test именем переменной; 2) просматривает, не является ли test встроенной функцией; 3) ищет в текущем каталоге m-файл с именем test.m; 4) ищет m-файл с именем testm во всех каталогах списка путей доступа. Реально применяемые правила поиска являются более сложными из-за ограничений, которые связаны с использованием подфункций*, личных (private) функций и объектно-ориентированных механизмов. Однако приве- денный выше упрощенный порядок поиска точно отражает механизм поис- ка m-файлов, с которыми обычно работает пользователь. П2.2.1.1. Работа со списком путей доступа В процессе сеанса работы можно вывести на терминал или внести изменения в список путей доступа, используя следующие функции: • path - выводит на экран список путей доступа; • path (s) - заменяет существующий список списком s; • addpath /home/lib и path(path,7home/lib') - добавляют новый каталог текущего подкаталога в список путей доступа; • rmpath ZhomeAib - удаляет путь /home/lib из списка. Список путей доступа, используемый по умолчанию, определен в файле pathdef.m, который размещен в каталоге local; этот файл выполняется при каждом запуске пакета MATLAB. Кроме работы из командной строки существует средство просмотра пу- тей доступа Path Browser (см. далее), которое поддерживает удобный гра- фический интерфейс для просмотра и изменения списка путей. П2.2.1.2. Текущий каталог Пакет MATLAB использует понятие текущего каталога при работе с т- и mat-файлами во время сеанса работы. Начальный текущий каталог определен в файле запуска, который ас- социирован с ярлыком запуска пакета MATLAB, расположенном на рабо- чем столе. Для вывода текущего каталога на экран терминала предназначена ко- манда cd. Для изменения текущего каталога следует использовать команду cd <новый путь доступа>. Внутри функций допускается определение других функций, при этом следует иметь в виду,что доступ к таким функциям возможен только из функций, внутри которых они определены. 570
Приложения П2.2.1.3. Средство просмотра и редактирования путей доступа Path Browser Как было указано выше, при работе в системе Windows-95 имеется спе- циальное средство для просмотра и изменения путей доступа Path Browser (рис. П2.1). Показанное далее окно открывается либо из меню File/Set Path командного окна, либо с помощью кнопки на инструментальной панели. I Current Directory QB | C:\Progra~l\MatlabR12\woi:k jzd "'.H tf [ л All files | File Type |Last Modified |Desci | Г~1 п-scripts Folder 26-мар-2002 10:37 4 (U A__Tor. HL M-file 25-май-2002 04:57 for i ^Acc.hl H-file 26-ИЮН-2002 10:57 0Acc2.m H-file 10-икл-2002 06:03 0 Action, m M-file 09-июл-2002 08:49 M-file 27-май-2002 081-20 Angle.m H-file 20-маи-2002 07:08 |^| Angle 1. in H-file 20-май-2002 05:22 < 1 ► ( Command History Current Directory 1 Рис. П2.1. Окно Path Browse После дополнения списка путей доступа необходимо сохранить новый путь с помощью пункта меню File/Save Path, в противном случае установленный путь будет известен системе только на время одного сеанса работы. П2.2.2. Использование редактора/отладчика Редактор/отладчик предоставляет как средства редактирования текста т- файла, так и средства пошаговой его отладки. Один из способов вызова ре- дактора - вызов из командной строки MATLAB с помощью команды edit. Например, команда edit test откроет встроенный редактор для редактирова- ния файла test.m, если в меню File в диалоговом окне Preferences не уста- новлен вами другой редактор. Можно открыть редактор и другим способом - с помощью меню File/New или кнопки New File на панели инструментов (см. далее). Для от- крытия существующего m-файла выберите пункт File/Open или щелкните на кнопке Open File. После вызова редактор/отладчик будет иметь вид, показанный на рис. П2.2. 571
Компьютерное моделирование физических процессов в пакете MATLAB Fie Edt View:: Text Debug Breakpoints' Web Wridow Help -=to Save' • QrH-S Save As,.. Save да Source Control./ • ' Import Date... Save Workspace As... Set Path... Preferences... Prtrt;..;<; Orl+F )-psi(i+l)-psi(1-1))/dxA2; 1 СД... i2\work\Variation.m 2GV-'^I^* *«ri4WASh-m'-.Й 3C:t.^t^wwki₽wrier..ffl.' : 4 O\...bRl^weri^P3ckage.m K+L)-psi(N+2)-psi(N))/dxA2; +N+2; 5): (1) ’psi (i); 26 -i dV=dpsi2’V(-Xiax+(i-l)»dx); 27—1 dK-(dpsi2-dpsi’(psi(i+l)+psi(i-l)))/dxA2; Мйедя!!»»^ Ready Рис. П2.2. Общий вид редактора/отладчика Редактор, используемый в системе, имеет синтаксическую раскраску, т. е. слово или символ по мере ввода приобретают тот цвет, который соот- ветствует их типу. Редактор различает такие типы вводимых слов: • комментарии; • ключевые слова; • незаконченные строки; • законченные строки; • другой текст. С помощью пункта меню Tools/Fonts можно настроить такие важные параметры, как используемый шрифт. Это особенно важно для работы с русским текстом, поскольку не все шрифты правильно воспроизводят рус- ский текст. В остальном данный редактор не отличается от обычного мно- гооконного текстового редактора - в нем работают все редактирующие кла- виши (Del, Bspace, Home и т. д.). При редактировании файлов вы можете непосредственно перейти к требуемой строке при помощи пункта меню Edit/GoTo Line и указать номер требуемой строки в появившемся окне. По- сле редактирования файла и повторного его запуска из командного окна же- лательно предварительно сохранить новый вариант файла. Но можно запус- кать редактируемый файл на счет, не выходя из редактора (т. е. не переходя 572
Приложения в командное окно) с помощью пункта меню Debug=>Save and Run. При этом предварительное сохранение текста исправлений не требуется. Одна из важных особенностей данного редактора состоит в том, что по- сле проведения вычислений можно в редакторе просмотреть значения пе- ременных, которые они имеют в текущий момент в рабочей области (рис. П2.3.). Для этого достаточно установить курсор мыши на этой пере- менной, и появится прямоугольник с желтым фоном, на котором выводится текущее значение переменной. Workspace . 0 | ШI © s,ad< Name :. : site ;' Bytes Class 11X1 Is ; double array На |1Х1 8 double array labjans ioxo 0 char array Нп |lxl 8 double array Из !1х4 8 char array Рис. П2.3. Окно просмотра и редактора используемых переменных Если переменная представляет собой большую матрицу, то увидеть це- ликом ее не удастся. Для просмотра (и возможного исправления при отлад- ке) всех значений матрицы необходимо перейти в окно Workspace и вы- полнить двойной клин по имени строки, содержащей имя выбранной пере- менной. П2.2.3. Отладка т-файлов Отладка программного кода - это процесс, в ходе которого могут быть выявлены ошибки двух видов: 1) синтаксические, связанные с неточностью записи имен т-функций и/или арифметических выражений. Пакет MATLAB обнаруживает боль- шинство синтаксических ошибок, сопровождая их сообщением об ошибке с указанием номера строки соответствующего т-файла; 573
Компьютерное моделирование физических процессов в пакете MATLAB 2) ошибки периода выполнения, связанные, в первую очередь, с ошиб- ками алгоритма и приводящие к непредвиденным результатам. Как показывает опыт работы, достаточно легко можно исправить син- таксические ошибки, которые сопровождаются сообщениями о причинах их возникновения. Ошибки времени выполнения выявить более сложно, пото- му что локальная рабочая область m-функции оказывается потерянной, если ошибка приводит к возврату в рабочую область системы пакета MATLAB. Для выявления причины данной ошибки, можно использовать один из сле- дующих приемов: 1) реализовать вывод результатов промежуточных вычислений на дис- плей, удалив в соответствующих операторах точки с запятой, которые по- давляют вывод на экран промежуточных результатов; 2) добавить в m-файл команды keyboard, которые останавливают вы- полнение m-файла и разрешают проверить и изменить переменные рабочей области вызываемой m-функции. (В этом командном режиме появляется специальное приглашение К». Для просмотра значений доступных пере- менных можно использовать окно Workspace, или ввести имя соответст- вующей переменной в командной строке и нажать клавишу <Enter>. Воз- врат к выполнению функции реализуется командой return.); 3) закомментировать заголовок функции и выполнить m-файл как сцена- рий. (Это позволяет проследить результаты промежуточных вычислений в рабочей области системы.); 4) использовать отладчик системы MATLAB. Отладчик полезен для исправления ошибок во время выполнения про- граммы, так как он дает возможность отслеживать рабочие области функ- ции и проверять или изменять значения соответствующих переменных. От- ладчик позволяет устанавливать и удалять контрольные точки, т. е. специ- альным образом помеченные строки m-файла, в которых выполнение останавливается. Это дает возможность изменять содержимое рабочей об- ласти, просматривать стек вызова m-функций и выполнять m-файл по- строчно. Отладчик может функционировать как в режиме командной стро- ки, так и в режиме графического интерфейса пользователя. Далее мы рас- смотрим отладку только в режиме графического интерфейса пользователя, так как он наиболее прост и нагляден. Рассмотрим возможности отладки, которые нам предоставляет Editor/Debuger. Для его запуска используется команда edit <имя_файла> или пункт ме- ню File/Open. Можно открыть окно редактора/отладчика и с помощью пункта меню File/New/M-file. При таком варианте имя отлаживаемого фай- ла открывается уже из меню самого редактора/отладчика. Общий вид окна 574
Приложения редактора показан на рис. П2.2, а кнопки панели инструментов, которые удобнее всего использовать при отладке, показаны на рис. П2.4. NewM-file Save J. . । О @ “Г т Open file Print Cat Past Undo Show function Clear all breakpoints Run I I I I I slepul I , _____________________________________________________________f ' >9 > . Л /► Q © • ’ , ID ‘П 2J ! I II s*ep I | Copy Redo Find Set/ClearBreakpoints Step out ExitDebuggMode Рис. П2.4. Кнопки основной панели редактора/отладчика Способ использования этих кнопок понятен из их названия. Часть кно- пок представляет собой обычные редактирующие кнопки, используемые при сохранении, копировании, печати и поиске файлов в программных про- дуктах, работающих под управлением ОС Windows. Другая часть связана непосредственно с отладкой. Это кнопки установки и очистки точек оста- новки, кнопки пошагового перемещения по программе (Step) с заходом в подпрограммы (Step in) и без захода в подпрограммы (Step out), кнопка на- чала вычислений (Run) и кнопка остановки отладки (Exit Debugg Mode). Приложение 3. СОЗДАНИЕ ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ В настоящее время одним из непреложных атрибутов любой прикладной программы является интерактивный интерфейс пользователя, который раз- рабатывается для неоднократно решаемых задач с несколькими входными параметрами. Наличие интерфейса, во-первых, освобождает пользователя от необходимости вникать в детали программирования данного программ- ного продукта, во-вторых, позволяет менять исходные данные, не прекра- щая выполнения текущей программы, и в реальном времени наблюдать за изменения решения задачи. В настоящее время выработаны достаточно общие требования, которым должны соответствовать программные интерфейсы, определены основные элементы управления графическим интерфейсом. Например, если речь идет о решении учебной и/или научной задачи, обязательными элементами ин- терфейса должны быть: 1. Одно или несколько окон для визуализации результатов расчетов; 2. Редактируемые окна, позволяющие задавать значения входных пара- метров задачи; 3. Управляющие кнопки, предназначенные для запуска и остановки про- цесса расчета, вывода результатов, завершения работы с программой; 4. Поясняющие надписи (статический текст). 575
Компьютерное моделирование физических процессов в пакете MATLAB Необходимо отметить, что разработка графического интерфейса являет- ся достаточно трудоемкой задачей, которая может быть решена с использо- ванием функций графического ввода, а также специальной функцией uicon- trol, разработанной для интерактивного взаимодействия пользователя с ри- сунком. Однако для упрощения процедуры создания интерфейса поль- зователя в пакете MATLAB, как и во всех современных программных средствах, основанных на объектно-ориентированной парадигме програм- мирования, существует возможность визуального проектирования интер- фейса, называемая технологией визуального программирования. В данном приложении мы познакомимся с основными этапами техно- логии визуального программирования пакета MATLAB на примере созда- ния интерфейса задачи моделирования относительных движений материальной точки, участвующей в двух круговых движениях (гл. 1). Напомним, что в данной задаче приходится задавать значения переменных R1 - радиус первой окружности; Т1 - период обращения по первой окружности; R2 - радиус вто- рой окружности; Т2 - период обращения по второй окружности; Tfin - правая граница временного интервала, на котором вычисляются кинематические характеристики; N - число точек, в которых проводится вычисление значе- ний кинематических характеристик материальных точек. Перед созданием графического интерфейса желательно разработать его проект, т. е. изобразить на листе бумаги примерный вид вашего интерфейса. Для рассматриваемой задачи интерфейс должен содержать пять окон для ввода значений переменных Rl, Tl, R2, Т2, Tfin, N, и, соответственно, пять поясняющих надписей к каждому полю ввода значения переменной, три. кнопки, позволяющие завершить работу с программой, построить траекто- рию движения материальной точки и мгновенные значения разности отно- сительной скорости материальной точки, движущейся по окружности меньшего радиуса. Для создания графического интерфейса (GUI - Graphics User Interface) с помощью средств визуального программирования необходимо запустить соответствующую программу командой guide или через меню: File —>New —>GUI. По истечению некоторого времени, определяемого быстродействи- ем компьютера, на экране появится окно, представленное на рис. П3.1. 576
Приложения fife Edt layout Tools Sefe Puc. m.i Для ввода названия формы открыть окно Property Inspector, нажав на кнопку 1=^ или сделав двойной клик в любом месте поля формы, затем ус- тановить новое значение поля Name (рис. II3.2). Qi figure (Untitled) g£ Property Inspector Interruptible j InvertHardcopy Ыоп ;У|ОП - KeyPressFcn i-i-MenuBar. >1none И Name f— NextPlot y|add NumberTitle Off k- PaperOrientation portrait ф PaperPosition [0,25 2,5 8 6] r— PaperPositionMode ▼j manual $ Papersize [8,511) r PaperType .у, usletter j— Paperunits у inches I Pointer jr arrow U- PointerShapeCData Щ [16x16 double array] ▼! Рис. П3.2 577
Компьютерное моделирование физических процессов в пакете МЛ Т1. И< В левой части окна расположена панель управления, содержащая эле- менты интерфейса. Для размещения на панели формы окна, в котором будут выводится графики, используется кнопка . Щелкнув по данному эле- менту на панели управления и переведя мышь на панель формы, необходи- мо поместить указатель мыши, имеющий форму кресга, в ту точку, где бу- дет находиться левый верхний угол окна. Нажав и удерживая левую кнопку мыши, необходимо вытянуть получающийся прямоугольник до нужных размеров. При необходимости размещения нескольких окон на панели фор- мы повторяется описанная выше последовательность действий,____ i , j ТИТ I Надписи на панели формы создаются с помощью кнопки т.......1, которая переносится повторением описанной выше последовательности действий. После этого на панели формы появится надпись Static Text. Для изменения надписи необходимо выбрать надпись, щелкнув по ней левой кнопкой мы- ши, открыть окно Property Inspector, и ввести новый текст надписи в поле String. Для изменения цвета фона, на котором выводится надпись, следует установить новые значения поля BackgroundColor. п ‘'ФI Для создания редактируемых окон ввода используется кнопка J, ко- торая переносится повторением описанной выше последовательности дей- ствий. Для изменения значения окна установить в окне Property Inspector новое значение в поле String. Для создания и размещения кнопок на панели формы используется Грк Г кнопка ...которая переносится повторением описанной выше последова- тельности действий. Для изменения надписи на кнопке установить в окне Property Inspector новое значение в поле String. Построенные таким образом кнопки, окна вывода и редактирования, ок- на статического текста, кнопки, а также другие объекты, размещенные на панели формы, можно выровнять и установить определенные промежутки между ними с помощью панели Alignment Tools. Для включения данной Id сэ панели используется кнопка ° . Для задания ряда объектов, с которыми будут выполняться какие-либо действия, необходимо их выделить, щелкая по каждому из них при нажатой клавише Shift. Выделенные объекты отме- чаются черными точками вокруг соответствующих объектов. При необхо- димости изменить размер какого-либо объекта, размещенного на панели формы, необходимо щелкнуть по данному объекту левой кнопкой мыши и изменить размер, так же, как меняется размер любого окна Windows. Так как по умолчанию размер окна устанавливается в пикселях, это мо- жет привести к тому, что при изменении размеров окна и кнопки могут на- ехать друг на друга. Для устранения этого нежелательного явления следует 578
Прит ^сния задать единицы измерения размера всех элементов в безразмерных пере- менных — долях размера окна. Данный размер называется normalized. Для этого необходимо выделить с помощью удерживаемой клавиши Ctrl и ле- вой кнопки мыши все объекты, размещенные на форме. Затем открыть окно Property Inspector и установить в поле Units значение normalized. Анало- гично следует задать размер шрифтов -- значения поля Font Units. После разработки внешнего вида графического интерфейса необходимо сохранить этот файл на диске, вызвав стандартное окно Windows для сохра- нения файла: File —> Save. После сохранения на диске появляются два файла: NAME.m и NAME.fig (где NAME - выбранное вами имя файла;. Первый файл - это текст программы, реализующий разработанный интер- фейс, второй - набор данных, необходимых для работы интерфейса. Для за- пуска программы на выполнение достаточно в командной строке MATLAB ввести имя вашего файла Проект графического интерфейса решения задачи, рассмотренной в гл. 1, представлен на рис. ПЗ.З. F3e Edit layout Too! □ c* in a 0.6 Траектория I Относительная скорость Рис. ПЗ.З Ниже приведен соответствующий программный код, сохраненный на диске под именем Moon.m. function varargout = moon(varargin) % MOON Application M-file for moon.fig 7r FIG = MOON launch moon GUI. 579
Компьютерное -.ucU: шроьаиш фи тческих проще( <а. « т.м тс МА //. АВ С MOONCcallhack name’. ...) invoke the named callback. C bast Modified by GUIDE \2 0 16-May 2002 23:30:06 if nargin == 0 % LAUNCH GUI fig = openfigfmfilename.' reuse'); % Generate a structure of handles to pass to callbacks, and store it. handles ~ guihandles(fig); guidata(fig, handles); if nargout > 0 varargout{l} = fig; end elseif ischar(varargin{l}) C INVOKE NAMED SUBFUNC HON OR CALLBACK try [varargout{l:nargout}J ~ feval(varargin{:}); C FEVAL switchyard catch disp(lasterr); end end %l ABOUT CALLBACKS: %l GUIDE automatically appends subfunction prototypes to this file, and %! sets objects' callback properties to call them through the FEVAL ?cl switchyard above. This comment describes that mechanism. %! %l Each callback subfunction declaration has the following form: %l <SUBFUNCTION_NAME>( H, EVENTDATA. HANDLES, VAR ARGIN) % I C I The subfunction name is composed using the object's Tag and the %l callback type separated by e.g. 'slider2_Callback', %! 'figureI CloseRequestFcn', 'axisl_ButtondownFcn'. %l Tl H is the callback object’s handle (obtained using GCBO). %l %l EVENTDATA is emptv, but reserved for future use. %l Cel HANDLES is a structure containing handles of components in GUI using 9c! tags as fieldnames, e.g. handles.figure!. handles.slider?. This Cl structure is created at GUI startup using GUIHANDLES and stored in Cl the figure's application data using GUIDATA. A copy of the structure C\ is passed to each callback. You can store additional information in 580
I Ipu ц).>к епия c/c i this structure at GUI startup, arid you can change the structure c/c I during callbacks. Call guidata(h. handies) after changing your % I copy to replace the stored original so that subsequent callbacks see c7t I the updates. Type "help guihandlcs” and "help guidata" for more % I information, % | %l VARARGIN contains any extra arguments you have passed lo the %l callback. Specify the extra arguments by editing the callback c7( \ property in the inspector. By default. GUIDE sets the property to: %l <MFILENAME>('<SUBFUNCTION_NAME>. gebo, [], guidata(ccbo)) %l Add any extra arguments after the last argument, before the final % I closing parenthesis. %------------------------------------------------------ function varargout = editl_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.editl. dispfeditl callback not implemented yet.') %------------------------------------------------------ function varargout = edit2_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.edit2. disp('edit2 callback not implemented yet.') %------------------------------------------------------ function varargout = edit3_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.edit3. disp('edit3 callback not implemented yet.') %------------------------------------------------------ function varargout - edit4_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.edit4. disp('edit4 callback not implemented yet.') %______________________________________________________ function varargout = edit5_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.edit5. dlsp('edit5 callback not implemented yet ____________________________________________________ function varargout = edit6_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.cdit6. disp('edit6 callback not implemented yet .') C7( ___________________________________________________ function varargout - pushbuttonl Callbackih, eventdata, handles, varargin) ck Stub for Callback of the uicontrol handles.pushbutton I, 581
Компьютерное моделирование физических процессов в пакете MATLAB dispCpushbuttonl callback not implemented yet.') %--------------------------------------------------- function varargout = pushbutton2_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.pushbutton2. dispCpushbuttonl callback not implemented yet.') %--------------------------------------------------- function varargout = pushbutton3_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.pushbutton2. dispf pushbutton3 callback not implemented yet.') Созданный GUI, текст, которого приведен выше, не обладает никакой функциональностью — он обладает только стандартными функциями Win- dows — менять размеры окна и закрывать окно и выводить сообщения о не- которых событиях (команды disp). Событие с точки зрения интерфейса происходит при нажатии на левую кнопку мыши. Сообщения, выводимые командой disp в командное окно пакета MATLAB, призваны помочь разра- ботчику интерфейса установить взаимно однозначное соответствие между элементом управления, размещенном на панели формы, и именем соответ- ствующей ему функции. Основным средством взаимодействия графического интерфейса с функ- циями, выполняющими требуемые действия, является задание значений по- лей, определяющих свойства кнопок и редактируемых окон, называемое Callback. Значение (тип строка), присваемое данному полю, есть имя функ- ции, вызываемой при активации соответствующего объекта. Обратите вни- мание на тот факт, что в программном коде, сгенерированном редактором GUI, название каждой функции состоит из двух слов: названия того элемен- та, который вы разместили на панели формы, и названия средства взаимо- действия Callback. Дальнейшая доработка интерфейса состоит в редактировании соответст- вующих функций в тексте исходного файла, осуществляемых в текстовом редакторе пакета MATLAB. Так как перед выполнением каждого вычисле- ния программа должна получить значения переменных Rl, Tl, R2, Т2, Tfin, N, представляется целесообразным создать специальную функцию, считы- вающую значения соответствующих полей (строковые переменные) и пре- образующую их в числовые значения, текст которой приводится ниже: function read_data(handles) global Rl Tl R2 T2 Tfin N % задание глобальных переменных Rl = str2double(get(handles.editl,'String')); % преобразование значения % поля editl в число Tl= str2double(gct(handles.edit2,'String')); % преобразование значения % поля edit2 в число 582
Приложения R2 = str2double(get(handles.edit3,'String')); % преобразование значения % поля edit3 в число Т2 = str2double(get(handles.edit4,'String')); % преобразование значения % поля edil4 в число Tfin = str2double(get(handles.edit5,'String')); % поля преобразование % значения edit5 в число N = str2double(get(handles.edit6,'String')); % преобразование значения % поля edit6 в число Кнопка Выход становится функционирующей после добавления в функ- цию pushbuttonl_Callback команды close: function varargout = pushbutton l_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.pushbuttonl. close; При решении рассматриваемой задачи мы проводили два вида расчетов: 1) вычисление и визуализации траектории, 2) вычисление мгновенных зна- чений скорости движения Луны относительно Солнца. Выполнение первого вида расчетов при проектировании интерфейса мы связали с кнопкой Тра- ектория (функция pushbuttonl_Callback). Следовательно, необходимо до- полнить функцию pushbuttonl_Callback соответствующей последователь- ностью команд, описанных в 1.2: function varargout = pushbutton2_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.pushbutton2. global Rl Tl R2 T2 Tfin N % список глобальных переменных задается % в теле каждой функции read_data(handles); % получение значений переменных Rl, Tl, R2, Т2, % Tfin, N % блок вычислений и построения траектории t=O:Tfin/N:Tfin; Xz=Rl*cos(2*pi*t/Tl); Yz=Rl*sin(2*pi*t/Tl); Xm=R2*cos(2*pi*t/T2); Y m=R2*sin(2*pi*t/T2); Xotn=Xz+Xm; Yotn=Yz+Ym; plot(Xz, Y z,Xotn, Y otn); Выполнение второго вида расчетов при проектировании интерфейса мы связали с кнопкой Относительная скорость (функция pushbutton2_Callback). Следовательно, необходимо дополнить функцию pushbutton2_Callback соот- ветствующей последовательностью команд, описанных в 1.2: 583
Компьютерное моделирование физически* процессов в пакете MATLAB function varargout = pushbutton3__Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.pushbuttons. global R1 Г1 R2 T2 Tfin N % список глобальных переменных задается % в теле каждой функции read datafhandles); % получение значений переменных R1, Т1. R2, Т2. Tfin, N % блок вычислений и построения мгновенных значений % относительной скорости dt=Tfin/N; t=0:dt:Tfm; Xz=Rl*cos(2*pi*t/Tl); Yz-Rl*sin(2*pi*t/Tl); Xm=R2*cos(2*pi*t/T2); Ym=R2*sin(2*pi*t/T2); Vx=diff(Xz)/dt; Vy=diff(Yz)/dt; vx=diff(Xm)/dt; vy=diff(Ym)/dt; V=(Vx.A2+Vy.A2).A0.5-(Vx.*vx+Vy *vy)J(Vx.A2+Vy.A2).A0.5; tl=O:dt:Tfin-dt; plot(tl,V); Состояние интерфейса, после нажатия на кнопки Траектория и Отно- сительная скорость, показано соответственно на рис. П3.4 и П3.5,. ЕЕШЯаЕ5!93Жк? .* -..jst Ffe ЕЛ W Insar., Tods Wsxtaw Help ? : ' 1 5 -----,-,--------------- r-y- - ... R2- р-Q™— ПТ~ Tmew« 1* ’ < 05 • /'/ V; N- ("WOCT / • f ) •1 &L--------------<--------------------------1- •15 1 -0.5 0 0 5 1 15 Относмгельная скорость j Вьми t Рис. П3.4. Состояние интерфейса после нажатия на кнопку Траектория 584
Приложения Рис. П3.5. Состояние интерфейса после нажатия на кнопку Относительная скорость Приложение 4. ОЦЕНКА ПОГРЕШНОСТЕЙ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ Для нахождения зависимостей погрешности вычисления определенного интеграла на отрезке [а,Ь] от числа отрезков разбиения интервала интегри- рования разложим подынтегральную функцию в ряд Тейлора: /(х) = /(л,-) + /'(*; X-v - л;) + ~ /'(х,- Хх - х,-(П4.1) Тогда интеграл отданной функции на отрезке [х,-,х|И] будет равен ,г . ] J /(хНх = /(х,. )Дх + |f '(х, )(Ах)2 Д / "(х, )(Дх)3 + •. (П4.2) Оценим погрешность метода левых прямоугольников. Погрешность ин- тегрирования А, на отрезке [х(,хн1] равняется разности между точным значением интеграла и его оценкой /(x,)Av : - /(.х,)Д.г = ‘ /’(x,)(Av)2. (П4.3) Из (П4.3) видно, что основной член погрешности на каждом отрезке имеет порядок (Av)2 или, в символической записи. Аг)'). Поскольку 585
Компыотерь-н ми<)с шрование фитнес ких ироцет т- в. пакете МА11.АВ полное число отрезков равно N, a Av = (Л - «)'Л/ , то полная погрешность метода левых прямоугольников по порядку величины равна Л'А, = Af(Av)2 Аналогично можно показать, что погрешность ме- тода правых прямоугольников также пропорциональна №*. Погрешность формулы трапеций оценивается аналогичным образом. Так как значение интеграла на отрезке [лга(!|] вычисляется по формуле 1/(т)+ f(\.i )]Ах '2 , то погрешность равна j/(x)c/.r А, = ,!./<' )• /(a,.. )']Av. (114.4) Заменив в (114.4) первый член выражением (П4.2), значение функции в точке разложением в ряд Тэйлора: f(*ni) = Л-\) + f(x, )Av + - /"(%, ХАа.) ’ -г- раскрыв скобки и приведя подобные, обнаруживаем, что член, пропорцио- нальный первой производной функции, сокращается, и погрешность на од- ном отрезке равна - /"(xXAxX ®=О^Дл)3)®о(№'). Следовательно, полная погрешность формулы трапеций на отрезке [а,/?] по порядку величины рав- на o(/V'2) Так как формула Симпсона основывается на приближении функции /(х) параболой, можно ожидать, что в данном случае погрешность по по- рядку величины будет определяться членами, пропорциональными третьей производной функции. Однако последовательное повторение действий, вы- полненных при оценке погрешности метода трапеций, показывает, что эти члены сокращаются в силу их симметричности, поэтому в разложении в ряд Тейлора следует удержать член, пропорциональный /"ТаХАх)4 . Следова- тельно, погрешность формулы Симпсона на отрезке [л,,л-; + |] пропорцио- нальна /”(х;)(Дх)5, а полная погрешность на отрезке |а,Ь] по порядку ве- личины составляет . Полезно получить оценку погрешности вычисления интеграла от функ- ции, зависящей от двух переменных, который с геометрической точки зре- ния представляет собой объем фигуры под поверхностью, заданной функ- цией / ( V. л). В прямоугольном приближении данный интеграл равен сумме 586
Приложения объемов параллелепипедов с площадью основания ДлДу и вь:сщоИ, равной значению функции f(x,y} в одном из углов. Для определения погрешности разложим функцию f(x, у) в ряд Тейлора: /(х. у) = /(х,, у,) + /Дх,, у, )(х - X;) + /Дх,-, у, )(у - уД з .... (П4.5) Д', Д' - частные производны по соответствующим переменным. Погрешность вычисления интеграла Д, равна Л, = ||/(х, y)dxdy -/(ус,, у,)ДхДу . (Г14.6) Подставив (II4.5) в (П4.6), выполнив интегрирование и приведя подоб- ные, получаем, что член, пропорциональный /(х,-,у,), сокращается, а инте- грал от (х-х, )/х дает (Ах)2/2. Интеграл от данного выражения по dy дает еще один множитель Ду . Аналогичный вклад дает интеграл от члена, про- порционального (у - у, ). Так как порядок погрешности Ду также составля- ет <7(Ах), то погрешность интегрирования по прямоугольнику х, <х< хн1, У,- У У,+1 равна Д/ -|ГЛ(Л-У1) + /;и,,у,ЯДх-)3. (П4.7) Из (П4.7) видно, погрешность интегрирования по одному параллелепи- педу составляет О^Ах)3). Так имеется А параллелепипедов, полная по- грешность по порядку величины равна А(Дх)"'. Однако в двумерном случае N-----—у, поэтому полная погрешность Д, - (Ar) ~ Напомним, (Ах)- что в одномерном случае полная погрешность метода прямоугольников д,~о(а!). Соответствующие оценки для двумерных обобщений формулы трапеций и Симпсона показывают, что они соответственно равны и С^Л7-2). Вообще можно показать, что если для одномерного случая погрешность со- ставляет о(/Гс'), то в d-мерном случае она равна Отметим, что в отличие от данных методов погрешность метода Монте-Карло не зависит от размерности и меняется как Следовательно, для достаточно больших d интегрирование по методу Монте-Карло будет приводить к меньшим погрешностям при тех же значениях А. 587
ОГЛАВЛЕНИЕ Глава 1. МОДЕЛИРОВАНИЕ ОТНОСИТЕЛЬНЫХ ДВИЖЕНИЙ В КЛАССИЧЕСКОЙ МЕХАНИКЕ...............................3 I Е Введение.........................................3 i .2. Построение орбиты Луны в гелиоцентрической системе отсчета.........................................4 ЕЗ. Построение орбиты Марса в системе отсчета, связанной с Землей.......................................13 Глава 2. МОДЕЛИ ФИЗИЧЕСКИХ ПРОЦЕССОВ, ИСПОЛЬЗУЮЩИЕ ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ НГО ПОРЯДКА..............22 2.1. Моделирование остывания нагретых тел......... 22 2.2. Алгоритм Эйлера................................23 2.3. Программа для решения дифференциальных уравнений первого порядка методом Эйлера.................... 24 2.4. Опенка коэффициента остывания по экспериментальным результатам....................................... 30 2.5. Решение дифференциальных уравнений методом Рунге-Кутта 4-го порядка.......................... 42 2.6. Моделирование радиоактивного распада...........45 2.7. Моделирование цепной реакции ядерного взрыва...46 Глава 3. ДИНАМИКА МАТЕРИАЛЬНОЙ ТОЧКИ.....................49 3.1. Введение.......................................49 3.2. Движение тел в гравитационном поле Земли без учета трения...50 3.3. Движение в гравитационном иоле Земли с учетом силы трения.........................................56 Глава 4. ЗАДАЧА КЕПЛЕРА..................................63 4.1. Введение.......................................63 4.2. Уравнения движения планет......................63 4.3. Численное моделирование орбиты.................68 4.4. Проверка второго закона Кеплера................72 4.5. Пространство скоростей.........................81 4.6. Моделирование Солнечной системы............... 85 Глава 5. МОДЕЛИРОВАНИЕ СТАТИЧЕСКИХ ЭЛЕКТРИЧЕСКИХ И МАГНИТНЫХ ГЮЛЕЙ................................... 89
5.1. Электрическое поле системы неподвижных зарядов...89 5.2. Магнитное поле витка с постоянным гоком.........10(J 5.3. Магнитное ноле соленоида с постоянным током.....107 5.4. Магнитное поле тороидальной обмотки с постоянным током.. 12С? 5.5. Численное решение уравнений Лапласа и Пуассона.. 128 ! лава 6. МОДЕЛИРОВАНИЕ ДВИЖЕНИЯ ЭЛЕКТРИЧЕСКИХ ЗАРЯДОВ В ЭЛЕКТРИЧЕСКИХ И МАГНИТНЫХ ПОЛЯХ............146 6.1. Введение........................................146 6.2. Рассеивание частиц в центральном поле. Опыт Резерфорда .... 1 47 6.3. Моделирование движения электрических зарядов в постоянном магнитном поле......................162 6.4. Моделирование движения электрических зарядов в постоянных электрических и магнитных полях.....168 Глава 7. ФУРЬЕ-АНАЛИЗ НЕПРЕРЫВНЫХ И ДИСКРЕТНЫХ ФУНКЦИЙ..............................................173 7.1. Введение........................................173 7.2. Разложение периодических сигналов в ряды Фурье..173 7.3. Эффект Гиббса................................. 177 7.4. Спектральный анализ непрерывных непериодических сигналов.............................................183 7.5. Спектральный анализ дискретных функций..........187 7.6. Спектральный анализ дискретных функций конечной длительности.....................................190 7.7. Быстрое преобразование Фурье.................. 193 Глава 8. МОДЕЛИРОВАНИЕ КОЛЕБАТЕЛЬНЫХ ПРОЦЕССОВ...200 8.1. Линейный гармонический осциллятор...............200 8.2. Математический маятник..........................205 8.3. Затухающие колебания............................211 8.4. Вынужденные колебания линейного гармонического осциллятора........................................ 213 Глава 9. МОДЕЛИРОВАНИЕ ВОЛНОВЫХ ЯВЛЕНИЙ...................216 9.1. Введение.................................... 216 9.2. Моделирование свободных колебаний цепочки связанных гармонических осцилляторов.......................216 1ХЗ. Моделирование вынужденных колебаний цепочки связанных гармонических осцилляторов.................232 9.4. Моделирование волновых движений............... 240 589
Компьютер: юе моделирование физических процессов в пакете MAJ LAB 9.5. Фурье-анализ волновых пакетов, движущихся в среде с дисперсией...........................................24 9.6. Интерференция и дифракция.................... 2бо 9.7. Геометрическая оптика........................... 27 9.8. Поляризация.......................................27 • Глава 10. МОДЕЛИРОВыАНИЕ СИСТГ СОСТОЯЩИХ ИЗ БОЛЬШОГО ЧИСЛА ЧАСТИЦ (МЕТОД МОЛЕКУЛЯРНОЙ ДИНАМИКИ)............................................28? 10.1. Введение.........................................28 10.2. Матех агическая модель статистической системы.'..28-- 10.3. Численный алгоритм решения системы уравнений движения 28;: 10.4. Моделирование системы, состоящей из большого числа частиц, методом молекулярной динамики.............. 291 10.5. Оценка макроскопических характеристик статистической системы........................................... 30'1 10.6. Оценка коэффициентов переноса в методе молекулярной динамики ...................................... 315 10.7. Моделирование фазовых переходов методом молекулярной динамики................................321 10.8. Заключение.....................................324 Глава 11. МЕТОДЫ МОНТЕ-КАРЛО........................ ....326 11.1. Введение.................................. 326 11.2. Численные методы интырирования функций, зависящих от одной переменной..................................326 11.3. Основы метода Монте-Карло.................. 330 11.4. Алгоритм генерации случайных чисел с равномерным законом распределения................................342 11.5. Алгоритм Метрополиса......................... 345 Глава 12. СЛУЧАЙНЫЕ БЛУЖДАНИЯ ............................352 12.1. Введение.......................................352 12.2. Одномерные случайные блуждания.................352 12.3. Метод случайных блужданий на плоскости.........364 12.4. Моделирование движения решеточного газа........385 12.5. Непрерывная модель случайных блужданий.........391 Глава 13 МОДЕЛИРОВАНИЕ СТАТИСТИЧЕСКОЙ СИСТЕМЫ В ПРОЦЕССЕ РЕЛАКСАЦИИ И 6 ОС 1ОЯНИП РАВНОВЕСИЯ..,394 13.1. Введение................................ 394 5М0
Оглавление 13.2. Моделирование процесса релаксации статистической системы...............................................395 13.3. Эшропия.........................................406 Глава 14. .МОДЕЛИРОВАНИЕ МИКРОКАНОНИЧЕСКОГО АНСАМБЛЯ МЕТОДОМ МОНТЕ-КАРЛО..........................415 14.1. Микроканонический ан^мбль.......................415 14.2. Моделирование микр^манонического ансамбля.......416 14.3. Модель Изинга...................................426 Глава 15 МОДЕЛИРОВАНИЕ КАНОНИЧЕСКОГО АНСАМБЛЯ МЕТОДОМ МОНТЕ-КАРЛО................:..................444 15.1. Введение........................................444 15.2. Канонический ансамбль...........................444 15.3. Алгоритм Метрополиса для канонического ансамбля.446 15.4. Моделирование двумерной модели Изинга методом канонического ансамбля................................458 Глава 16 МОДЕЛИРОВАНИЕ КВАНТОВЫХ СИСТЕМ.....................472 16.1. Введение........................................472 16.2. Стационарное уравнение Шредингера...............474 16.3. Моделирование колебаний двухатомной молекулы в квазиклассическом приближении..................... 487 16.4. Нестационарное уравнение Шредингера.............506 16.5. Оценка энергии основного состояния квантовой системы методом Монте-Карло...................................521 16.6. Оценка энергии основного состояния квантовой системы вариационными методами Монте-Карло....................529 Приложение 1 ОСНОВНЫЕ ПРИЕМЫ РАБОТЫ.........................539 ПЕГ Введение в пакет MATLAB...........................539 П1.2. Работа в командном окне....................... 550 111.2.1. Вход в систему MATLAB.................. 550 111.2.2. Интерактивный доступ к справочной информации и документации........................ 551 111 2 3. Редактирование и повторный вызов командной строки..................................553 111.2.4. Формат вывода............................554 111.2.5. Копия протокола сессии...................554 III .3. Создание матриц............................... 554 111.3.1. Явное задание матриц.....................5д5 II].3.2 Подматрицы и исполнзование двоеточия (:)..тлб 591
Компьютерное фпшческил iipoifCi < <><. в у--. Мл IL АР 111.3. 3. Функции построения матриц............................ ' 111.4. Операции выражения и переменные............................. s58 П1.4.1. Правила записи оператор-к..............................'Ф'З П1.4.2. Матричные операции...................................... 111.4.3 Операции с массивами ...................................559 III. 4.4. Сохранение данных из рабочей области...................... 55 ч III.5. Операторы for, while, if, case и операторы отношения.........560 111.5.1. Цикл for...............................................5 60 Ш.5.2. Цикл while...............................................561 Ill.5 3. Условный оператор if.....................................................561 П1.5.4. Оператор переключения case..........................................562 111.5.5. Условия (операторы отношения)..........................562 П1.6. Функции MATLAB................................................ 563 /71.6.1. Скалярные функции.......................................................... 563 111.6.2. Векторные функции............................... .....564 111.6.3. Матричные функиии.................................... 564 Приложение 2. М-ФАЙЛЫ........................................................565 772.1.1. Файлы-программы.................................... 565 П2.1.2. Файлы-функции...........................................565 П2.1.3. Текстовые строки, сообщения об ошибках..................569 П2.2. Работа с т-файлами........................................... 569 П2.2.1. Список путей доступа....................................569 П2.2.2. Использованиередактора/отладчика..................... .571 112.2.3. Отладка т-фаилов................................... ..573 Приложение 3. СОЗДАНИЕ ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ...............................575 Приложение 4. ОЦЕНКА ПОГРЕШНОСТЕЙ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ............................................................. 585 592

'line www.softline.ru 119991 г. Москва, ул. Губкина, д. 8 тел.: (095) 232-0023 e-mail: info@softline.ru The ВСЕ ДЛЯ IAVKM MATH WORKS ж Inc Научное ПО для исследований и расчетов Почему студенты, преподаватели и научные работники приоб- ретают нужные им программы в компании SoftLine? • Низкие цены - компания оаботает напрямую с вендорами и явля- ется привилегированным партнером по образовательным про- граммам для многих производителей ПО • Возможность получения демо-версий и обновлений для широкого спектра программ. • Возможность удобного выбора программ по каталогу SoftL.ne direct или на сайте www softline.rc • Поддержка сообщества пользова1елеи на сайте www exponents ги M a t h S о f t E + V - = / 4- 5 ' StatSoft WOLFRAM RESEARCH Какое научное программное обеспечение поставляется SoftLine? • Языки программирования математических задач (Mathworks' • Моделирование электронных схем и устройств (Electronic Workbench, PCAD) • Универсальные математические пакеты, обмен данными AutoCAD (Wolfram Research, Waterloo Maple, MathSoft) • ПО для химиков (CambridgeSoft) • Статистические пакеты (MathSoft, StatSoft) • Редакторы формул (Design Science, Multi Edit) • Пакеты бизнес-анализа (Palisade) • Математические надстройки к MS Office (Frontline Systems1 Waterloo Maple electronics W .) R К В L n ' " CambridgeSoft Internet Chemistry Software Leader SoftLine - это слобода выбора ласти Клмгихик Softune пемаже- аам ччже * .-'«боре -*уч*юи.и> • Ой М ПрИГПЭСИТ *5 ПСУфОДИМНё ' ПО
КОМПЫОТЕРНОЕ-Мд ФИЗИЧЕСКИХ ПРОЦЕСС!