ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ
И.М. Белова
«Компьютерное моделирование» Учебно-методическое пособие для студентов направления «Прикладная математика и информатика» и специальности «Математическое обеспечение и администрирование информационных систем»
МГИУ Москва 2007
ББК 32.97 УДК 681.3 Б43 Рецензент: Е.А. Роганов, кандидат физико-математических наук, заведующий кафедрой «Информационные системы и технологии» Московского государственного индустриального университета
Б43
Белова И.М. «Компьютерное моделирование» Учебно-методическое посо бие для студентов направления «Прикладная математика и информатика» и специальности «Математическое обеспече ние и администрирование информационных систем». — М.: МГИУ, 2007. — 81 c. Данное пособие посвящено компьютерному моделированию — науке создания и исследования моделей при помощи компьютера. По собие основано на материалах лекций по дисциплине «Компьютерное моделирование», читаемых в ГОУ МГИУ на кафедре «Информаци онные системы и технологии». Учебно–методическое пособие предназначено для студентов спе циальности 010503 «Математическое обеспечение и администриро вание информационных систем» и направления 010500 «Прикладная математика и информатика», а также может быть полезно студен там экономических и ряда других специальностей, изучающим курс «Компьютерное моделирование».
ББК 32.97 УДК 681.3 Редактор Подписано в печать 22.11.07 Формат бумаги 60x84/16 Усл.печ.л. Уч.-изд.л. Тираж 60
К.В. Шмат Сдано в производство 23.11.07 Бум. офсетная Изд. № 1-101/07 Заказ № ???
РИЦ МГИУ, 115280, Москва, Автозаводская, 16 www.izdat.msiu.ru
[email protected] тел. 677-23-15 © И.М. Белова, 2007 © МГИУ, 2007
Оглавление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2. Предмет компьютерного моделирования . . . . . . . . . . . . 2.1. Понятие модели . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Классификация моделей . . . . . . . . . . . . . . . . . . . .
5 5 5
3. Статистическое моделирование . . . . . . . . . . . . . . . . . 3.1. Схема проведения вычислений в статистическом моделиро вании . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Области применения статистического моделирования . . . 3.3. Метод статистических испытаний (методы Монте–Карло) . 3.4. Методы Монте–Карло. Анализ общей схемы, достоинства и недостатки . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Генераторы случайных чисел . . . . . . . . . . . . . . . . . . 3.6. Моделирование дискретных случайных величин . . . . . . . 3.7. Моделирование непрерывных случайных величин . . . . . .
8
1. Введение
4. Детерминированное моделирование . . . . . . . . . . . . . . 4.1. Классификация дифференциальных уравнений в частных про изводных. Граничные и начальные условия . . . . . . . . . . 4.2. Методы конечных разностей для решения уравнений в част ных производных . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Метод конечных элементов для решения уравнения в част ных производных . . . . . . . . . . . . . . . . . . . . . . . . 4.4. Метод граничных элементов для решения уравнений в част ных производных . . . . . . . . . . . . . . . . . . . . . . . . Список литературы и интернет-ресурсов
. . . . . . . . . . . . .
8 9 9 11 12 17 18 21 21 29 45 68 81
1. Введение Исследование при помощи компьютера различных процессов и явле ний прочно вошло в нашу жизнь. Задачи из самых разных областей науки и техники невозможно решить без помощи компьютера. Сложные задачи механики, архитектуры, физики, химии, биологии успешно решаются при помощи компьютерного моделирования. Большую роль компьютерное мо делирование играет в решении экономических задач и задач управления производством. В настоящем пособии рассматривается предмет компьютерного моде лирования, вводится понятие модели и проводится классификация мо делей. Подробно рассматривается статистическое моделирование (метод Монте–Карло) и различные методы решения уравнений в частных произ водных.
2. Предмет компьютерного моделирования 2.1
Понятие модели
Модель — способ замещения реального объекта, используемый для его исследования, когда натуральный эксперимент невозможен, дорог, опа сен, долговременен. Например, поскольку исследование Луны небезопасно для человека, то используют луноход как модель исследователя. Поскольку эксперимент над экономикой страны дорог по своим последствиям, то используют ма тематическую модель экономики для изучения последствий управляющих решений. Поскольку процесс обработки металлов взрывом скоротечен во времени, то его изучают на модели в увеличенном масштабе времени, а процесс коррозии — в уменьшенном, атом — в увеличенном масштабе пространства, а космогонические процессы — в уменьшенном масшта бе пространства. Поскольку при проектировании объекта он попросту не существует, то исследование его будущих свойств ведется на модели. Модель несет системообразующую и смыслообразующую роль в науч ном познании. На модели изучают неизвестные свойства предметов. Мо дель стремится как можно более ярко выразить структуру явления, его главные аспекты. Модель является концентрированным выражением сущ ности предмета или процесса, выделяя только его основные черты. Зна ния — это модели окружающего мира, фиксируемые человеком в его моз ге или на технических носителях. Модели обладают повышенной нагляд ностью, выделяя главные аспекты сущности, и активно используются в процессах познания и обучения. Человек, решая, как ему поступить в той или иной ситуации, всегда пытается представить себе последствия решения; для этого он проигрывает ситуацию, представляет ее себе мысленно, строя модель в голове. То есть, во-первых, модели — это основа разумной мыслительной деятельности, во-вторых, модели играют роль инструмента для прогнозирования. Таким образом, можно сформулировать определение модели: Моделью называется специально синтезированный для удобства ис следования объект, который обладает необходимой степенью подобия ис ходному объекту, адекватной целям исследования. Составление модели каждый раз представляет собой творческий акт. Не существует общей методики перехода от объекта к модели.
2.2
Классификация моделей
Для всестороннего изучения системы требуется множество моделей. Это объясняется тем, что система многогранна, а субъекта, исследующе
6
Предмет компьютерного моделирования
го систему, интересует какая–либо одна сторона системы. Поэтому в ка честве первого классификационного признака можно ввести деление по функциональным качествам системы, которые должны быть отраже ны в модели. Другим общим признаком классификации является степень детализации модели или глубина изучения системы. Если мы классифицируем модели по степени детализации, то первым, наиболее общим видом моделей являются вербальные модели, представ ляющие словесные описания системы. Последующие классы моделей свя зывают с дальнейшей формализацией представлений о системе. Следующим классом моделей, относительно наполненным математиче ским содержанием, являются концептуальные модели. Они описывают в общем виде преобразование информации в системе и процесс ее цир куляции по каналам связи. Концептуальные модели представляют собой первый шаг в деле количественного познания системы как множества с заданными на нем отношениями. Наконец, последний класс моделей составляют математические мо дели. Они содержат конкретное описание законов преобразования инфор мации в системе в виде логических, дифференциальных, интегральных раз ностных отношений или конечных алгоритмов. Тем самым структура систе мы, выявленная на этапе создания концептуальной модели, наполняется конкретным математическим (логическим) содержанием. Компьютерное моделирование имеет дело, как правило, с последним из перечисленных типов моделей. В свою очередь математические модели можно также разделить на несколько групп. К первой группе можно отнести так называемые детерминированные модели. Это модели объектов и процессов, которые однозначно описыва ются при помощи математических формул, уравнений или систем уравне ний. При этом задача компьютерного моделирования сводится к решению на компьютере математических задач. В ранее изучавшихся курсах разби рались вопросы численного решения алгебраических уравнений и систем, дифференциальных уравнений и систем, исследовались проблемы интер поляции функций и многие другие, поэтому здесь мы остановимся только на численных методах решения уравнений в частных производных. Вторая группа — это статистические модели. Они применяются при решении задач, связанных с обработкой большого количества данных и различного типа вероятностных задач. Для решения этих задач применяют ся различные специальные методы. Часть этих методов будет рассмотрена ниже. Третья группа — объектно-ориентированные модели. Эти модели применяются для компьютерного моделирования задач из самых различ
Классификация моделей
7
ных областей: экономика, компьютерные игры, компьютерная графика и многих других. В данном случае речь не идет о решении каких-либо мате матических задач, а о создании разнообразных компьютерных приложений, основанных на объектно-ориентированной парадигме программирования.
3. Статистическое моделирование Статистическое моделирование — численный метод решения мате матических задач, при котором искомые величины представляют вероят ностными характеристиками какого-либо случайного явления, это явление моделируется, после чего нужные характеристики приближённо определя ют путём статистической обработки «наблюдений» модели. Статистическое моделирование — молодое и перспективное научное направление, получившее развитие в середине двадцатого века в связи с ростом возможностей вычислительной техники. Рассматриваемое научное направление имеет массу приложений в разных областях знания (биология, химия, физика, экономика и др.) [1]
3.1 Схема проведения вычислений в статистическом моделировании Статистическое моделирование предполагает следующую схему вы числения (оценивания) искомой величины. Так, искомую величину пред ставляют математическим ожиданием числовой функции f от случайного исхода w некоторого явления: E(f(ω)) = f(ω)dP,
(3.1)
т.е. интегралом по вероятностной мере Р. Таким образом, для того, чтобы оценить некоторое значение, необхо димо подобрать случайную величину так, чтобы ее математическое ожи дание равнялось искомому значению. После этого можно пронаблюдать случайную величину и оценить по выборке ее математическое ожидание. Полученный результат можно считать оценкой искомого значения. Рассмотрим оценку математического ожидания случайной величины f(ω1) + . . . + f(ωN ) , (3.2) N где ω1 , . . . , ωN — исходы, состоявшиеся в результате наблюдений. Оценку (3.2) можно рассматривать как квадратурную формулу для ука занного интеграла со случайными узлами ωk и случайной погрешностью RN . Таким образом, рассматриваемая схема состоит в проведении серии экспериментов. Каждый i-ый эксперимент представляет собой получе ние случайного исхода ωi и вычисление функции f(ωi). После этого про изводятся вычисления по формуле (3.2) и полученный результат считается оценкой искомой величины. Q = E(f(ω)) =
Области применения статистического моделирования
9
Случайный выбор на каждом этапе проводится с помощью случай ных чисел, которые необходимо генерировать тем или иным образом. Так, они могут генерироваться каким-либо физическим датчиком или имити роваться при помощи вычислительной техники по некоторому алгоритму, обеспечивающему заданное распределение (псевдослучайные числа). .
3.2 Области применения статистического моделирования Статистическое моделирование широко применяется для решения за дач из различных областей человеческого знания. Среди них такие актуаль ные области как биология, химия, физика, экономика и другие. Например: численное интегрирование, расчеты в системах массового обслуживания, расчеты качества и надежности изделий, расчеты прохождения нейтронов сквозь пластину, передача сообщений при наличии помех, задачи теории игр, задачи динамики разреженного газа, задачи дискретной оптимизации, задачи финансовой математики (оценивание опционов и др.) Часть этих задач имеют очевидную вероятностную природу (что ха рактерно, например, для систем массового обслуживания или финансовой математики), а часть являют собой пример применения идей статистическо го моделирования для исследования математических моделей объектов, не имеющих таковой (например, вычисление определенного интеграла).
3.3 Метод статистических испытаний (методы Монте–Карло)
История метода Говоря о статистическом моделировании, люди часто подразумевают, что речь идет о так называемом методе статистических испытаний (методах Монте–Карло). Метод статистических испытаний — метод вычислительной и при кладной математики, основанный на моделировании случайных величин и построении статистических оценок для искомых величин; то же, что мето ды Монте–Карло. Принято считать, что метод статистических испытаний
10
Статистическое моделирование
возник в 1944 году, когда в связи с работами по созданию атомных реак торов американские учёные Дж. фон Нейман и С. Улам начали широко применять аппарат теории вероятностей для решения прикладных задач с помощью ЭВМ. Первоначально метод использовался главным образом для решения сложных задач теории переноса излучения и нейтронной фи зики, где традиционные численные методы оказались малопригодными. За тем его влияние распространилось на больший класс задач статистической физики, очень разных по своему содержанию. Метод применяется для ре шения задач теории игр, теории массового обслуживания и математической экономики, задач теории передачи сообщений при наличии помех и т.д. Итак, таинственное название «Методы Монте–Карло». Откуда оно взялось и что стоит за этим звучным наименованием? Попробуем разо браться, для чего обратимся к истории. Некоторые эксперименты по использованию метода статистических ис пытаний проводились достаточно давно. Так, еще французский естествоис пытатель Бюффон выполнял эксперименты по вычислению числа π путем подбрасывания иглы и вычисления частоты пересечения иглы одной из па раллельных прямых. В 1930 году Э. Ферми использовал то, что сейчас носит название методов Монте–Карло, в исследовании нейтронных пото ков. Позже, он разработал «Fermiac», механическое устройство, которое использовалось в вычислениях в задачах ядерной физики. Настоящее рас пространение идей, связанных с подобными методами, стало реальностью с началом эры вычислительной техники, которая позволила проводить ком пьютерные эксперименты, в том числе и по получению случайных чисел. Пионерами методов Монте–Карло принято считать американских математиков Стэнли Улама, Джона фон Неймана и Николаса Метро полиса. В сороковых годах XX века Джон фон Нейман заложил основу методов Монте–Карло, создав математический базис для функций плотно сти вероятности, интегральных функций обратного распределения и гене раторов псевдослучайных чисел. Исследования выполнялись в тесном со трудничестве со Стэнли Уламом; считается, что именно он первым осознал и продвинул в массы идею о необходимости компьютера для выполнения вычислений по методам Монте–Карло. Происхождение названия методов связано с одноименным городом в княжестве Монако, в котором расположены одни из самых известных ка зино в мире. Дело в том, что случайные числа и их генерация составляют «сердце» методов Монте–Карло. Рулетка казино — один из наиболее простых приборов для генерации случайных чисел. Именно это и яви лось наводящим соображением для названия. Как писал Стэнли Улам в автобиографии «Приключения математика», метод был назван в честь его дяди, который был заядлым игроком, по совету Метрополиса.
Методы Монте–Карло. Анализ общей схемы, достоинства и недостатки
11
Датой рождения методов Монте–Карло принято считать 1949 год, ко гда появилась статья Улама и Метрополиса «Метод Монте–Карло». Как это часто бывало в истории науки, основным побуждающим фактором в развитии статистического моделирования стали военные исследования по заказу Министерства обороны США. Далее эти исследования не стали но сить секретного характера, и результаты были успешно внедрены в разных областях, благодаря общности схемы метода и отсутствию привяз ки к конкретному объекту или предметной области. Еще один интересный факт связан с тем, что некие случайные мето ды вычислений и проведения экспериментов разрабатывались и применя лись и в «доисторическую компьютерную эру». Основная разница между методами Монте–Карло и ранними исследованиями в области статистиче ского моделирования заключается в следующем: моделирование методом Монте–Карло перевернуло стандартные представления о том, как нужно решать задачу, используя средства теории вероятности и математической статистики. Так, ранее предполагалось, что необходимо изучить детерми нированную проблему, а потом использовать имитацию, чтобы прове рить сделанные ранее выкладки. При моделировании методом Монте–Кар ло предполагается, что надо взять детерминированную проблему и най ти ее стохастический аналог. Эта идея стала общим принципом, при менимым для решения задач различной природы, благодаря фон Нейману, Метрополису и Уламу.
3.4 Методы Монте–Карло. Анализ общей схемы, достоинства и недостатки Итак, для решения задачи по методам Монте–Карло прежде все го строят вероятностную модель, представляют искомую величину, например многомерный интеграл, в виде математического ожидания функционала от случайного процесса, который затем моделируется на компьютере. В результате проведения вычислительного эксперимента по лучают нужную выборку и результаты всех испытаний усредняют. Прин ципиальная математическая основа использования методов Монте–Кар ло — Усиленный закон больших чисел в форме А.Н. Колмогорова. Теорема Колмогорова Для того чтобы среднее арифметическое независимых реализаций слу чайной величины сходилось с вероятностью единица к ее математическому ожиданию, необходимо и достаточно, чтобы это математическое ожидание существовало. Итак, первое несомненное достоинство методов Монте–Кар ло — простая схема вычислительного алгоритма.
12
Статистическое моделирование
Поговорим о некоторых трудностях, которые могут встретиться нам на пути применения рассмотренного подхода. Заметим, что нам нужна не лю бая, а достаточно достоверная оценка искомой величины, т.е. оценка с малой погрешностью. Добиться этого далеко не так просто, как кажет ся. Большую роль, разумеется, играет адекватность построенной веро ятностной модели (такие модели во многих задачах известны). Следующая важная составляющая — моделирование случайных ве личин с заданными распределениями. Как правило, такое моделирова ние осуществляется путём преобразования одного или нескольких незави симых значений случайного числа a, распределённого равномерно в интер вале (0, 1). Последовательности «выборочных» значений a обычно полу чают на ЭВМ с помощью теоретико–числовых алгоритмов, среди кото рых наибольшее распространение получил «метод вычетов». Такие числа называются «псевдослучайными», они проверяются статистическими тестами и решением типовых задач. Итак, существенную роль играет качество используемых генераторов случайных чисел. Написание кор ректных генераторов — сложная задача, успешно решаемая в рамках раз ных научных и инженерных математических библиотек, например, в одной из лучших из них — Intel Math Kernel Library (Intel MKL). Продолжая разговор о точности вычислений, посмотрим на этот вопрос немного с дру гой стороны. Как известно, q ошибка вычислений по методу Монте–Карло обычно пропорциональна Nd , где d — некоторая константа, а N — коли чество испытаний. Из формулы очевидно, что для повышения точности в 10 раз необходимо увеличить количество испытаний в 100 раз, а это значит, что метод Монте–Карло требует больших вычислительных ресурсов.
3.5
Генераторы случайных чисел
Основа метода Монте–Карло — генератор случайных чисел. Генерация произвольного случайного числа состоит из двух этапов: 1. генерация нормализованного случайного числа (равномерно распре деленного от 0 до 1) 2. преобразование случайного числа в произвольный закон распределе ния Генераторы случайных чисел (ГСЧ) делятся на: физические табличные алгоритмические 1. Физические ГСЧ К физическим генераторам случайных чисел относятся рулетка (раз деленный на сектора вращающийся барабан со стрелкой). Бросание
Генераторы случайных чисел
13
игральных костей также может служить источником случайных чи сел. При бросании монеты можно при выпадении «орла» записывать цифру 1, а при выпадении «решки» — цифру 0. В результате полу чится случайное двоичное число. Широко используются аппаратные генераторы шума (ГШ). В качестве ГШ используют шумящее тепло вое устройство, например транзистор. Существуют генераторы слу чайных чисел, использующие различные физические процессы, такие как радиоактивный распад, шумы аналоговых сетей [3] . 2. Табличные ГСЧ Случайное число в интервале от 0 до 1 формируется из случайных цифр, записанных в таблице. таблица число 7 1 8 0.718 3 4 6 0.436 6 4 1 0.641 ... ... Случайные цифры Случайные числа, равномерно распределенные от 0 до 1 Достоинства метода: дает абсолютно случайные числа, так как таблица содержит проверенные некоррелированные числа, то есть цифры числа никак не зависят друг от друга. Недостатки метода: для хранения большого количества цифр тре буется много памяти. 3. Алгоритмические ГСЧ Генератор псевдослучайных чисел (ГПСЧ) — алгоритм, гене рирующий последовательность чисел, элементы которой почти неза висимы друг от друга и подчиняются заданному распределению. Современная информатика широко использует псевдослучайные числа в самых разных приложениях — от метода Монте–Карло до криптографии. Как сказал Роберт Р. Кавью из ORNL, генерация случайных чисел — слишком важное дело, чтобы оставлять её на волю случая. ГПСЧ подразделяются на простые арифметические, сломанные криптографические и криптостойкие. Их общее предназначение — ге нерация последовательностей чисел, которые невозможно отличить от случайных. Никакой детерминированный алгоритм не может генерировать пол ностью случайные числа, а только лишь аппроксимировать некото рые свойства случайных чисел. Как сказал Джон фон Нейман, «вся кий, кто питает слабость к арифметическим методам полу чения случайных чисел, грешен вне всяких сомнений».
14
Статистическое моделирование Любой ГПСЧ с ограниченными ресурсами рано или поздно за цикливается. Длина циклов ГПСЧ зависит от самого генератора и в среднем составляет около 2 (n/2) , где n — это размер внутреннего состояния в битах, хотя линейные конгруэнтные генераторы и РЛСО (LFSR) генераторы обладают максимальными циклами порядка 2n . Если ГПСЧ может сходиться к слишком коротким циклам, такой ГПСЧ становится предсказуемым и является непригодным. Большинство простых арифметических генераторов хотя и облада ют большой скоростью, но страдают от многих серьёзных недостат ков: Слишком короткий период/периоды; Последовательные значения не являются независимыми; Некоторые биты «менее случайны», чем другие; Неравномерное одномерное распределение; Обратимость В частности, алгоритм RANDU, десятилетиями использовавшийся на компьютерах IBM мейнфрейм, оказался очень плохим. В резуль тате многие исследования менее надёжны, чем могли бы быть. Наиболее распространены линейный конгруэнтный метод, метод Фибоначчи с запаздываниями [9] . Линейный конгруэнтный метод — один из алгоритмов генера ции псевдослучайных чисел. Применяется в простых случаях и не обладает криптографическтой стойкостью. Используется в качестве стандартного генератора многими компиляторами. Этот алгоритм заключается в итеративном применении следующей формулы: Xk+1 ≡ (aXk + c)
(mod m),
(3.3)
где a > 0, c > 0, m > 0 - некоторые целочисленные константы. Получаемая последовательность зависит от выбора стартового чис ла X0 , и при разных его значениях получаются различные последова тельности случайных чисел. В то же время, многие свойства после довательности X j определяются выбором коэффициентов в формуле, и не зависят от выбора стартового числа. Ясно, что последователь ность чисел, генерируемая таким алгоритмом, периодична с перио дом, не превышающим m. При этом длина периода равна m тогда и только тогда, когда: a) НОД(c, m) = 1 (то есть c и m взаимно просты) b) a − 1 кратно p для всех простых p — делителей m c) a − 1 кратно 4, если m кратно 4
Генераторы случайных чисел
15
При реализации выгодно выбирать m = 2e , где e — число бит в ма шинном слове, поскольку это позволяет избавиться от относительно медленной операции приведения по модулю. Младшие двоичные разряды сгенерированных таким образом слу чайных чисел демонстрируют поведение, далёкое от случайного, по этому рекомендуется использовать только старшие разряды. Статистические свойства получаемой последовательности случай ных чисел полностью определяются выбором констант a и c при за данной разрядности e. Для этих констант выписаны условия, гаранти рующие удовлетворительное качество получаемых случайных чисел. Отсюда выбираются следующие значения [6] : a = 1664525, c = = 1013904223, m = 232 . Метод Фибоначчи с запаздываниями (Lagged Fibonacci generator) — один из методов генерации псевдослучайных чисел. Особенности распределения случайных чисел, генерируемых ли нейным конгруэнтным алгоритмом, делают невозможным их исполь зование в статистических алгоритмах, требующих высокого разреше ния. В связи с этим линейный конгруэнтный алгоритм постепенно поте рял свою популярность и его место заняло семейство фибоначчиевых алгоритмов, которые могут быть рекомендованы для использования в алгоритмах, критичных к качеству случайных чисел. В англоязыч ной литературе фибоначчиевы датчики такого типа называют обычно «Subtract–with–borrow Generators» (SWBG). Наибольшую популярность фибоначчиевы датчики получили в свя зи с тем, что скорость выполнения арифметических операций с веще ственными числами сравнялась со скоростью операций целочислен ной арифметики, а фибоначчиевы датчики естественно реализуются в вещественной арифметике. Один из широко распространённых фибоначчиевых датчиков осно ван на следующей итеративной формуле: X(k) =
X(k − a) − X(k − b), X(k − a) − X(k − b) + 1,
X(k − a) ≥ X(k − b) X(k − a) < X(k − b)
(3.4)
где X(k) - вещественные числа из диапазона [0, 1), a, b — целые положительные числа, называемые лагами. Для работы фибоначчие ву датчику требуется знать max(a, b) предыдущих сгенерированных случайных чисел. При программной реализации для хранения сге нерированных случайных чисел используется конечная циклическая
16
Статистическое моделирование очередь на базе массива. Для старта фибоначчиевому датчику требу ется max(a, b) случайных чисел, которые могут быть сгенерированы простым конгруэнтным датчиком. Лаги a и b — «магические», и их не следует выбирать произвольно. Рекомендуются следующие значения лагов: a = 55, b = 24; a = 17, b = 5; a = 97, b = 33. Качество получаемых случайных чисел зави сит от значения константы, a чем оно больше, тем выше размерность пространства, в котором сохраняется равномерность случайных век торов, образованных из полученных случайных чисел. В то же время, с увеличением величины константы a увеличивается объём исполь зуемой алгоритмом памяти. Значения a = 17, b = 5 можно рекомендовать для простых прило жений, не использующих векторы высокой размерности со случайны ми компонентами. Значения a = 55, b = 24 позволяют получать чис ла, удовлетворительные для большинства алгоритмов, требователь ных к качеству случайных чисел. Значения a = 97, b = 33 позволя ют получать очень качественные случайные числа и используются в алгоритмах, работающих со случайными векторами высокой размер ности. Описанный фибоначчиев датчик случайных чисел (с лагами 20 и 5) используется в широко известной системе Matlab (автором первой версии этой системы был Д. Каханер). Получаемые случайные числа обладают хорошими статистически ми свойствами, причём все биты случайного числа равнозначны по статистическим свойствам. Период фибоначчиева датчика может быть оценен по следующей формуле: T = (2max(a,b) − 1) · 2e ,
(3.5)
где e — число битов в мантиссе вещественного числа. Из современных ГПСЧ широкое распространение получил Виток Мерсенна [4] , предложенный в 1997 году Мацумото и Нишимурой. Его достоинствами являются колоссальный период (219937-1), рав номерное распределение в 623 измерениях (линейный конгруэнтный метод даёт более или менее равномерное распределение от силы в 5 измерениях), быстрая генерация случайных чисел (в 2-3 раза быст рее, чем стандартные ГПСЧ, использующие линейный конгруэнтный метод). Однако существуют сложные алгоритмы, распознающие по следовательность, порождаемую с помощью Mersenne twister, как неслучайную. Это делает Mersenne twister неподходящим для крип тографии.
Моделирование дискретных случайных величин
17
Для генерации уникальных симметричных и асимметричных клю чей для шифрования строятся программные ГСЧ из комбинации криптостойкого ГПСЧ и внешнего источника энтропии [4] . Таким об разом, под ГСЧ теперь принято подразумевать именно криптостойкие ГПСЧ с внешним источником энтропии. Почти все крупные производители микрочипов поставляют аппа ратные ГСЧ с различными источниками энтропии. Однако на дан ный момент скорость сбора случайных чисел всеми существующими микрочипами (несколько тысяч бит в секунду) не соответствует быст родействию современных процессоров. В персональных компьютерах авторы программных ГСЧ использу ют гораздо более быстрые источники энтропии, такие как шум звуко вой карты или значения счётчика тактов процессора (processor clock counter) которые легко считываются, например, при помощи инструк ции rdtsc в процессорах Intel. До появления в процессорах возмож ности считывать значение самого чувствительного к малейшим изме нениям окружающей среды счётчика тактов процессора сбор энтро пии являлся наиболее уязвимым местом ГСЧ. Эта проблема до сих пор полностью не разрешена во многих устройствах (например smart карты), которые таким образом остаются уязвимыми. Многие ГСЧ до сих пор используют традиционные (устаревшие) методы сбора эн тропии такие как действия пользователя (движения мыши и т.п.), как например в PGP и Yarrow, или взаимодействие между потоками (threads), как например в Java secure random. Примеры программных ГСЧ и их источников энтропии можно найти по адресу [4] .
3.6
Моделирование дискретных случайных величин
Рассмотрим дискретную случайную величину ξ, принимающую n значений X1 , X2 , . . . , Xn с вероятностями P1 , P2 , . . . , Pn . Эта величина зада ется таблицей распределения ξ=
X1 X2 . . . Xn P1 P2 . . . Pn
X n , Pk = 1.
(3.6)
k=1
случайную величину ξ, равную номеру события: Для моделирования та кой дискретной случайной величины разбивают отрезок [0, 1] на n после довательных отрезков 1, 2, . . . , n, длины которых равны соответствующим вероятностям P1 , P2 , . . . , Pn . Получают случайную величину ξ , равномер но распределенную в интервале (0, 1), и полагают ξ = Xk , если ξ ∈ k. Аналогичным образом осуществляется моделирование случайных событий. Пусть необходимо смоделировать реализацию какого–либо события Sk из
18
Статистическое моделирование
ряда событий S1 , S2 , . . . , Sn , образующих полную группу событий. Свяжем с этой системой событий случайную величину ξ , равную номеру события: 1 2... n , (3.7) ξ= P1 P2 . . . Pn где Pk — вероятность наступления Sk . Среди дискретных случайных величин важное значение имеют целочис ленные случайные величины с распределением вида pk = P(ξ = k)
(3.8)
(k = 0, 1, 2, . . .), которые связаны простыми рекуррентными формулами pk+1 = pk · r(k).
(3.9)
Среди таких распределений наиболее важными и часто используе мыми являются биноминальное распределение и распределение Пуассона. Для биноминального распределения с параметрами (p, n) имеем: Pk = P(ξ = k) = Cnk pk (1 − p) n−k , k = 0, 1, . . . , n, rk =
p n! pk+1 n−k · , Cnk = . = pk k+1 1− p (n − k)!k!
(3.10) (3.11)
Для распределения Пуассона с параметром λ имеем: pk =
3.7
λ λk −λ · e , r(k) = , k = 0, 1, . . . . k! k+1
(3.12)
Моделирование непрерывных случайных величин
Пусть нам нужно получать значения случайной величины ξ, распределен ной в интервале (a, b) с плотностью вероятности f(x). Стандартный метод моделирования основан на том, что интегральная функция распределения любой непрерывной случайной величины равномерно распределена в ин тервале (0, 1), т.е. для любой случайной величины x с плотностью распре деления f(x) случайная величина Zy F(k) =
f(x)dx a
равномерно распределена на интервале (0, 1).
(3.13)
Моделирование непрерывных случайных величин
19
Тогда случайную величину ξ с произвольной плотностью распределения f(x) можно найти следующим образом: 1. Получаем случайную величину γ, равномерно распределенную в ин тервале (0, 1) 2. Полагаем Zξ F(ξ) = f(x)dx = γ (3.14) a
3. Решая уравнение ξ = F −1 (γ),
(3.15)
находим искомое значение ξ Такой способ получения случайных величин называется методом об ратных функций (см. рисунок)
F(y) 1.0 0.8 0.6
2
1 γ
0.4 0.2 0
y
3 a
ξ
b
В качестве примера рассмотрим получение случайной величины τ , имеющей экспоненциальное распределение с плотностью p p(τ) = λ · e −λτ ,
(3.16)
где λ — параметр распределения. Такое распределение широко исполь зуется при моделировании различных физических явлений: это и длина свободного пробега ионизирующих частиц в веществе, и распределение
20
Статистическое моделирование
интервалов времени между моментами попадания ионизирующих частиц в регистрирующий прибор и т.д. Следуя указанной методике, получаем Zτ
λ · e −λx dx = 1 − e −λτ = γ
(3.17)
0
Отсюда 1 · ln(1 − γ). (3.18) λ Так как величина 1 − γ распределена точно так же, как и γ, то послед нюю формулу можно переписать в виде τ =−
1 · ln γ. (3.19) λ Следует отметить, что не всегда возможно так легко разрешить полу чаемые уравнения. Чаще всего аналитическое решение не существует, и тогда приходится прибегать к численному решению уравнения τ =−
ξ = F −1 (γ)
(3.20)
Может оказаться и так, что алгоритм численного решения указанного уравнения будет сложным или требовать заметных затрат времени на вы числения. Тогда могут быть использованы другие методы генерирования случайных величин.
4. Детерминированное моделирование В этом разделе рассматривается компьютерное моделирование с ис пользованием детерминированных моделей. Рассматривается моделирова ние различных процессов и явлений, для описания которых можно исполь зовать алгебраические уравнения и системы, дифференциальные уравне ния, уравнения в частных производных. В этом случае процесс моделиро вания состоит в решении при помощи компьютера соответствующих урав нений и систем. Как уже упоминалось, в данном пособии мы не будем по дробно разбирать уже изученные вами способы решения алгебраических уравнений и систем, решение обыкновенных дифференциальных уравне ний, а сконцентрируемся на решении на компьютере уравнений в частных производных.
4.1 Классификация дифференциальных уравнений в частных производных. Граничные и начальные условия Дифференциальное уравнение в частных производных (ДУЧП): ∂U ∂U ∂U ∂ 2 U F x1 , x2 , . . . , xn , U, , ,..., , ,... = 0 (4.1) ∂x1 ∂x2 ∂xn ∂x12 Здесь U — зависимая переменная (функция), xi — независимые пе ременные. Существенно то, что неизвестная функция U(xi) зависит более чем от одной переменной. Порядком уравнения называется порядок старшей частной производ ной. Квазилинейное уравнение — уравнение, линейное относительно всех старших производных от неизвестной функции. Линейное уравнение — уравнение, линейное относительно функции и всех ее частных производных. Целью предлагаемого курса является решение квазилинейных ДУЧП второго порядка, содержащих две независимые переменные. При необхо димости методы их решения могут быть обобщены на случай большего количества переменных. Под квазилинейностью будет пониматься линей ность по всем частным производным. Общий вид такого уравнения: 2
2
2
∂ U A(x, y, U) ∂∂xU2 + 2B(. . .) ∂x∂y + C(. . .) ∂∂yU2 + ∂U +D(. . .) ∂U ∂x + E(. . .) ∂y + f(x, y, U) = 0
(4.2)
22
Детерминированное моделирование Выделяют три типа ДУ второго порядка: Эллиптические: AC − B 2 > 0. Например, уравнение Пуассона
∂2U ∂2U + = −f(x, y) 2 ∂x ∂y 2
(4.3)
Гиперболические: AC − B 2 < 0. Например, волновое уравнение 2 ∂2U 2∂ U = c ∂t 2 ∂x 2
(4.4)
Параболические: AC − B 2 = 0. Например, уравнение теплопровод ности
∂U ∂2U (4.5) =a 2 ∂t ∂x Уравнение может принадлежать к нескольким типам в зависимости от значений коэффициентов. Так, например уравнение Трикоми y
∂2U ∂2U + =0 ∂x 2 ∂y 2
(4.6)
при y > 0 эллиптического типа, при y < 0 — гиперболического, а линия y = 0 называется линией параболичности. Квазилинейное ДУЧП второго порядка: 2
2
2
∂ U A(x, y, U) ∂∂xU2 + 2B(. . .) ∂x∂y + C(. . .) ∂∂yU2 + ∂U +D(. . .) ∂U ∂x + E(. . .) ∂y + f(x, y, U) = 0
Для однозначности решения подобного уравнения необходимо наложе ние дополнительных условий. Эти условия бывают двух типов: Начальные условия (НУ) — условия, определяющие значения иско мой функции (и, возможно, некоторых ее производных) при одном значении независимой переменной (например, в начальный момент времени, т.е. при t = 0). Если в уравнении присутствует только первая производная по времени (как в уравнении теплопроводности), то достаточно задать одно началь ное условие, например, распределение температуры в начальный момент. Если же в уравнении присутствует вторая производная по времени (вол новое уравнение), то необходимы два НУ, например, положение струны в начальный момент и скорость движения ее точек.
Классификация дифференциальных уравнений в частных производных. Граничные и начальные условия
23
Граничные условия (ГУ) — условия, определяющие значения иско мой функции (и, возможно, некоторых ее производных) на границе про странственной области, внутри которой ищется решение (при различных значениях независимых переменных). ГУ бывает трех типов: Задаются значения функции на границе — задача Дирихле; Задаются значения производной функции по нормали к границе — задача Неймана; Задаются условия Робина: ∂U ∂n G + kUG = F — смешанная гранич ная задача.
Геометрическая интерпретация задачи Если независимых переменных всего две (например, x и t), то искомое решение можно изобразить в виде поверхности в трех измерениях U(x, t). (См. рис. 1). Граничные условия — линии в плоскостях x = 0 и x = L. Начальные условия — кривая в плоскости t = 0.
Рис. 1.
Основная идея метода конечных разностей[5] На область изменения независимых переменных накладывается сетка, и решение ищется не в виде непрерывной функции U(x, t), а в виде дис кретного, конечного множества чисел Uin , представляющих (заменяющих)
24
Детерминированное моделирование
Рис. 2.
функцию U(x, t) на дискретном, конечном множестве значений независи мых переменных, т.е. в узлах наложенной сетки. Мы ищем конечный дис кретный набор чисел Uin над соответствующими узлами сетки. Простейшей сеткой является равномерная прямоугольная сетка. Такая сетка образуется при пересечении линий x = xi = i · h, i = 0, 1, . . . , N и t = tn = n · τ , n = 0, 1, . . . (См. рис. 2). h — шаг сетки по координате, τ — по времени. Сходимость Множество Uin называют численным решением ДУ, если выполняется условие сходимости: kUin − U(x = ih, t = nτ)kv → 0,
при
h → 0, τ → 0
(4.7)
Двойными вертикальными линиями отмечена норма отклонения числен ного (дискретного) решения от истинного решения. Норму отклонения над дискретным пространством узлов v можно ввести, например, так: k . . . kv = max |U − Uin | v
(4.8)
Чтобы посторить алгоритм численного решения ДУ, все производные в исходном ДУ должны быть заменены отношениями конечных разностей (отсюда название метода). Данная процедура называется аппроксимация поизводных.
Классификация дифференциальных уравнений в частных производных. Граничные и начальные условия
25
Используя в дополнение к выбранному i –тому узлу наложенной сетки (i + 1) –ый, получаем формулу правой аппроксимации первой производной: a=
∂U ∂x
= i,n
n Ui+1 − Uin h
(4.9)
Для оценки погрешности аппроксимации производной по этой формуле значения функции в соседних узлах необходимо представить в виде ряда Тейлора: 1 n Ui+1 = Uin + Ux h + Uxx h2 − . . . 2
(4.10)
Подставляя это разложение, видим: 1 a = Ux(i,n) + Uxx(i,n) h + . . . 2
(4.11)
Погрешность ∼ O(h). Формула правой аппроксимации первого порядка точности. Ана логичная формула для аппроксимации производной по времени называется аппроксимацией вперед по времени. Используя в дополнение к выбранному i –тому узлу наложенной сетки (i − 1) –ый, получаем формулу левой аппроксимации первой производной: a=
∂U ∂x
= i,n
n Uin − Ui−1 h
(4.12)
Для оценки погрешности аппроксимации производной по этой формуле значения функции в соседних узлах необходимо представить в виде ряда Тейлора: 1 n Ui−1 = Uin − Ux h − Uxx h2 + . . . 2
(4.13)
Подставляя это разложение, видим: 1 a = Ux(i,n) − Uxx(i,n) h + . . . 2
(4.14)
Погрешность ∼ O(h). Формула левой аппроксимации первого порядка точности. Ана логичная формула для аппроксимации производной по времени называется аппроксимацией назад по времени.
26
Детерминированное моделирование
Используя в дополнение к выбранному i –тому узлу наложенной сетки (i − 1) –ый и (i + 1) –ый, получаем формулу левой аппроксимации первой производной: n Ui−1 = Uin − ah + bh2 (4.15) n Ui+1 = Uin + ah + bh2 , получаем формулу центральной аппроксимации первой производной: n U n − Ui−1 ∂U = i+1 (4.16) a= ∂x i,n 2h Для оценки погрешности аппроксимации производной по этой формуле значения функции в соседних узлах необходимо представить в виде рядов Тейлора. Подставляя эти ряды, получим: 1 a = Ux(i,n) − Uxxx(i,n) h2 + . . . 6
(4.17)
Погрешность ∼ O(h2). Формула центральной аппроксимации первого порядка точно сти. Аналогично строится формула центральной аппроксимации для про изводной по времени. Используя в дополнение к выбранному i –тому узлу наложенной сетки (i − 1) –ый и (i + 1) –ый, получаем формулу левой аппроксимации первой производной: n Ui−1 = Uin − ah + bh2 (4.18) n Ui+1 = Uin + ah + bh2 , получаем формулу центральной аппроксимации второй производной: n U n − 2Uin + Ui−1 1 ∂2U = i+1 (4.19) 2 2 2 ∂x 2h Для оценки погрешности аппроксимации производной по этой формуле значения функции в соседних узлах необходимо представить в виде рядов Тейлора. Подставляя эти ряды, получим:
b=
b=
1 1 Uxx(i,n) + Uxxxx(i,n) h2 + . . . 2 24
(4.20)
Погрешность ∼ O(h2). Формула центральной аппроксимации второго порядка точно сти.
Классификация дифференциальных уравнений в частных производных. Граничные и начальные условия
27
Вместо двух соседних точек можно взять, например, две последующие точки. Вы тоже без труда решите систему и получите аппроксимационную формулу для второй производной. Однако погрешность аппроксимации в этом случае будет уже пропорциональна шагу h в первой степени, т.е. вы получите аппроксимационную формулу первого порядка точности. По этой причине всегда предпочтительнее использовать симметричные точки для построения формул аппроксимации. Хотя иногда по самым разным причинам полезным может оказаться и несимметричный выбор точек, на пример, когда вы находитесь на краю сетки. Несимметричные разностные аппроксимации приходится строить также для аппроксимации ГУ 2–го и 3–го рода. Для повышения точности аппроксимации производной необходимо ис пользовать большее количество соседних точек. Так, например, для второй производной помимо (i −1) –ого и (i +1) –ого узлов (стандартная формула центральной аппроксимации) можно исполь зовать еще и (i − 2) –ой и (i + 2) –ой узлы: n U i−2 n Ui−1 Un i+1 n Ui+2
= = = =
Uin − a(2h) + b(2h) 2 − c(2h) 3 − d(2h) 4 Uin − ah + bh2 − ch3 − dh4 Uin + ah + bh2 + ch3 + dh4 Uin + a(2h) + b(2h) 2 + c(2h) 3 + d(2h) 4
(4.21)
Решая данную систему относительно коэффициента b, получаем более точную формулу центральной аппроксимации второй производной: n n n n 16 Ui+1 + Ui−1 − Ui+2 + Ui−2 − 30Uin 1 2 2 b = ∂ U∂x = 2 24h2
(4.22)
Для оценки погрешности аппроксимации производной по этой формуле значения функции в соседних узлах необходимо представить в виде рядов Тейлора. Подставляя эти ряды, получим: b=
1 1 IV 4 Uxx(i,n) − U h + ... 2 180 (i,n)
(4.23)
Погрешность ∼ O(h4). Это центральная аппроксимация четвертого порядка точности. В исходном дифференциальном уравнении: f x, y, U, Ux , Uy , Uxx , . . . = 0
(4.24)
28
Детерминированное моделирование
применительно к определенному узлу наложенной сетки (i, j) все произ водные заменяются разностными аналогами. Например, Uxx |i, j =
∂2U ∂x 2
j
= y,(i, j)
j
j
Ui−1 − 2Ui + Ui+1 h2
(4.25)
В результате получается система линейных алгебраических уравнений, отделяющая значения искомой функции во всех узлах наложенной сетки. Для наглядности строят трафарет(stencil) разностной схемы: на сет ке отмечают узлы, задействованные в разностном аналоге исходного ДУ, примененного к (i, j) –му узлу, и подписывают численный множитель, с ко торым значение исходной функции, соответствующее данному узлу, входит в разностную схему.
Рис. 3.
На рисунке 3 изображен трафарет разностной схемы, содержащей че тыре узла. Три узла принадлежат слою j, и один — (j+1) –му слою. Это — двухслойная разностная схема (относительно переменной y). Бывают так же трехслойные и более многослойные разностные схемы. Если трафарет содержит одно неизвестное значение функции U (на j+1 рисунке 3 это — Ui ), то разностная схема называется явной. Система алгебраических уравнений при этом распадается на отдельные уравнения, каждое из которых явным образом определяет значение искомой функции в одном из узлов наложенной сетки. Если трафарет содержит более одного неизвестных значений функции U, то разностная схема называется неявной. Система алгебраических урав нений при этом не распадается на отдельные уравнения.
Методы конечных разностей для решения уравнений в частных производных
29
4.2 Методы конечных разностей для решения уравнений в частных производных
Решение уравнения Пуассона методом конечных разностей Рассмотрим в качестве примера решение уравнения Пуассона методом конечных разностей [6] . Уравнение Пуассона — уравнение эллиптического типа ∂2u ∂2u + = ρ(x, y) ∂x 2 ∂y 2
(4.26)
Здесь ρ(x, y) — плотность заряда в среде. Рассмотрим решение уравнения (4.26) конечно-разностным методом. Мы представляем функцию u(x, y) значениями в узлах прямоугольной сет ки x j = x0 + j, yl = y0 + l,
j = 0, 1, . . . , J l = 0, 1, . . . , L,
(4.27)
где δ — шаг сетки (одинаковый и по x, и по y). Вторые производные можно заменить следующими выражениями u j+1,l − 2u j,l + u j−1,l u j,l+1 − 2u j,l + u j,l−1 + = ρ j,l 2 2
(4.28)
u j+1,l + u j−1,l u j,l+1 + u j,l−1 − 4u j,l = ∆2 ρ j,l
(4.29)
или
Чтобы записать систему линейных уравнений в матричной форме, пе ренумеруем точки двумерной сетки одномерной последовательностью I = j ∗ (L + 1) + 1,
j = 0, 1, . . . , J ; l = 0, 1, . . . , L
(4.30)
Уравнение (4.29) принимает вид ui+L+1 + ui−(L+1) + ui+1 + ui−1 − 4ui = ∆2 ρi
(4.31)
Оно справедливо для внутренних точек области j = 1, 2, . . . , J − 1; l = 1, 2, . . . , L − 1 Граничные точки области, в которых заданы функции или производные, приведены ниже
30
Детерминированное моделирование
j = 0, j = J, l = 0, l = L,
i = 0, . . . , L i = J(L + 1), . . . , J(L + 1) + L i = 0, L + 1, . . . , J(L + 1) i = L, L + 1 + L, . . . , J(L + 1) + L
(4.32)
Всю эту информацию (о значениях на границе) перенесем в правую часть уравнения (4.31) и уравнение примет вид: A∗u=b
(4.33)
Общее эллиптическое уравнение второго порядка имеет вид: 2
2
∂ u ∂ u ∂u ∂u a(x, y) ∂x 2 + b(x, y) ∂x + c(x, y) ∂y 2 + d(x, y) ∂y + 2
∂ u +e(x, y) ∂x∂y + f(x, y)u = g(x, y)
(4.34)
Использование разностной схемы для этого уравнения приводит к ал гебраической системе с матрицей аналогичной описанной выше. Существуют три различных подхода к решению уравнения (4.33): мето ды релаксации, «быстрые методы» [6] (методы Фурье) и прямые матричные методы. Методы релаксации явно используют структуру разреженной мат рицы A. Матрица делится на две части A = E − F,
(4.35)
Где E легко инвертируется, а F — то что осталось, тогда: E∗u=F∗u+b
(4.36)
При использовании метода релаксации сначала выбирается начальное приближение, а затем итеративно вычисляется следующее E ∗ u (r) = F ∗ u (r−1) + b
(4.37)
Матрица, обратная к матрице E, легко находится, так что итерации быстрые, подробнее метод релаксации рассмотрим позже. Так называемые быстрые методы (методы Фурье) применимы только для специального класса уравнений: с постоянными коэффициентами, или, в более общем случае, к уравнениям с разделяющимися переменными. Кро ме того, границы области должны совпадать с линиями сетки. Заметим однако, что существуют многосеточные методы релаксации, которые могут быть быстрее «быстрых» методов. При помощи матричных методов прямо решают уравнение
Методы конечных разностей для решения уравнений в частных производных A∗x=b
31
(4.38)
Конкретное решение очень сильно зависит от вида матрицы. При ре шении надо учитывать разреженность матрицы, в противном случае задача осложняется большими размерами матрицы: так, при сетке 100*100 надо найти 10000 u j,l , что приводит к матрице А размером 10000*10000.
Задачи с начальными условиями для уравнения сохранения потока Большой класс одномерных задач с начальными условиями можно при вести к уравнению сохранения потока: ∂u ∂F(u) =− , (4.39) ∂t ∂x где u и F векторы, и в некоторых случаях F зависит не только от u, но и от пространственных производных от u. Например, для одномерного волнового уравнения с постоянной скоро стью распространения волны ∂2u ∂2u = v2 2 2 ∂t ∂x можно написать два уравнения первого порядка ∂r ∂s =v , ∂t ∂x
∂s ∂r =v , ∂t ∂x
(4.40)
(4.41)
где ∂u ∂u , s= (4.42) ∂x ∂t В этом случае r и s — две компоненты u, а поток определяется линей ным матричным уравнением 0 −v F(u) = ·u (4.43) −v 0 r=v
Уравнения (4.41) аналогичны уравнениям Максвелла для одномерной электромагнитной волны. Рассмотрим уравнение для скалярной величи ны u ∂u ∂u = −v ∂t ∂x
(4.44)
32
Детерминированное моделирование
Общее решение этого уравнения — волна, распространяющаяся в по ложительном направлении оси x. u = f(x − vt)
(4.45)
Введем дискретные точки по x и t: x j = x0 + j∆x, j = 0, 1, . . . , J tn = t0 + n∆t, n = 0, 1, . . . , N
(4.46)
Пусть u j обозначает u(tn , x j). Мы можем различными способами пред ставить производную по времени. Самый очевидный способ: un+1 − unj ∂u j = + O(∆t) ∂t j,n ∆t
(4.47)
Это приближение первого порядка точности по временному шагу. Для пространственной производной используем приближение второго порядка. unj+1 − unj−1 ∂u = + O ∆x 2 (4.48) ∂t j,n 2∆x Тогда конечно–разностная аппроксимация рассматриваемого уравне ния, называемая FTCS (Forward Time Centered Space), примет вид: un+1 − unj j ∆t
= −v
unj+1 − unj−1 2∆x
(4.49)
Это выражение легко представляется как выражение для u j в момент времени n + 1. Это явная схема, т.е. u j в момент времени n + 1 мож но вычислить явно по известным величинам. Алгоритм FTCS — пример одноуровневой схемы, т.е. для нахождения u j в момент времени n+1 доста точно значений в момент времени n. К сожалению, схему можно применять только для исследования волн на небольшой части периода, так как эта схема нестабильна. Чтобы разработать схемы, применимые для реальных расчетов, рассмотрим критерий стабильности фон Неймана.
Анализ стабильности Фон Неймана Представим, что коэффициенты рассматриваемых уравнений с частны ми производными меняются очень слабо в пространстве и времени, и их можно считать постоянными. В этом случае независимые решения или соб ственные моды уравнений можно искать в виде
Методы конечных разностей для решения уравнений в частных производных unj = ξ n e ik j∆x ,
33
(4.50)
где k действительное пространственное волновое число, которое может принимать любое значение, и ξ = ξ (k) — комплексное волновое число, ко торое зависит от k. Временная зависимость единственной собственной мо ды не что иное как последовательные (возрастающие) целые степени ком плексной величины ξ. Следовательно, разностные уравнения нестабильны, если |ξ (k)| > 1 для каких-то значений k. Подставляя (4.50) в (4.49), полу чим ξ (k) = 1 − i
v∆t sin k∆x ∆x
(4.51)
Как видно из этого выражения, |ξ (k)| > 1 для всех k, т.е. схема FTCS нестабильна. Несмотря на возможно недостаточную строгость метода фон Неймана, он практически всегда дает верный ответ.
Метод Лакса Простое изменение схемы, предложенное Лаксом, позволило улучшить ситуацию. Он предложил заменить значение функции u в узле j в момент времени n в производной по времени на среднее значение в узлах j − 1 и j + 1. Это привело к следующему выражению: un+1 = j
v∆t n 1 n u u + unj−1 − − unj−1 2 j+1 2∆x j+1
(4.52)
В этом случае для величины ξ получим: ξ = cos k∆x − i
v∆t sink∆x ∆x
(4.53)
Условие стабильности — квадрат модуля |ξ| должен быть меньше или равен единицы — приводит к условию: |v|∆t ≤1 ∆x
(4.54)
Это знаменитый критерий стабильности Куранта–Фридриха–Леви. Срав ним схему Лакса и FTCS. Для этого перепишем схему Лакса в виде: un+1 − unj j ∆t
= −v
unj+1 − unj−1 2∆x
+
1 2
unj+1 − 2unj + unj−1 2∆t
(4.55)
34
Детерминированное моделирование Но это схема FTCS для уравнения:
∂u (∆x) 2 2 ∂u = −v + ∇ u, (4.56) ∂t ∂x 2∆t т.е. в уравнении появился «диссипационный» член. Если |v|∆t в точ ности не равно ∆x, то амплитуда волны спадает.
Методы Якоби и Гаусса–Зейделя. Методы релаксации для решения граничных задач Как упоминалось выше, методы релаксации разбивают разреженную матрицу на несколько, а затем задача решается при помощи итераций. Можно объяснить метод релаксации с физической точки зрения. Предпо ложим, нам надо решить эллиптическое уравнение: Lu = ρ
(4.57)
Здесь L — эллиптический оператор, а ρ — правая часть уравнения, тогда перепишем уравнение как уравнение диффузии: ∂u = Lu − ρ. (4.58) ∂t Начальное распределение u релаксирует к равновесному решению при T , стремящемся к бесконечности. Уравнение диффузии для нашей задачи можно записать в виде: ∂2u ∂2u ∂u = + − ρ. ∂t ∂x 2 ∂y 2
(4.59)
Если мы используем разностную схему FTCS, то получим: n un+1 j,l = u j,l +
∆t n (u + unj−1,l + unj,l+1 + unj,l−1 − 4unj,l ) − ρ j,l ∆t ∆2 j+1,l
(4.60)
Эта схема устойчива, если ∆t/ (∆ ∗ ∆) ≤ 1/2, в двумерном случае ∆t/ (∆ ∗ ∆) ≤ 1/4. Возьмем максимально возможный шаг, при котором ∆t/ (∆ ∗ ∆) = 1/4, тогда уравнение (4.60) примет вид: ∆2 1 n (u j+1,l + unj−1,l + unj,l+1 + unj,l−1) − ρ j,l (4.61) 4 4 Эта классическая разностная схема была предложена в конце прошло го века и называется методом Якоби. Этот метод редко используется на un+1 j,l =
Методы конечных разностей для решения уравнений в частных производных
35
практике из–за медленной сходимости, однако он служит основой для по нимания многих современных методов. Второй классический метод называется методом Гаусса–Зейделя; этот метод используется в многосеточных методах решения граничных задач. В этом методе два значения неизвестной функции в правой части (4.61) берутся в момент времени n + 1, как только они становятся известны. ∆2 1 n n+1 n u j+1,l + un+1 + u + u ρ j, l (4.62) j,l+1 j−1,l j,l−1 − 4 4 Этот метод также медленно сходится, однако анализ этого метода мо жет быть полезен. Рассмотрим методы Якоби и Гаусса–Зейделя с точки зрения представ ления матриц в виде суммы. Заменим обозначение u на x, чтобы получить стандартный вид матричного уравнения. un+1 j,l =
A·x=b
(4.63)
Мы можем представить матрицу A в виде A=L+D+U
(4.64)
Здесь −D — диагональная часть матрицы A, L — нижняя треугольная часть матрицы A, U — верхняя треугольная часть матрицы A; матрицы L и U содержат нули на диагонали. При использовании метода Якоби итерацию на r –м шаге можно записать в виде: D · x (r) = −(L + U) · x (r−1) + b
(4.65)
Матрица −D−1 ∗ (L + U) — итерационная матрица, при помощи кото рой находится следующее итерационное приближение. Была произведена для этого метода оценка числа итераций, необходимых для достижения точности 10−p r≈
p ln 10 (− ln ps)
(4.66)
При увеличении размерности сетки J спектральный радиус ps стремит ся к единице. Для данного конкретного уравнения, граничных условий и геометрии сетки спектральный радиус, в принципе, можно вычислить ана литически, так для сетки размерности J ∗ J с условиями Дирихле на всех четырех границах асимптотическая формула для больших J имеет вид: ps ' 1 −
π2 2J 2
(4.67)
36
Детерминированное моделирование При этом необходимое число итераций можно оценить по формуле: r'
1 2pJ 2 ln 10 ' pJ 2 2 π 2
(4.68)
Другими словами, число итераций пропорционально числу точек сетки. Методу Гаусса–Зейделя соответствует следующее матричное уравне ние: (L + D) · x (r) = −U · x (r−1) + b
(4.69)
Для рассматриваемой нами модели спектральный радиус и число ите раций можно оценить по формулам: ps ' 1 −
r'
π2 J2
pJ 2 ln 10 1 ' pJ 2 π2 4
(4.70)
(4.71)
Метод SOR(метод последовательной верхней релаксации) Мы получим лучший алгоритм — один из самых распространенных до семидесятых годов прошлого века, — если мы скорректируем величину x (r) на r-м шаге итераций Гаусса–Зейделя. Из метода Гаусса–Зейделя следует: x (r) = x (r−1) − (L + D) −1 · [(L + D + U) · x (r−1) − b]
(4.72)
Член в квадратных скобках - вектор невязки ξ (r−1) т.е. x (r) = x (r−1) − (L + D) −1 · ξ (r−1)
(4.73)
Для улучшения сходимости введем так называемый параметр «сверх релаксации» ω: x (r) = x (r−1) − ω (L + D) −1 · ξ (r−1)
(4.74)
Метод, использующий эту схему, назвали методом SOR (successive over relaxation). Можно доказать следующие теоремы: метод сходится только для 0 < ω < 2; если 0 < ω < 1, то говорят о недостаточно быстрой релак сации. При определенных математических ограничениях, которым удовле творяют матрицы, получающиеся в методах конечных разностей, только при 1 < ω < 2 этот метод сходится быстрее метода Гаусса–Зейделя.
Методы конечных разностей для решения уравнений в частных производных
37
Если ρJacobi спектральный радиус итерационной схемы Якоби, (квад рат его — спектральный радиус метода Гаусса–Зейделя), то оптимальное значение ω имеет вид: 2
ω= 1+
q
(4.75)
1 − ρ2Jacobi
Спектральный радиус при этом равен 2 ρ qJacobi = 2 1 + 1 − ρJacobi
ρSOR
(4.76)
Если использовать выражение для радиуса Якоби, то получим: Для достижения точности 10−p необходимо следующее число итераций: pJ ln 10 ∼ 1 r∼ = = pJ 2π 3
(4.77)
Отсюда следует, что метод SOR для достижения точности 10−p требу ет количества итераций, пропорционального J, а не J 2 . При помощи этого численного метода можно с успехом решать граничные задачи для уравне ний в частных производных. Рассмотрим эллиптическое уравнение второго порядка относительно двух переменных x и y и напишем разностную схему для квадратной об ласти. Каждой строке матрицы А в матричном уравнении Ах = b соответ ствует выражение
a j,l u j+1,l + b j,l u j−1,l + c j,l u j,l+1 + d j,l u j,l−1 + e j,l u j,l = f j,l
(4.78)
Для рассматриваемой нами задачи a = b = c = d = 1, e = 4. Итераци онную формулу можно написать в виде
u∗j,l =
1 f j,l − a j,l u j+1,l − b j,l u j−1,l − c j,l u j,l+1 − d j,l u j,l−1 e j,l
(4.79)
Средневзвешенное значение имеет вид ∗ old unew j,l = ωu j,l + (1 − ω)u j,l
Невязку для нашей задачи можно записать:
(4.80)
38
Детерминированное моделирование
ξ j,l = a j,l u j+1,l + b j,l u j−1,l + c j,l u j,l+1 + d j,l u j,l−1 + e j,l u j,l − f j,l
(4.81)
Используя формулу метода SOR, можно записать old unew j,l = u j,l − ω
ξ j,l e j,l
(4.82)
Эту формулу можно очень легко запрограммировать, и норма невязки может служить критерием окончания итерационного процесса. Узлы сетки можно разбить на четные и нечетные, при этом окажется, что значения в четных узлах зависят только от значений в нечетных узлах и наоборот. В программе, приведенной ниже, такое разбиение используется. Асимптотическая оценка скорости сходимости метода SOR может слу жить лишь для оценки порядка количества итераций; в реальности коли чество итераций может быть в 20 раз больше асимптотической оценки. В методе SOR с ускорением Чебышева используется динамическое вы числение коэффициента релаксации
ω (1/2)
ω (0) = 1 1 = 1 − ρ2Jacobi /2
ω (n+1/2) =
1 , 1 − ρ2Jacobi ω (n) /4
(4.83)
n = 1/2, 1, . . . , ∞ ω (∞) → ωo ptimal Важным достоинством этой реализации метода SOR является умень шение нормы ошибки на каждой итерации (имеется в виду ошибка при вычислении решения) Текст программы на языке С приведен ниже. #include <math.h> #define MAXITS 1000 #define EPS 1.0e-5 void sor(double **a, double **b, double **c, double **d, double **e, double **f, double **u, int jmax, double rjac){ void nrerror(char error_text[]); int ipass, j, jsw, l, lsw, n; double anorm, anormf = 0.0, omega = 1.0, resid;
Методы конечных разностей для решения уравнений в частных производных
}
39
for(j = 2; j < jmax; j++) for(l = 2; l < jmax; l++) anormf += fabs(f[j][l]); for(n = 1; n