ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ
И.М. Белова
«Компьютерное моделирование» Учебно-методическое пособие для студентов направления «Прикладная математика и информатика» и специальности «Математическое обеспечение и администрирование информационных систем»
МГИУ Москва 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 <= MAXITS; n++) { anorm = 0.0; jsw = 1; for(ipass = 1; ipass <= 2; ipass++) { lsw = jsw; for(j = 2; j < jmax; j++) { for(l = lsw + 1; l < jmax; l += 2) { resid = 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]; anorm += fabs(resid); u[j][l] -= omega * resid / e[j][l]; } lsw = 3 - lsw; } jsw = 3 - jsw; omega = (n == 1 && ipass == 1 ? 1.0 / (1.0 - 0.5 * rjac * rjac) : 1.0 / (1.0 - 0.25 * rjac * rjac * omega)); } if(anorm < EPS*anormf) return; } nrerror("MAXITS exceeded");
Главным достоинством метода является простота использования, а глав ным недостатком — недостаточно быстрая сходимость при решении боль ших задач.
Метод Кранка–Николсона Если в схеме FTCS для одномерного уравнения диффузии в правой ча сти взять значения функции в момент времени n+1, то получим полностью неявную схему. " n+1 # u j+1 − 2un+1 + un+1 un+1 − unj j j j−1 =D (4.84) ∆t (∆x) 2 Параметр ξ для этой схемы имеет вид:
40
Детерминированное моделирование
ξ=
1 1 + 4α sin2
k∆x 2
(4.85)
Эта схема устойчива при любых шагах по времени. При решении одномерного уравнения диффузии можно сочетать устой чивость неявной схемы с точностью второго порядка по пространству и времени. Представим одномерное уравнение диффузии в разностном виде следующим образом: un+1 j
−
∆t
unj
n+1 n+1 n+1 n n n u − 2u + u − u − 2u + u j j j+1 j−1 j−1 D j+1 (4.86) = 2 2 (∆x)
Параметр ξ для исследования устойчивости по критерию Неймана име ет вид: 1 − 2α sin2 k∆x 2 ξ= (4.87) 1 + 2α sin2 k∆x 2 Отсюда следует, что схема стабильна при любом шаге по времени. Эта схема называется схемой Кранка–Николсона и часто применяется для ре шения диффузионных задач. На рисунке 4 представлены три схемы для решения уравнения диффу зии. (a) — FTCS — первого порядка точности, но стабильна только при малых шагах по времени, (b) — стабильная полностью неявная схема пер вого порядка точности, (с) — схема Кранка–Николсона второго порядка точности, стабильная при больших шагах по времени. Рассмотрим двумерную задачу диффузии 2 ∂u ∂ u ∂2u =D + (4.88) ∂t ∂x 2 ∂y 2 с 1 2 n+1 2 n 2 n+1 2 n n + δ u + δ u , un+1 = u + α δ u + δ u x x y y j,l j,l j,l j,l j,l j,l 2
(4.89)
где α≡
D∆t , ∆2
∆ ≡ ∆x = ∆y,
δx2 unj,l ≡ unj+1,l − 2unj,l + unj−1,l .
(4.90) (4.91)
Методы конечных разностей для решения уравнений в частных производных
41
t or n FTCS (a)
(b)
x or j
Fully Implicit
(c)
Crank−Nicolson
Рис. 4.
Аналогично определяется δy2 unj,l . Далее надо решить систему линейных уравнений. Система уже не яв ляется трехдиагональной, как в одномерном случае, но является сильно разреженной. Ее можно решать, используя специальную технику примени мую для разреженных матриц. Существует другой способ обобщения одномерного метода Кранка–Николсона на двумерную задачу. При этом также используется схема второ го порядка точности по времени и пространству и безусловно стабильная, однако в этом случае получаются алгебраические уравнения, которые ре шаются проще. При этом каждый шаг по времени делится на два шага длиной ∆t/2 и во время одного шага изменяется одна независимая переменная, например x, а во время другого — переменная y.
42
Детерминированное моделирование
n+1/2
u j,l
1 n+1 2 = unj,l + α δx2 u j,l / + δy2 unj,l 2
(4.92)
1 n+1 2 (4.93) + α δx2 u j,l / + δy2 unj,l 2 При этом на каждом шаге надо решать трехдиагональную систему. n+1/2
un+1 j,l = u j,l
Методы Фурье для решения граничных задач Методы Фурье применимы лишь к уравнениям с постоянными коэффи циентами. Кроме того, границы области моделирования должны совпадать с линиями координатной сетки. Рассмотрим применение метода Фурье к решению уравнения вида: ∂2u ∂2u + = ρ(x, y) ∂x 2 ∂y 2
(4.94)
Будем использовать следующую разностную схему: u j+1,l + u j−1,l u j,l+1 + u j,l−1 − 4u j,l = ∆2 ρ j,l
(4.95)
Дискретное обратное преобразование Фурье для x и y имеет вид: u j,l =
J−1 L−1 1 XX uˆ mn e −2πi jm/Je −2πiln/L JL
(4.96)
m=0 n=0
Правую часть уравнения также можно разложить в ряд Фурье: ρ j,l =
J−1 L−1 1 XX ρˆ mn e −2πi jm/Je −2πiln/L JL
(4.97)
m=0 n=0
Если мы подставим эти выражения в разностное уравнение, то получим: uˆ mn e 2πim/J + e 2πim/J + e 2πin/L + e 2πin/L = ρˆ mn ∆2 ,
(4.98)
или uˆ mn =
ˆ mn ∆2 4ρ 2n 2(cos 2m J + cos L − 2)
(4.99)
Стратегия решения разностного уравнения методом Фурье состоит в следующем:
Методы конечных разностей для решения уравнений в частных производных
43
1. Вычисляем коэффициенты Фурье правой части ρˆ mn =
J−1 X L−1 X
ρ jl e 2πim j/J e 2πinl/L
(4.100)
m=0 n=0
2. Вычисляем коэффициенты разложения umn из уравнения (4.98) 3. Вычисляем ui j из обратного преобразования Фурье (4.96) Изложенная выше процедура справедлива для периодических гранич ных условий u jl = u j+J,l = u j,l+L
(4.101)
Рассмотрим сначала граничные условия Дирихле u = 0 на прямоуголь ной области, тогда разложение Фурье примет вид: u jl =
J−1 L−1 22 XX πln π jm sin uˆ mn sin JL J L
(4.102)
m=1 n=1
Вычислим коэффициенты Фурье правой части ρmn ˆ =
J−1 X L−1 X
ρ jl sin
m=1 n=1
π jm πln sin J L
(4.103)
Затем коэффициенты Фурье функции u: uˆ mn =
2 cos
∆2 ρˆ mn + cos πn L −2
πm J
(4.104)
При помощи обратного преобразования Фурье вычисляем решение. Если граничные условия неоднородны, то находится решение однород ного уравнения, удовлетворяющее граничным условиям. При этом гранич ное условие также раскладывается в ряд Фурье, а затем решение уравне ния с неоднородными граничными условиями представляется в виде суммы решений уравнения с однородными граничными условиями и решения од нородного уравнения с неоднородными граничными условиями. В случае граничных условий Неймана решение ищется в виде разложе ния по косинусам: u jl =
J L π jm πln 2 2 X 00 X 00 uˆ mn cos cos JL J L m=0
n=0
(4.105)
44
Детерминированное моделирование
В случае неоднородных граничных условий граничное условие раскла дывается в ряд Фурье аналогично тому, как это делается в случае условий Дирихле, а затем решение уравнения с неоднородными граничными усло виями представляется в виде суммы решений уравнения с однородными граничными условиями и решения однородного уравнения с неоднородны ми граничными условиями. CR(Cyclic Reduction) –метод Метод Фурье применим только для уравнений с постоянными коэффи циентами. Несколько более общий CR(Cyclic Reduction) метод применим и в том случае, когда коэффициенты зависят от координат. Рассмотрим его применение на примере решения уравнения, возникающего в случае решения уравнения Пуассона в цилиндрических, полярных или сфериче ских координатах: ∂u ∂2u ∂2u + + b(y) + c(y)u = g(x, y) ∂x 2 ∂y 2 ∂y
(4.106)
Конечно-разностная форма приведенного уравнения может быть запи сана в векторном виде: u j−1 + T · u j + u j+1 = g j ∆2
(4.107)
Здесь индекс j возник из разностного представления производных по x, а разностное представление производных по y (ему соответствовал индекс l) «внутри» векторной формы. Матрица Т имеет вид: T = B − 2l
(4.108)
Здесь 2l возникла из дифференцирования по x, а Т — из дифференциро вания по y. Матрица B, а следовательно, и матрица Т — трехдиагональная, причем коэффициенты ее не являются константами. Далее выписывают три аналогичных уравнения для трех последователь ных узлов сетки: u j−2 u j−1 uj
+ T · u j−1 + u j + T · u j + u j+1 + T · u j+1 + u j+2
= g j−1 ∆2 = g j ∆2 = g j+1 ∆2
(4.109)
Умножая среднее уравнение на матрицу Т, а затем складывая все три уравнения, получим: (1)
u j−2 + T (1) · u j + u j+2 = g j ∆2 ,
(4.110)
Метод конечных элементов для решения уравнения в частных производных
45
где T (1) = 2l − T2 ,
(1)
g j = ∆2 g j−1 − T · g j + g j+1
(4.111)
После одного уровня CR–метода мы уменьшили число уравнений в два раза, т.к. результирующие уравнения имеют тот же вид, что исходные, мы можем повторить операцию. Если для простоты мы выберем число точек сетки равным степени двойки, то в конце концов получим: (f)
T (f) · uJ/2 = ∆2 gJ/2 − u0 − uJ
(4.112)
Здесь u0 и uJ перенесены в правую часть, т.к. это известные значения искомой функции на границе. Полученное уравнение может быть решено при помощи стандартного трехдиагонального алгоритма. Два уравнения, которые надо было решить на предыдущем шаге (f − 1), содержали два неизвестных: uJ/4 и u3J/4 . Уравнение для uJ/4 содержит u0 и uJ/2 уже из вестные, и, следовательно, тоже может быть решено с использованием алгоритма для трехдиагональной матрицы. Таким образом, нам надо ре шить J − 1 трехдиагональную систему. На практике уравнения несколько преобразовывают, чтобы избежать численных нестабильностей. Комбинация метода Фурье и CR–метода, называемая методом FACR, также применяется для решения рассмотренных уравнений. На r –шаге CR–метода используют Фурье–разложение по y и получают трехдиаго нальную систему в x –направлении для каждой y –Фурье моды.
4.3 Метод конечных элементов для решения уравнения в частных производных Метод конечных элементов (МКЭ) — численный метод решения уравнений в частных производных, применяемый в первую очередь в при кладной механике [4,7] ,широко используется для решения задач механики деформируемого твёрдого тела, теплоообмена, гидродинамики и электро магнитных полей. С точки зрения вычислительной математики, идея мето да конечных элементов заключается в том, что минимизация функционала вариационной задачи осуществляется на совокупности функций, каждая из которых определена на своей подобласти. С точки зрения численного ана лиза системы МКЭ можно рассматривать как одну из конкретных ветвей диакоптики — общего метода исследования систем путём их расчленения. Возникновение метода конечных элементов связано с решением задач кос мических исследований в 1950-е годы (идея МКЭ была разработана со ветскими учёными ещё в 1936 году, но из-за неразвитости вычислительной техники метод не получил развитие). Этот метод возник из строительной
46
Детерминированное моделирование
механики и теории упругости, а уже затем было получено его математиче ское обоснование. Существенный толчок в своём развитии МКЭ получил в 1963 году после того, как было доказано то, что его можно рассматривать, как один из вариантов распространённого в строительной механике метода Рэлея–Ритца, который путём минимизации потенциальной энергии сводит задачу к системе линейных уравнений равновесия. После того, как была установлена связь МКЭ с процедурой минимизации, он стал применяться к задачам, описываемым уравнениями Лапласа или Пуассона. Область при менения МКЭ значительно расширилась, когда было установлено (в 1968 году), что уравнения, определяющие элементы в задачах, могут быть легко получены с помощью вариантов метода взвешенных невязок, таких как ме тод Галёркина или метод наименьших квадратов. Это сыграло важную роль в теоретическом обосновании МКЭ, так как позволило применять его при решении многих типов дифференциальных уравнений. Таким образом, ме тод конечных элементов превратился в общий метод численного решения дифференциальных уравнений или систем дифференциальных уравнений. С развитием вычислительных средств возможности метода постоянно расширяются, также расширяется и класс решаемых задач. Практически все современные расчёты на прочность проводят, используя метод конеч ных элементов. Метод конечных элементов (МКЭ) является проекционным методом, предназначенным для решения задач, для которых модель объекта зада ется системой дифференциальных уравнений в частных производных с за данными краевыми условиями [8] . LV + P = 0,
V(Γ) = VΓ
(4.113)
Здесь L — дифференциальный оператор (например, оператор Лапла са), V — фазовая переменная — неизвестная функция, которую следует найти, P — величина, не зависящая от V . V(Γ) = VΓ — граничное условие первого рода (Дирихле), то есть на границе задано значение фазовой переменной. Будем искать решение с помощью функции, имеющей следующий вид: V∗ = F +
M X
Am Nm
(4.114)
m=1
Здесь V ∗ — приближенное решение, F — функция, удовлетворяющая граничным условиям, Nm — пробные функции, которые на границе обла сти должны быть равны нулю, Am — неизвестные коэффициенты, которые необходимо отыскать из условия наилучшего удовлетворения дифференци альному оператору, M — количество пробных функций. Если подставить
Метод конечных элементов для решения уравнения в частных производных
47
V ∗ в исходный дифференциальный оператор, то получим невязку, прини мающую в различных точках области разное значение. R = LV ∗ + P
(4.115)
Необходимо сформулировать условие, позволяющее минимизировать эту невязку по всей области. Одним из вариантов такого условия может быть следующее уравнение: Z Wn RdS = 0 (4.116) S
Здесь Wn — некоторые весовые функции, в зависимости от выбора которых различают варианты метода взвешенных невязок, S — область пространства, в которой ищется решение. При выборе дельта–функций в качестве весовых функций будем иметь метод, который получил назва ние метод поточечной коллокации, для кусочно–постоянных функций — метод коллокации по подобластям, но наиболее распространенным является метод Галеркина, в котором в качестве весовых функций вы бираются пробные функции N. В этом случае, если количество пробных функций равно количеству весовых функций, после раскрытия определен ных интегралов приходим к замкнутой системе алгебраических уравнений относительно коэффициентов A. KA + Q = 0,
(4.117)
где коэффициенты матрицы K и вектора Q вычисляются по формулам: Z Z Kij = Wi LN j dS, Qi = Wi (LF + P)dS, (4.118) S
S
После нахождения коэффициентов A и их подстановки, получаем ре шение исходной задачи. Недостатки метода взвешенных невязок очевидны: поскольку решение ищется сразу по всей области, то количество пробных и весовых функций должно быть значительным для обеспечения прием лемой точности, но при этом возникают трудности при вычислении коэф фициентов Kij и Qi , особенно при решении плоских и объемных задач, когда потребуется вычисление двойных и тройных интегралов по обла стям с криволинейными границами. Поэтому на практике этот метод не использовался, пока не был изобретен метод конечных элементов (МКЭ). Идея метода взвешенных невязок заключается в следующем: можно вос пользоваться простыми пробными и весовыми функциями, но не во всей
48
Детерминированное моделирование
области S, а в ее отдельных подобластях (конечных элементах), обеспечи вая точность решения задачи использованием большого числа конечных элементов (КЭ). При этом КЭ могут быть простой формы, и вычисление интегралов по ним не должно вызывать особых затруднений. Математически переход от метода взвешенных невязок к МКЭ осу ществляется с использованием специальных пробных функций, которые также называются глобальными базисными функциями, обладающими сле дующими свойствами: 1. В узле аппроксимации функции имеют значение, равное единице 2. Функции отличны от нуля только в КЭ, содержащих этот узел ап проксимации, во всей остальной области они равны нулю
Базисные функции конечных элементов Пусть имеется полученное экспериментально одномерное распределе ние температуры вдоль балки (x — координата точки, в которой измерена температура) (рис. 5, случай (a)), и мы хотим найти математическую функ цию, описывающую это распределение.
Рис. 5.
Можно попытаться описать эту зависимость при помощи полинома и найти коэффициенты полинома при помощи метода наименьших квадратов. Полином высокой степени достаточно точно описывает набор эксперимен тальных данных, но при этом возникают нежелательные осцилляции (см. рис. 5, случай (б)), полином же низкой степени, плохо описывает кривую.
Метод конечных элементов для решения уравнения в частных производных
49
Попробуем решить задачу, разбив балку на области (элементы), и описать каждую область при помощи полинома невысокой степени. Введем пара метр s, который характеризующий расстояние от точки до края балки, и при помощи метода наименьших квадратов найдем для каждого элемента (области) линейный полином, описывающий каждую область наилучшим образом (рис. 6).
Рис. 6.
Линейные базисные функции Как видно из рисунка, линейные полиномы хорошо описывают тем пературное поле в каждой области, но получившаяся аппроксимация не является непрерывной, на границах областей решения надо «сшивать». Это можно сделать следующим образом. Пусть u1 и u2 — значения тем пературы u в узлах, тогда линейную функцию между этими двумя узлами можно записать в виде u(ξ) = (1 − ξ)u1 + ξu2 ,
(4.119)
где ξ (0 ≤ ξ ≤ 1) - нормированное расстояние вдоль кривой. Введем обозначения ϕ1 (ξ) = 1 − ξ,
ϕ2 (ξ) = ξ,
(4.120)
тогда u(ξ) = ϕ1 (ξ)u1 + ϕ2 (ξ)u2
(4.121)
50
Детерминированное моделирование
Удобно всегда связывать значение температуры в узле un c узлом эле мента n и связывать значение температуры U∆ в глобальном узле ∆ с локальным узлом n элемента e при помощи матрицы связи ∆(n, e), т.е. un = U∆(n,e)
(4.122)
Линейные базисные функции имеют вид, указанный на рис. 7.
Рис. 7.
На рисунке 8 приведена связь между глобальными узлами и узлами элемента
Рис. 8.
Первый элемент интерполируется выражением u(ξ) = ϕ1 (ξ)u1 + ϕ2 (ξ)u2
Метод конечных элементов для решения уравнения в частных производных u1 = U1 ,
u2 = U2 ,
51 (4.123)
второй — выражением u(ξ) = ϕ1 (ξ)u1 + ϕ2 (ξ)u2 u1 = U2 ,
u2 = U3 ,
(4.124)
третий — выражением u(ξ) = ϕ1 (ξ)u1 + ϕ2 (ξ)u2 u1 = U3 ,
u2 = U4
(4.125)
Мы получили непрерывное температурное поле, описанное значениями температуры в узлах и линейными базисными функциями (см. рис. 9)
Рис. 9.
Базисные функции можно рассматривать как весовые функции для зна чений в узлах. Так, для элемента 1: при ξ=0
u(0) = (1 − 0)u1 + 0 · u2 = u1
(4.126)
совсем не зависит от u2 , при 1 ξ= 4 при
1 1 1 3 1 u = 1− u1 + · u2 = u1 + u2 , 4 4 4 4 4
(4.127)
52
Детерминированное моделирование
Рис. 10.
1 ξ= 2
1 1 1 1 1 u = 1− u1 + · u2 = u1 + u2 , 2 2 2 2 2
(4.128)
3 3 1 3 3 = 1− u1 + · u2 = u1 + u2 , 4 4 4 4 4
(4.129)
при
ξ=
3 4
u
при ξ=1
u(1) = (1 − 1)u1 + 1 · u2 = u2 .
(4.130)
Эти весовые функции можно рассматривать как глобальные, и весо вая функция wn , связанная с глобальным узлом n, строится из базисных функций элементов соседних узлов (см. рис. 10) Таким образом, мы получили непрерывную параметрическую зависи мость температуры u от ξ, но чтобы получить u(x), мы должны связать x
Метод конечных элементов для решения уравнения в частных производных
53
Рис. 11.
и ξ. Можно написать интерполяционную формулу для определения x по значениям в узлах; так, например, для элемента 1 получим x(ξ) = ϕ1 (ξ)x1 + ϕ2 (ξ)x2
(4.131)
и аналогично для двух других элементов. Зависимость температуры от x можно определить при помощи двух соотношений u(ξ) =
X n
ϕn (ξ)un ,
x(ξ) =
X
ϕn (ξ)xn
(4.132)
n
Суммирование проводится по всем узлам элемента. Связь между x и u через ξ показана на рисунке 11.
54
Детерминированное моделирование
Рис. 12.
Квадратичные базисные функции
u(ξ) = ϕ1 (ξ)u1 + ϕ2 (ξ)u2 + ϕ3 (ξ)u3 Рисунок 12: (a): ϕ1 (ξ) = 2(ξ − 1) (ξ − 0.5) (b): ϕ2 (ξ) = 4ξ (1 − ξ) (c): ϕ3 (ξ) = 2ξ (ξ − 0.5)
(4.133)
Метод конечных элементов для решения уравнения в частных производных
55
Двумерные и трехмерные конечные элементы Двумерные билинейные базисные функции строятся как произведение одномерных функций (рис. 13).
Рис. 13.
u(ξx , ξ2) = ϕ1 (ξ1 , ξ2)u1 + ϕ2 (ξ1 , ξ2)u2 + ϕ3 (ξ1 , ξ2)u3 + ϕ4 (ξ1 , ξ2)u4 (4.134)
ϕ1 (ξ1 , ξ2) ϕ2 (ξ1 , ξ2) ϕ3 (ξ1 , ξ2) ϕ4 (ξ1 , ξ2)
= (1 − ξ1) (1 − ξ2) = ξ1 (1 − ξ2) = (1 − ξ1)ξ2 = ξ1 ξ2
(4.135)
Например, для шаблона, состоящего из 6 узлов, и для квадратично линейного элемента, получим
56
Детерминированное моделирование
u=
6 X
ϕn (ξ1 , ξ2)un
(4.136)
n=1
ϕ1 (ξ1 , ξ2) ϕ2 (ξ1 , ξ2) ϕ3 (ξ1 , ξ2) ϕ4 (ξ1 , ξ2) ϕ5 (ξ1 , ξ2) ϕ6 (ξ1 , ξ2)
= = = = = =
2(ξ1 − 1) (ξ1 − 0.5) (1 − ξ2) 4ξ1 (1 − ξ1) (1 − ξ2) 2ξ1 (ξ1 − 0.5) (1 − ξ2) 2(ξ1 − 1) (ξ1 − 0.5)ξ2 4ξ1 (1 − ξ1)ξ2 2ξ1 (ξ1 − 0.5)ξ2
(4.137)
Рис. 14.
Для 8–узельного линейного элемента получим ϕ1 (ξ1 , ξ2) ϕ2 (ξ1 , ξ2) ϕ3 (ξ1 , ξ2) ϕ4 (ξ1 , ξ2) ϕ5 (ξ1 , ξ2) ϕ6 (ξ1 , ξ2) ϕ7 (ξ1 , ξ2) ϕ8 (ξ1 , ξ2)
= = = = = = = =
(1 − ξ1) (1 − ξ2) (1 − ξ3) ξ1 (1 − ξ2) (1 − ξ3) (1 − ξ1)ξ2 (1 − ξ3) ξ1 ξ2 (1 − ξ3) (1 − ξ1) (1 − ξ2)ξ3 ξ1 (1 − ξ2)ξ3 (1 − ξ1)ξ2 ξ3 ξ1 ξ2 ξ3
(4.138)
Треугольные элементы Для треугольных элементов используют соотношения между площадя ми (см. рис. 16)
Метод конечных элементов для решения уравнения в частных производных
57
Рис. 15.
Рис. 16.
1 x SP23 1 L1 = = 1 x2 S123 2 1 x3
y y2 y3
/∆ = a1 + b1 x + c1 y 2∆
(4.139)
58
Детерминированное моделирование
1 x1 1 ∆ = 1 x2 2 1 x3
y1 y2 y3
(4.140)
1 x SP13 1 L2 = = 1 x3 S123 2 1 x1
y y3 y1
/∆ = a2 + b2 x + c2 y 2∆
(4.141)
1 x 1 = 1 x1 2 1 x2
y y1 y2
/∆ = a3 + b3 x + c3 y 2∆
(4.142)
L2 =
SP12 S123
a1 = x2 y3 − x3 y2 , a2 = x3 y1 − x1 y3 , a3 = x1 y2 − x2 y1 ,
b1 = y2 − y3 , b2 = y3 − y1 , b3 = y1 − y2 ,
c1 = x3 − x2 c2 = x1 − x3 c3 = x2 − x1
(4.143)
L1 + L2 + L3 = 1
(4.144)
u(x, y) = ϕ1 (x, y)u1 + ϕ2 (x, y)u2 + ϕ3 (x, y)u3
(4.145)
ϕ1 = L1 , ϕ2 = L2 , ϕ3 = L3 = 1 − L1 − L2
(4.146)
Для 6-узельного квадратичного элемента
Рис. 17.
Метод конечных элементов для решения уравнения в частных производных ϕ1 ϕ2 ϕ3 ϕ4 ϕ5 ϕ6
= = = = = =
L1 (2L1 − 1) L2 (2L2 − 1) L3 (2L3 − 1) 4L1 L2 4L2 L3 4L3 L1
59
(4.147)
Решение одномерной стационарной задачи теплопроводности методом конечных элементов В качестве первого примера применения метода конечных элементов рассмотрим решение одномерной стационарной задачи теплопроводности. Распределение температуры вдоль одномерной проводящей балки можно описать уравнением: d du −k + q(u, x) = 0 (4.148) dx dx Здесь u температура, q(u, x) — утечка тепла, k — теплопроводность. Рассмотрим в качестве примера случай q(u, x) = u. Тогда уравнение примет вид: d du k + u = 0, 0 < x < 1 (4.149) − dx dx Предположим, что граничные условия имеют вид u(0) = 0 и u(1) = 1. Это уравнение при k = 1 имеет точное решение, равное e e x − e −x (4.150) e2 − 1 Это решение можно сравнить с приближенным решением, полученным методом конечных элементов. Чтобы решить рассматриваемое уравнение методом конечных элементов мы должны проделать следующее: 1. Записать уравнение теплопроводности в интегральном виде. 2. Проинтегрировать по частям (в одномерном случае) или с использо ванием теоремы Грина (в двумерном или трехмерном случае), чтобы уменьшить порядок производных. 3. Ввести конечно-элементную аппроксимацию для температурного по ля, используя параметры узлов и базисные функции конечных эле ментов. 4. Проинтегрировать по элементам и вычислить матрицы нагрузки эле ментов и векторы правой части. u(x) =
60
Детерминированное моделирование
5. Путем ансамблирования получить глобальные уравнения. 6. Записать граничные условия. 7. Решить глобальные уравнения. 8. Оценить потоки. Рассмотрим перечисленные выше шаги. 1. Интегральное уравнение. Составим интегральное уравнение, ис R пользуя метод взвешенных невязок Rω. dx = 0. Здесь R — невязка, а w — весовая функция. du d k +u (4.151) R=− dx dx Если u точное решение уравнения во всей области, то невязка равна нулю во всей области. Подставим выражение для невязки в интегральное уравнение Z1
d − dx
du k dx
w + uω
dx = 0
(4.152)
0
Полученное интегральное уравнение показывает, что невязка (или ошиб ка) стремится к нулю в среднем по пространству; ω — выбирается так, что невязка ортогональна к пространству функций, используемых в качестве аппроксимации u. 2. Интегрирование по частям. Большое преимущество решения за дачи путем решения интегрального уравнения состоит в возможности по нижения порядка производных при помощи интегрирования по частям (в случае двумерной и трехмерной задач при помощи использования теоремы Грина). Использование формулы интегрирования по частям дает: Z1
dg dx = [f · g] 10 − dx
0
Z1 w
d dx
−k
du dx
0
Z1 g
df dx dx
(4.153)
0
1 Z1 du du dω dx = ω −k − −k dx dx 0 dx dx
(4.154)
0
В результате уравнение примет вид: Z1 k 0
du dω + uω dx dx
1 du dx = k ω dx 0
(4.155)
Метод конечных элементов для решения уравнения в частных производных
61
3. Аппроксимация конечными элементами. Разделим область 0 < x < 1 на три элемента равной длины и заменим u(x) внутри каждого эле мента при помощи конечно-элементной аппроксимации u(ξ) = ϕ1 (ξ)u1 + ϕ2 (ξ)u2 = ϕn (ξ)un , x(ξ) = ϕ1 (ξ)x1 + ϕ2 (ξ)x2 = ϕn (ξ)xn
(4.156)
При использовании линейных базисных функций ϕ1 (ξ) = 1 − ξ, ϕ2 (ξ) = ξ. Далее используем аппроксимацию Галеркина ω = ϕm . Интеграл по рассматриваемой области можно представить в виде сум мы интегралов по каждому конечному элементу: Z1
1
2
Z3
Z3
0
0
· dx +
· dx +
· dx =
Z1 · dx
(4.157)
2 3
1 3
Перейдем в интегралах от интегрирования по x к интегралам по ξ: Zx2
Z1 · dx =
x1
·J dξ
(4.158)
0
dx , J — якобиан перехода от x координат к ξ координатам. J = dξ 4. Интегралы по элементам. Интегралы в левой части уравнения име ют вид: Z1 k
du dω dx dx
J dξ
(4.159)
0
Здесь u = ϕn un , ω = ϕm и уравнение принимает вид: Z1 un
k
dϕm dξ dϕn dξ + ϕm ϕn J dξ dξ dx dξ dx
(4.160)
0 dx = 13 . Заметим, что x(ξ) = ϕn Xn , x = 13 ξ, J = dξ Матрица, на которую умножается un называется матрицей жесткости:
Emn =
R1 0
=
m dξ dϕn dξ k dϕ + ϕ ϕ m n J dξ = dξ dx dξ dx
R1 0
dϕn m k dϕ dξ 3 dξ 3
+ ϕm ϕn)
(4.161) 1 3
dξ
62
Детерминированное моделирование
Чтобы найти матрицу, подставим базисные функции и их производные dϕ2 1 ϕ1 (ξ) = 1 − ξ ⇒ dϕ dξ = −1, ϕ2 (ξ) = ξ ⇒ dξ = 1. Тогда получим
E11 = =
1 3
R1
9k
0
1 3
R1
dϕ1 dξ
2
+ (ϕ1) 2
dξ = (4.162)
2
9k(−1) + (1 − ξ)
2
0
dξ =
1 3
9k +
1 3
Аналогично, −9k + 16 , E22 = 13 9k + 13 , ! 1 1 1 1 3 9k + 3 3 −9k + 6 1 1 1 1 3 −9k + 6 3 9k + 3
E12 = E21 =
Emn =
1 3
5. Ансамблирование
Рис. 18.
(4.163)
Метод конечных элементов для решения уравнения в частных производных
28 9
53 − 18 0
− 53 18 28 9
+
28 9
− 53 18
0
0
0
0
− 53 18
0
28 9
+
28 9
− 53 18
53 − 18 28 9
U1
63
U2 U3 U4
(4.164)
Решение двумерной и трехмерной стационарной задачи теплопроводности методом конечных элементов Трехмерное стационарное уравнение теплопроводности можно записать в виде: ∂ ∂u ∂ ∂u ∂ ∂u − kx − ky − kz =0 (4.165) ∂x ∂x ∂y ∂y ∂z ∂z Здесь kx , ky , kz — коэффициенты теплопроводности вдоль осей x, y, z. В случае постоянных коэффициентов теплопроводности уравнение запи сывается в виде −∇· (k∇u) = 0. Если же коэффициенты теплопроводности одинаковы по всем направлениям, то уравнение принимает вид: k∇2 u = 0. Мы должны решит уравнене в области Ω с границей Γ (рис. 19).
Рис. 19.
Интегральное уравнение соответствующее этому уравнению можно за писать следующим образом [7] : Z −∇ · (k∇u)ω dΩ = 0 (4.166) Ω
При помощи формулы Грина–Гаусса (аналог формулы интегрирования по частям):
64
Детерминированное моделирование
Z
Z (f ∇ · ∇g + ∇ f · ∇ g) dΩ =
Ω
f
∂g dΓ ∂n
(4.167)
Γ
Уравнение можно переписать в виде Z
Z −∇ · (k∇u)ω dΩ =
Ω
Z k∇u · ∇ω dΩ −
Ω
k
∂u ω dΓ ∂n
(4.168)
Γ
В отсутствие правой части (нет источников тепла) уравнение имеет вид Z Z ∂u k∇u · ∇ω dΩ = k ω dΓ (4.169) ∂n Ω
Γ
Выражение под знаком интеграла в левой части можно представить в виде ∂u ∂ξi ∂ω ∂ξ j ∂u ∂ω · = · (4.170) ∇u · ∇ω = ∂xk ∂xk ∂ξi ∂xk ∂ξ j ∂xk u и ω представляются в виде u = ϕn un , ω = ϕm . Здесь предполагается суммирование по одинаковым индексам. Производные переменных «математического» пространства (0 < ξ < 1) по «физическим» переменным x и y определяются следующим образом: ∂ξ1 ∂x ∂ξ2 ∂x
∂ξ1 ∂y ∂ξ2 ∂y
= 1/
∂x ∂ξ 1 =
∂y ∂ξ1
∂x ∂y ∂ξ1 ∂ξ2
−
−1
∂x ∂ξ2
=
∂y ∂ξ2
∂y ∂ξ2
∂x ∂y ∂ξ2 ∂ξ1
·
∂x − ∂ξ 2
∂y − ∂ξ 1
∂x ∂ξ1
(4.171)
Представим область, в которой мы ищем решение, в виде совокупности элементов I [ Ω= Ωi (4.172) i=1
В каждом элементе u можно представить в виде u = ϕn un = ϕ1 u1 + + ϕ2 u2 + · · · + ϕN uN . Отобразим каждый элемент на плоскость (ξ1 , ξ2), как представлено на рисунке 20.
Метод конечных элементов для решения уравнения в частных производных
65
Рис. 20.
Для каждого элемента базисные функции и их производные имеют вид:
ϕ1 = (1 − ξ1) (1 − ξ2) ⇒ ϕ2 = ξ1 (1 − ξ2)
⇒
ϕ3 = (1 − ξ1) ξ2
⇒
ϕ4 = ξ1 ξ2
⇒
∂ϕ1 ∂ξ1 ∂ϕ2 ∂ξ1 ∂ϕ3 ∂ξ1 ∂ϕ4 ∂ξ1
= − (1 − ξ2) , = 1 − ξ2 , = −ξ2 , = ξ2 ,
∂ϕ1 ∂ξ2 ∂ϕ2 ∂ξ2 ∂ϕ3 ∂ξ2 ∂ϕ4 ∂ξ2
= − (1 − ξ1) = −ξ1 = 1 − ξ1 = ξ1 (4.173)
Интегральное уравнение в случае двумерной задачи имеет вид: Z Z ∂u ∂ω ∂u ∂ω ∂u k + dΩ = k ω dΓ (4.174) ∂x ∂x ∂y ∂y ∂n Ω
Γ
Используя представление решения в виде разложения по базисным функциям и базисную функцию в качестве весовой функции, получим P R
un k
i
Ω
=
R Γ
∂ϕn ∂ϕm ∂x ∂x
+
∂ϕn ∂ϕm ∂y ∂y
dΩ =
∂u k ∂n ϕn dΓ ⇔ Emn un = Fm
(4.175)
Emn — матрица жесткости, а Fm — вектор нагрузки m = 1, . . . , 4 и = = 1, . . . , 4.
66
Детерминированное моделирование
Рис. 21.
Рассмотрим распределение тепла в единичном квадрате (см. рисунок 21). В этом случае элемент E11 имеет вид: Z1 Z1 E11 = k 0
(1 − y) 2 + (1 − x) 2 dxdy =
2 k 3
(4.176)
0
Аналогично вычисляются остальные элементы матрицы жесткости. Заметим, что если элемент не является единичным квадратом, нам надо переходить от координат (x, y) к координатам (ξ1 , ξ2). В этом случае надо в интеграл добавить якобиан перехода, т. е. использовать соотношение: ∂ϕn ∂ϕn ∂ξ1 ∂ϕn ∂ξ2 ∂ϕn ∂ξi = + = ∂x ∂ξ1 ∂x ∂ξ2 ∂x ∂ξi ∂x
(4.177)
Для единичного квадрата матричное уравнение имеет вид:
2 3
1 − 6 k 1 − 6 − 13
− 16
− 16
− 31
2 3
− 13
− 61
− 13
2 3
− 61
− 16
− 16
2 3
u1
u2 = RHS u3 u4
(Right Hand Side) (4.178)
Матрица жесткости симметрична. Обычно область, для которой ищется решение, состоит не из одного квадратного элемента, поэтому на следую щем шаге надо получить матрицу жесткости для всей области. В качестве
Метод конечных элементов для решения уравнения в частных производных
67
примера рассмотрим область, состоящую из четырех единичных квадрат ных элементов и девяти узлов. Получим следующую глобальную матрицу жесткости A: 2 1 1 1 3
− 16 1 −6 A = − 13
−6 2 + 23 3 − 16 − 13 1 − 6 − 16 − 13
−6 − 31
− 16 2 3
− 13 − 16
2 3
+ 23 − 16
− 61
2 3
− 16 − 13
A·
u1 u2 u3 u4 u5 u6 u7 u8 u9
−3 − 61 − 16 − 13 − 16 − 16 + 32 + 23 + − 61 − 16 − 31 − 61 − 16 − 13
− 13 − 16 2 3
− 16 − 16 2 + 23 3 − 13 − 16
− 61 − 13 2 3
− 61
− 31 − 16 − 13 − 16 2 + 23 3 − 61
− 16
− 13 − 16 − 16
= RHS
Рис. 22.
(4.179)
2 3
68
Детерминированное моделирование Выполнив необходимые арифметические действия, получим:
2 3
− 16 1 − 61 − 3
− 61 4 3
− 61 − 13 − 13 − 13
− 16 2 3
− 31 − 61
− 16 − 31 4 3
− 31 − 16 − 13
− 13 − 13 − 13 − 13 8 3
− 13 − 13 − 13 − 13
− 31 − 61 − 31 4 3 − 31 − 61
− 16 − 13 2 3
− 16
− 31 − 31 − 13 − 61
− 31 − 61
− 61
2 3
4 3
− 61
u1 u2 u3 u4 u5 u6 u7 u8 u9
= RHS
(4.180) Далее надо наложить граничные условия и решать алгебраическую си стему. Наложение граничных условий уменьшает количество неизвестных и уравнений. В нашем примере будем считать, что задана температура на левой и правой границах пластины, а через верхний и нижний края нет потока тепла. Учитывая, что температура в узлах, лежащих на вертикаль ных границах, известна, нам надо найти ее только в узлах 2, 5, 8. Правая часть в узлах 2 и 8 равна нулю, т. к. через них поток тепла равен нулю. Напомним, что правая часть имеет вид: Z ∂u ω dΓ (4.181) ∂n Γ
В узле 5 правая часть также равна нулю, т. к. это внутренний узел. Для получения решения надо решить три линейных уравнения.
4.4 Метод граничных элементов для решения уравнений в частных производных
Дельта-функция Дирака Прежде, чем познакомиться с методом граничных элементов, надо опре делить фундаментальное решение. Фундаментальное решение тесно связа но с дельта–функцией Дирака. Рассмотрим последовательность распреде лений силы, приложенной к большой пластине ( n 1 2 , |x| < n ωn (x) = (4.182) 0, |x| > n1
Метод граничных элементов для решения уравнений в частных производных
69
Каждое такое распределение удовлетворяет условию Z∞ ωn (x)dx = 1.
(4.183)
−∞
Суммарная сила, приложенная к пластине, равна 1. При увеличении n область, в которой сила отлична от нуля, уменьшается. Нестрого дельта функцию можно определить следующим образом: δ (x) = lim ωn (x), n→∞
(4.184)
(см. рис. 23)
Рис. 23.
Свойства дельта-функции Z∞ δ (x)dx = 1, −∞
(4.185)
70
Детерминированное моделирование
Z∞ δ (x)h(x)dx = h(0).
(4.186)
−∞
Это можно показать следующим образом: R∞
δ (x)h(x)dx = limn→∞
−∞
R∞
ωn (x)h(x)dx =
−∞ 1
=
limn→∞ n2
Rn − n1
(4.187)
h(x)dx = limn→∞ n2 h(ξ) n2 = h(0).
Кроме приведенных выше, дельта-функция еще обладает следующими свойствами: Z∞ δ (ξ − x)h(x)dx = h(ξ),
(4.188)
δ (ξ − x) = H 0 (ξ − t)
(4.189)
−∞
Дельта-функция — производная функции Хэвисайда 0 ξ
t
(4.190)
Двумерная дельта-функция вводится следующим образом δ (ξ − x, η − y) = δ (ξ − x)δ (η − y)
(4.191)
Фундаментальное решение Построим фундаментальное решение для двумерного уравнения Лапла са. Это решение называется также функция Грина. Рассмотрим двумерное уравнение Лапласа [7] : ∂2u ∂2u + =0 ∂x 2 ∂y 2 в области Ω ∈ <2 .
(4.192)
Метод граничных элементов для решения уравнений в частных производных
71
Фундаментальным решением этого уравнения называется решение урав нения вида ∂2u ∂2u + + δ (ξ − x) (η − y) = 0. ∂x 2 ∂y 2
(4.193)
Надо найти решение уравнения Лапласа в двумерной области, имею щее сингулярность в точке (ξ, η). Это решение должно быть симметрично относительно точки (ξ, η), поэтому мы введем полярную систему координат с центром в точке сингулярности, тогда q r = (ξ − x) 2 + (η − y) 2 (4.194) Оператор Лапласа запишется в виде 1 ∂ ∇ ω= r ∂r 2
∂ω 1 ∂2ω r + 2 2 ∂r r ∂θ
.
(4.195)
Для r > 0 δ (ξ − x, η − y) = 0; учитывая симметрию задачи, уравнение можно записать в виде Учитывая симметрию задачи, уравнение можно записать в виде 1 ∂ ∂ω r = 0. (4.196) r ∂r ∂r Это уравнение можно решить при помощи обычного интегрирования, решение будет иметь вид: ω = A log r + B
(4.197)
Эта функция сингулярна в точке r = 0. Для нахождения A и B вос пользуемся свойствами дельта-функции. Z Z 2 ∇ ωdD = − δdD = −1. (4.198) D
D
Здесь D — любая область, содержащая точку r = 0. Для оценки ин тересующих нас интегралов мы рассмотрим простую область — круг с центром в точке r = 0 и радиусом > 0 (см. рис. 24). При помощи теоремы Грина–Гаусса оценим интеграл Z Z ∂ω ∇2 ωdD = dS = ∂n D
∂D
72
Детерминированное моделирование
Рис. 24.
Z =
∂ω A dS = 2π = 2πA. ∂r
(4.199)
∂D
Мы преобразовали интеграл по площади в интеграл по границе; т. к. область D — круг, то нормаль n направлена по радиусу. Отсюда получаем: 1 , 2π
(4.200)
1 log r + B. 2π
(4.201)
A=−
ω=−
B принимает произвольные значения, но обычно полагается равным нулю; таким образом, фундаментальное решение для уравнения Лапласа для двумерной области имеет вид: ω=− причем
1 1 1 log r = log , 2π 2π r
(4.202)
Метод граничных элементов для решения уравнений в частных производных
r=
q
(ξ − x) 2 + (η − y) 2
73
(4.203)
Аналогичным образом находится фундаментальное решение для трех мерного уравнения Лапласа, оно имеет вид: ω=
1 4πr
(4.204)
Метод граничных элементов для двумерной задачи Рассмотрим применение метода граничных элементов для решения урав нения Лапласа в двумерной области. Сначала, также как в методе ко нечных элементов, запишем интегральное уравнение и применим теорему Грина–Гаусса: Z Z Z ∂u 0 = ∇2 u.ωdΩ = ωdΓ − ∇u.∇ωdΩ. (4.205) ∂n Ω
Ω
∂Ω
Затем применим теорему Грина–Гаусса еще раз ко второму интегралу в правой части Z Z ∂u 0= ωdΓ − ∇u.∇ωdΩ = ∂n Ω
∂Ω
Z =
∂u ωdΓ − ∂n
Z u
∂ω dΓ + ∂n
u∇2 ωdΩ.
(4.206)
Ω
∂Ω
∂Ω
Z
В методе конечных элементов в качестве весовой функции выбиралась одна из базисных функций, которые использовались для аппроксимации решения (решение искалось в виде разложения по базисным функциям). В методе граничных элементов в качестве весовой функции используется фундаментальное решение уравнения Лапласа, полученное выше. ω=− r=
q
1 log r, 2π
(ξ − x) 2 + (η − y) 2
Используя свойства дельта-функции, получим: Z Z 2 u∇ ωdΩ = − uδ (ξ − x) (η − y)dΩ = −u(ξ, η), Ω
Ω
(4.207)
(4.208)
74
Детерминированное моделирование где (ξ, η) ∈ Ω
Здесь вместо интеграла по области получили значение функции в точке, и уравнение принимает вид: Z Z u∇2 ωdΩ = − uδ (ξ − x) (η − y)dΩ = 0. (4.209) Ω
Ω
Таким образом, интегральное уравнение записывается в виде: Z Z ∂ω ∂u u(ξ, η) + u dΓ = ωdΓ, (4.210) ∂n ∂n ∂Ω
∂Ω
где (ξ, η) ∈ Ω Это уравнение содержит только интегралы по границе. Если точка (ξ, η) находится вне Ω, то Z Z u∇2 ωdΩ = − uδ (ξ − x) (η − y)dΩ = 0. (4.211) Ω
Ω
Если точка (ξ, η) лежит на границе области, то первый член предыду щего уравнения заменяется выражением: 1 u(ξ, η) 2 Пусть P — точка с координатами (ξ, η) в области Ω. Чтобы оценить интеграл Z u∇2 ωdΩ, Ω
добавим в область Ω окружность радиусом вокруг точки P (точнее ее часть, выходящую за пределы области Ω) (см. рис. 25) и увеличенную область назовем Ω0 , а ее границу Γ0 . Γ0 = Γ− ∪ Γ
(4.212) 0
Теперь точка P находится внутри области Γ и мы можем написать
Метод граничных элементов для решения уравнений в частных производных
75
Рис. 25.
Z u(P) +
u
Γ− ∪Γ
Z
∂ω dΓ = ∂n
∂u ωdΓ ∂n
(4.213)
Γ− ∪Γ
Нам надо рассмотреть предел этого выражения при → 0. Рассмотрим входящие в выражение интегралы Z Z ∂ω ∂ 1 u dΓ = u − log r dΓ = ∂n ∂n 2π Γ
Γ
Z u
=
∂ ∂r
−
Z 1 1 u log r dΓ = − dΓ = 2π 2π r
Γ
Γ
=−
1 1 2π
Z udΓ → −
1 1 u(P)π, 2π
(4.214)
Γ
следовательно u
∂ω u(P) 1 u(P) dΓ = lim − π = − →0 ∂n 2π 2
(4.215)
ω
∂u 1 ∂u dΓ = lim − (P)π log = 0 →0 ∂n 2π ∂n
(4.216)
Z lim
→0 Γ
Аналогично Z lim
→0 Γ
76
Детерминированное моделирование
Теперь осталось рассмотреть интегралы по Γ− Если подынтегральные выражения достаточно «хорошие» (в противном случае надо рассматри вать главные значения интегралов), то Z Z ∂u ∂u ωdΓ = ωdΓ lim →0 ∂n ∂n Γ
Γ−
Z
lim
→0
∂ω udΓ = ∂n
Γ−
Z
∂ω udΓ ∂n
(4.217)
Γ
и Z u
u(P) +
∂ω 1 dΓ = u(P) + ∂n 2
Γ
1 u(P) + 2
Z
∂u ωdΓ, ∂n
Γ
Z u
∂ω dΓ = ∂n
Γ
Z
∂u ωdΓ ∂n
(4.218)
Γ
Полученное выражение справедливо, если граничная точка P «глад кая» (в этой точке существует единственная производная); если точка P яв ляется вершиной угла α, то коэффициент 1/2 заменяется α/2π (см. рис. 26)
Рис. 26.
Таким образом, мы получаем интегральное уравнение Z Z ∂ω ∂u c(P)u(P) + u dΓ = ωdΓ, ∂n ∂n Γ
где
Γ
(4.219)
Метод граничных элементов для решения уравнений в частных производных
ω=−
1 log r, 2π
1, 1/2, c(P) = α/2π,
r=
q
77
(ξ − x) 2 + (η − y) 2 ,
P∈Ω P ∈ Γ и Γ гладкая в т. P P ∈ Γ и Γ не гладкая в т. P
(4.220)
Для трехмерной задачи уравнение получается такое же, но справедливы следующие соотношения: 1 , r 4πr 1, 1/2, c(P) = α/4π, ω=
=
q
(ξ − x) 2 + (η − y) 2 + (γ − z) 2 ,
P∈Ω P ∈ Γ и Γ гладкая в т. P P ∈ Γ и Γ не гладкая в т. P
(4.221)
∂u В полученное нами уравнение входят значения u и ∂n на границе и зна ∂u чение u в точке P. Если значения u и ∂n на границе известны, то значения u в точке P внутри области Ω могут быть найдены. Полученное уравнение ∂u на поверхности, а затем, ес используется для нахождения значений u и ∂n ли необходимо, используется для нахождения решения в точках области. Процедура численного решения интегрального уравнения мето дом граничных элементов Сначала область разбивается на граничные элементы.
Рис. 27.
78
Детерминированное моделирование
На рис. 27 (a) изображена сетка граничных элементов, а на рис. 27 (b) — сетка конечных элементов. Используя разбиение границы на элементы N S (Γ = Γ j), получим: j=1
c(P)u(P) +
N Z X j=1 Γ
N
u
X ∂ω dΓ = ∂n
Z
j=1 Γ
j
∂u ωdΓ ∂n
(4.222)
j
На каждом элементе Γ j введем стандартные базисные функции конеч ных элементов uj =
X
ϕα u jα ,
α
qj ≡
X ∂u j = ϕα q jα , ∂n α
(4.223)
где u j , q j — значения u и q на граничном элементе Γ j , где u jα , q jα — значения u и q в узле α элемента Γ j . Базисные функции для u и q могут быть стандартными одномерными базисными функциями конечных элемен тов (если мы решаем двумерную задачу, то мы должны интерполировать функции при помощи одномерных элементов). Обычно базисные функции для u и q берутся одинаковыми, но это не обязательно. Использование разложения по базисным функциям приводит к соотношению:
c(P)u(P) +
N X X
Z u jα
j=1 α
Γj
N
Z
j=1
Γj
XX ∂ω ϕα dΓ = q jα ∂n α
ϕα ωdΓ
(4.224)
Уравнение справедливо для любой точки P на границе Γ. Пусть P сов падает с i –тым узлом введенной сетки, тогда уравнение для i –того узла имеет вид:
ci ui +
N X X j=1 α
N
Z u jα
ϕα Γj
XX ∂ωi dΓ = q jα ∂n α j=1
Z ϕα ωi dΓ
(4.225)
Γj
Здесь ωi — фундаментальное решение с сингулярностью в узле i. По лученное уравнение можно записать в виде: ci ui +
N X X j=1 α
где
u jα aα ij =
N X X j=1 α
q jα biαj ,
(4.226)
Метод граничных элементов для решения уравнений в частных производных
aα ij =
Z ϕα
∂ωi dΓ, ∂n
biαj =
Γj
79
Z ϕα ωi dΓ
(4.227)
Γj
Затем соберем эти уравнения в матричную систему (4.228)
Au = Bq
Векторы u и q — векторы значений в узлах величин u и q. Если у нас L узлов, то получим L уравнений и L неизвестных. Необходимо преобра зовать систему к следующему виду (4.229)
Cx = f,
где x — вектор неизвестных. Систему можно решить стандартными методами линейной алгебры. Матрицы A и B (и, следовательно, C) пол ностью определенные и несимметричные (в методе конечных элементов матрица жесткости симметрична и разрежена). Решение в точке области P ищется следующим образом:
u(P) =
N X X j=1 α
q jα bPαj −
N X X
u jα aα Pj
(4.230)
j=1 α
Сравнение методов конечных и граничных элементов Это 2.
1.
КЭ: Требуется строить сетку во всей области задачи ГЭ: Требуется строить сетку только на границе области одно из основных преимуществ метода граничных элементов. КЭ: Решение ищется сразу во всей области ГЭ: Сначала ищется решение на границе; решение во всей об ласти, если это необходимо, ищется потом Существует большое количество задач, для решения которых доста точно найти только решение на границе, а решение во всей области не требуется. 3. КЭ: Значения производных на границе (потоков) находятся с меньшей точностью ГЭ: Точность нахождения u и q — одинакова 4. КЭ: Используется аппроксимация самого дифференциального уравнения
80
Детерминированное моделирование
5.
6.
7.
8.
ГЭ: Используется аппроксимация только граничных условий. В методе граничных элементов используются теорема Грина–Гаусса и фундаментальные решения, аппроксимация самого уравнения внут ри исследуемой области не проводится, аппроксимация используется только на границе. КЭ: Матрица в получившейся алгебраической системе — раз режена и симметрична. ГЭ: Матрица в получившейся алгебраической системе полно стью заполнена и несимметрична. Выбор наиболее подходящего метода частично зависит от соотноше ния размера области и ее границы. Так, для задач, решающихся в бесконечных или полубесконечных областях, метод граничных эле ментов предпочтительней. КЭ: Интегралы, получающиеся в методе конечных элементов легко вычислить. ГЭ: В методе граничных элементов возникают трудности при вычислении интегралов. КЭ: Применим для широкого класса задач. Успешно решает многие нелинейные задачи ГЭ: Не всегда справляется даже с линейными задачами. Существует достаточно много задач, для которых не удается найти фундаментальных решений. КЭ: Относительно легок в применении. ГЭ: Применять гораздо труднее.
Список литературы и интернет-ресурсов [1] Михайлов Г.А., Войтишек А.В. Численное статистическое модели рование. Методы Монте–Карло. Учебное пособие для вузов. — ИЦ Академия, 2006. [2] Гмурман В.Е. Теория вероятностей и математическая статистика. — М.: Высшая школа, 1998. [3] http://en.wikipedia.org/wiki/Random_number_generator — Ви кипедия (свободная энциклопедия) о генераторах случайных чисел. [4] http://ru.wikipedia.org/wiki/ — Википедия (свободная энцикло педия). [5] Годунов С.К., Рябенький В.С. Разностные схемы. — М.: Наука, 1977. [6] http://www.nr.com — Набор «численых рецептов». [7] http://www.bioeng.auckland.ac.nz/cmiss/fembemnotes/ fembemnotes.pdf — Заметки о методе конечных элементов. [8] http://www.kgtu.runnet.ru/WD/TUTOR/mke/mke.html — Трудоно шин В.А. и Уваров М.Ю. «Метод конечных элементов». [9] Кнут Д.Э. Искусство программирования т.2 — М.: Вильямс, 2000.