Министерство образования и науки РФ Федеральное агентство по образованию Саратовский государственный технический университет ПРИНЦИПЫ КОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ. МЕТОДЫ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ И ДИФФЕРЕНЦИРОВАНИЯ. СЛУЧАЙНЫЕ БЛУЖДАНИЯ Методические указания к выполнению лабораторных работ по дисциплине «Моделирование физических систем» для студентов направления 230100.62 «Информатика и вычислительная техника» и специальности 230105.65 «Программное обеспечение вычислительной техники автоматизированных систем» дневной формы обучения Одобрено редакционно-издательским советом Саратовского государственного технического университета Саратов 2011 ЛАБОРАТОРНАЯ РАБОТА №1 ПРИНЦИПЫ КОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ. МЕТОДЫ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ И ДИФФЕРЕНЦИРОВАНИЯ Цель работы: ознакомиться с основными принципами компьютерного моделирования физических систем и процессов, ознакомиться с ролью методов численного дифференцирования и интегрирования при решении физических задач на компьютере. Принципы компьютерного моделирования Компьютерное моделирование является одним из эффективных методов изучения физических систем. Часто компьютерные модели проще и удобнее исследовать, они позволяют проводить вычислительные эксперименты, реальная постановка которых затруднена или может дать непредсказуемый результат. Логичность и формализованность компьютерных моделей позволяет выявить основные факторы, определяющие свойства изучаемых объектов, исследовать отклик физической системы на изменения ее параметров и начальных условий. Компьютерное моделирование требует абстрагирования от конкретной природы явлений, построения сначала качественной, а затем и количественной модели. За этим следует проведение серии вычислительных экспериментов на компьютере, интерпретация результатов, сопоставление результатов моделирования с поведением исследуемого объекта, последующее уточнение модели и т.д. К основным этапам компьютерного моделирования относят: 1. постановка задачи, определение объекта моделирования; 2. разработка концептуальной модели, выявление основных элементов системы и элементарных актов взаимодействия; 3. формализация, то есть переход к математической модели; 4. создание алгоритма и написание программы; 5. планирование и проведение компьютерных экспериментов; 6. анализ и интерпретация результатов. Различают аналитическое и имитационное моделирование. Аналитическими называются модели реального объекта, использующие алгебраические, дифференциальные и другие уравнения, а также предусматривающие осуществление однозначной вычислительной процедуры, приводящей к их точному решению. Имитационными называются математические модели, воспроизводящие алгоритм функционирования исследуемой системы путем последовательного выполнения большого количества элементарных операций. Принципы моделирования состоят в следующем: 2 1. Принцип информационной достаточности. При полном отсутствии информации об объекте построить модель невозможно. При наличии полной информации моделирование лишено смысла. Существует уровень информационной достаточности, при достижении которого может быть построена модель системы. 2. Принцип осуществимости. Создаваемая модель должна обеспечивать достижение поставленной цели исследования за конечное время. 3. Принцип множественности моделей. Любая конкретная модель отражает лишь некоторые стороны реальной системы. Для полного исследования необходимо построить ряд моделей исследуемого процесса, причем каждая последующая модель должна уточнять предыдущую. 4. Принцип системности. Исследуемая система представима в виде совокупности взаимодействующих друг с другом подсистем, которые моделируются стандартными математическими методами. При этом свойства системы не являются суммой свойств ее элементов. 5. Принцип параметризации. Некоторые подсистемы моделируемой системы могут быть охарактеризованы единственным параметром: вектором, матрицей, графиком, формулой. Методы численного интегрирования и дифференцирования Компьютерное моделирование систем часто требует решения дифференциальных уравнений. Важным методом является метод сеток, включающий в себя метод конечных разностей Эйлера. Он состоит в том, что область непрерывного изменения одного или нескольких аргументов заменяют конечным множеством узлов, образующих одномерную или многомерную сетку, и работают с функцией дискретного аргумента, что позволяет приближенно вычислить производные и интегралы. При этом бесконечно малые приращения функции f = f(x, y, z, t) и приращения ее аргументов заменяются малыми, но конечными разностями. Пусть задана функция y = y(x). Разобьем интервал от a до b на элементарные отрезки длиной h = Δx, получив конечное множество узлов сетки xi = x1 + ih, где i = 1, 2,..., N, а N -- число узлов. В результате функция непрерывного аргумента будет заменена функцией дискретного аргумента yi = y(xi ). Тогда левая, правая и центральная разностные производные первого порядка в точке с координатой xi соответственно равны: y'(xi ) - = (y(xi ) - y(xi - 1 ))/h, y'(xi ) + = (y(xi + 1 ) - y(xi ))/h, (1) y'(xi ) = (y(xi + 1 ) - y(xi - 1 ))/(2h). Чем меньше шаг сетки h, тем выше точность найденных производных. 3 Вторая производная определяется из выражения: y''(xi ) = (y(xi + 1 ) - 2y(xi ) + y(xi - 1 ))/h2. (2) Интеграл функции численно равен площади криволинейной трапеции, ограниченной графиком этой функции и пределами интегрирования a, b. Если эту трапецию разбить на N прямоугольных полосок шириной h = (b - a) / N и длиной yi = y(a + ih), то площадь будет примерно равна: (3) Чем меньше шаг h и, соответственно, больше N, тем точнее найденное значение интеграла. Этот метод называется методом прямоугольников. Более точный метод трапеций заключается в том, что каждая i - ая полоска рассматривается как трапеция высотой h с длинами оснований yi = y(a + ih) и yi + 1 = y(a + (i + 1)h), поэтому ее площадь равна ΔS = (yi + yi + 1 )h/2. Интеграл функции равен сумме всех элементарных площадей этих трапециевидных полосок: (4) Метод Монте - Карло нахождения площади криволинейной трапеции под кривой y = y(x) состоит в следующем. Представим себе прямоугольник, ограниченный пределами интегрирования a и b, осью x и горизонталью y = c, внутри которого находится эта криволинейная трапеция. Площадь прямоугольника равна (b - a)c. Задавая случайным образом координаты xi , yi , поместим внутрь прямоугольника N точек. Подсчитаем число n точек, оказавшихся внутри криволинейной трапеции, то есть удовлетворяющих условию yi <y(xi ). Площадь криволинейной трапеции будет во столько раз меньше площади выбранного прямоугольника, во сколько раз n меньше N. Поэтому при N стремящемся к бесконечности дробь n(b - a) c / N стремится к пределу, равному искомому интегралу. Задача № 1. Исследуемый физический процесс описывается уравнением x(t)=t3-t2+3. Определить первую и вторую производные функции x=x(t) в момент времени 2 с. Найти интеграл данной функции в интервале от 1 до 3 с методом трапеций. Решить задачу аналитически и сравнить результаты. Решение. Алгоритм решения этой задачи представлен ниже. ЗАДАТЬ ФУНКЦИЮ Funct:=t*t*t-t*t+3; ---------------------- 4 НАЧАЛО ПРОГРАММЫ t:=2; h:=0.001; y1:=Funct(t-h); y2:=Funct(t); y3:=Funct(t+h); ПЕЧАТЬ "Первая производная ", (y2-y1)/h ПЕЧАТЬ "Вторая производная ", (y1-2*y2+y3)/(h*h) a:=1; b:=3; t:=a; S:=0; ПОВТОРЯТЬ{S:=S+0.5*(Funct(t)+Funct(t+h))*h; t:=t+h;} ПОКА НЕ t>b; ПЕЧАТЬ "Интеграл ", S КОНЕЦ ПРОГРАММЫ При уменьшении шага h получающиеся значения производной и интеграла стремятся к некоторым предельным значениям, которые совпадают с аналитически найденными значениями производной y' и интеграла I функции. Задания для самостоятельной работы. Написать программу, реализующую выше описанный алгоритм. Заполнить таблицу, шаблон которой представлен в табл. 1. Получить точные значения, поместить их в последнюю строку табл. 1. Табл. 1 Результаты вычислений Шаг Δx=h x' x'' I 0,2 0,1 0,01 0,001 0,0001 0,00001 Точное значение Убедиться, что при уменьшении шага точность вычислений обычно возрастает, а если же шаг очень мал, то для нахождения интеграла приходится суммировать слишком большое число слагаемых, что приводит к снижению точности. Задача № 2. Вычислить площадь окружности радиуса R методом Монте-Карло. Решение. Алгоритм решения этой задачи представлен ниже. НАЧАЛО ПРОГРАММЫ ВВОД(N, R)----[число «случайных» точек и радиус] М:=0 ЦИКЛ ПО i ОТ 1 ДО N x = R * (2 * СЛЧИС - 1) y = R * (2 * СЛЧИС - 1) 5 K = x * x + y * y ЕСЛИ K <= R * R ТО M: = M + 1 КЦ S = 4 * (R ^ 2) * M / N ВЫВОД "Площадь окружности ", S КОНЕЦ ПРОГРАММЫ Задания для самостоятельной работы. Написать программу, реализующую выше описанный алгоритм при R=5. визуализировать окружность и точки со «случайными» координатами, как показано на рис. 1. 6 4 2 Y 0 -6 -4 -2 0 2 4 6 -2 -4 -6 X Рис. 1 Еще задания для самостоятельной работы 1. Написать программу нахождения интеграла функции из задачи № 1 методом Монте-Карло 2. Точка движется прямолинейно со скоростью v(t) = 3 + 2t + t2. Численными методами и аналитически определите ускорение точки в момент времени 1 с и пройденный путь за время от 1 до 3 с. Повторите расчеты при различных значениях шага и сравните результаты. Литература 1. Самарский А.А. Введение в численные методы. М.: Наука, 1997. 234 с. 2. Рябенький В.С. Введение в вычислительную математику. М.: Физматлит, 2000. 294 с 3. Клинаев Ю.В. Методы и технологии компьютерных вычислений в математическом моделировании / Ю.В. Клинаев, Д.В. Терин. УМК. Саратов: СГТУ, 2009. 213 с. 6 ЛАБОРАТОРНАЯ РАБОТА № 2 СЛУЧАЙНЫЕ БЛУЖДАНИЯ Цель работы: ознакомиться с методами численного решения дифференциальных уравнений первого и второго порядков при решении физических задач на компьютере на примере моделирования случайных блужданий. Основные понятия Задача о случайных блужданиях является одной из широко исследуемых задач теории вероятностей и находит множество других приложений. Одним из ярких примеров случайных блужданий – хаотическое движение броуновских частиц в жидкости или газе. В более общей задаче теории броуновского движения последовательность значений координат и импульсов частиц через равные промежутки времени рассматривается как марковский случайный процесс (для каждого момента времени t вероятность любого состояния системы в будущем зависит только от ее состояния в настоящем и не зависит от того, как система пришла в это состояние). Математической моделью броуновского движения является винеровский случайный процесс, что и позволяет теорию случайных блужданий броуновской частицы применять не только в физике, но и в других естественных науках, например в химии и метрологии и даже в социальных науках, например, в финансовой статистике и экономике. В метрологии броуновское движение рассматривают как основной фактор, ограничивающий точность чувствительных измерительных приборов. В рамках финансового рынка «экономическое» броуновское движение явилось одной из первых попыток учесть флуктуации (неопределенности) финансового рынка. Для ознакомления с элементами теории случайных блужданий создадим двумерную модель газа, рассматривая молекулы как частицы, между которыми действуют силы отталкивания. Для начала рассмотрим модель движения одной частицы без учета сил отталкивания других частиц. Разложим процесс моделирования на этапы моделирования: 1. Постановка задачи: определение объекта моделирования, в данном случае частица; 2. Разработка концептуальной модели, выявление основных элементов системы и элементарных актов взаимодействия, в данном случае необходимо получить траекторию движения частицы без учета сил отталкивания других частиц и без учета силы тяжести; Графическая модель, представленная на рис. 2, является статической, т.е. поведение частицы зафиксировано в определенный 7 момент времени. Исходными данными, влияющими на траекторию движения частицы являются направление движения, заданное углом , и величина «шага» частицы h, который не может превышать некоторой величины hmax. Из рис. 2 ясно, что (0, 2), h(0, hmax) – это допустимая область значений исходных данных. y yi h yi-1 0 xi-1 xi x Рис. 2 3. Формализация, то есть переход к математической модели. Чтобы добиться «случайности» в поведении частицы, будем использовать, полученную с помощью генератора псевдослучайных чисел, случайную величину , подчиняющуюся равномерному закону распределения (0, 1). Тогда формально моделирование исходных данных будет осуществляться по следующим формулам: =2, h=hmax (5) Начальными условиями моделирования является положение частицы в начальный момент времени в точке отсчета выбранной системы координат, что формально можно записать как t=0, x(t=0)=0, y(t=0)=0. 4. Создание алгоритма и написание программы (выполнить самостоятельно); НАЧАЛО ПРОГРАММЫ ВВОД(hmax, M)----[M - число «шагов» частицы] y[1]:=0 x[1]:=0 ЦИКЛ ПО i ОТ 2 ДО M alfa:=2*ЧислоПИ*СЛЧИС h:= hmax* СЛЧИС 8 x[i]: = x[i-1]+h*cos(alfa) y[i]: = y[i-1]+h*sin(alfa) КЦ ВЫВОД y(x) КОНЕЦ ПРОГРАММЫ 5. Планирование и проведение компьютерных экспериментов; На данном этапе фактически осуществляется отладка программы. 6. Анализ и интерпретация результатов. На данном этапе созерцаем траекторию движения частицы, соглашаемся, что полученная модель демонстрирует существенные свойства частицы, а именно хаотичность движения. Но данная модель является слишком упрощенной, т.к. частица двигается без взаимодействия с другими частицами (т.е. без учета сил отталкивания), а также без учета сил тяжести. Поэтому на этом этапе осуществляем возврат к этапу Разработка концептуальной модели с целью усовершенствования (уточнения) модели. 2. Разработка концептуальной модели, выявление основных элементов системы и элементарных актов взаимодействия, в данном случае необходимо получить траекторию движения частицы с учетом сил отталкивания других частиц, но все еще без учета силы тяжести; Графическая модель представлена на рис. 3. Здесь F , Fx , Fy соответственно сила отталкивания частиц и ее проекции. y b yj F jx F jy h Fj Fi h Fix x j xi Fi Fiy yi Fi h Fiy y j yi Fix a 0 a xi xj b x Рис. 3 9 Частицы ограничены объемом высотой b - a шириной b - a и толщиной, соизмеримой с диаметром частицы. 3. Формализация, то есть переход к математической модели. Из второго закона Ньютона следует: , (6) где Fi - внешние силы (в данном случае, сила тяжести, которую не учитываем в данной модели) и внутренние силы F'i,j Здесь N – число частиц в двумерной модели газа. Численная модель решения системы дифференциальных уравнений (6) с использованием конечно-разностной схемы Эйлера vixt dt vixt Fix / m dt viyt dt viyt Fiy / m dt xit dt xit vixt dt dt , (7) yit dt yit viyt dt dt 4. Создание алгоритма и написание программы (выполнить самостоятельно); НАЧАЛО ПРОГРАММЫ ВВОД(a,b,N,dt,m,Fo,vmin,vmax)--[dt – шаг по времени, m – масса частицы, Fo – величина силы отталкивания частицы, vmin,vmax – диапазон скоростей частицы] ЗАДАТЬ ФУНКЦИЮ СИЛА (Fo,x,y,Fx,Fy) --[функция с формальными параметрами] ЦИКЛ ПО i ОТ 1 ДО N инициализация значений Fx[i]: = 0 проекций сил отталкивания Fy[i]: = 0 КЦ ЦИКЛ ПО i ОТ 1 ДО N ЦИКЛ ПО j ОТ 1 ДО N ЕСЛИ i=j ТО ПЕРЕХОД К МЕТКЕ 1--[не может быть взаимодействия частицы самой с собой] 10 h:=КОРЕНЬ((x[i]-x[j])^2+(y[i]-y[j])^2)[расстояние между частицами] ЕСЛИ (h>0) ИЛИ (h<10) ТО F:=Fo/h ИНАЧЕ F:=0 [если расстояние между частицами достигает определенного значения, например 10, то начинают действовать силы отталкивания, обратно пропорциональные этому расстоянию] Fx[i]: = Fx[i]+F*( x[i]-x[j])/h Fy[i]: = Fy[i]+F*( y[i]-y[j])/h [суммирование всех сил, действующих на частицу] [второе слагаемое получается из подобия треугольников, см. рис.3] МЕТКА 1: КЦ КЦ ---------------------[начальное распределении частиц] ЦИКЛ ПО i ОТ 1 ДО N x[i]: = a+СЛЧИС*(b-a) y[i]: = a+СЛЧИС*(b-a) vx[i]: = vmin+СЛЧИС*( vmax - vmin) vy[i]: = vmin+СЛЧИС*( vmax - vmin) КЦ t:=0--[ начальное время] ПОКА t<=10 ВЫПОНЯТЬ СИЛА (Fo,x,y,Fx,Fy) --[ вызов фукнции с фактическими параметрами] ЦИКЛ ПО i ОТ 1 ДО N конечно-разностная vx[i]: = vx[i]+Fx[i]/m*dt схема Эйлера решения vy[i]: = vy[i]+Fy[i]/m*dt системы x[i]: = x[i]+ vx[i]*dt дифференциальных y[i]: = y[i]+ vy[i]*dt уравнений краевые условия ЕСЛИ y[i]>b ТО y[i]=a поведения частиц на ЕСЛИ y[i]<a ТО y[i]=b краях исследуемого ЕСЛИ x[i]>b ТО x[i]=a объема ЕСЛИ x[i]<a ТО x[i]=b КЦ вывод данных каждые t:=t+dt --[счетчик времени] 2 с для получения ЕСЛИ ОСТАТОК(t,2)=0 ТО ВЫВОД y(x) картины распределения частиц КОНЕЦ ПРОГРАММЫ 5. Планирование и проведение компьютерных экспериментов; То же самое. 11 6. Анализ и интерпретация результатов. На данном этапе созерцаем картину взаимодействия частиц, соглашаемся, что полученная модель демонстрирует существенные свойства частиц, а именно движения частиц с учетом присущих им сил отталкивания. Но данная модель является слишком упрощенной, т.к. частицы модели двигаются без учета сил тяжести. Поэтому на этом этапе возможен возврат к этапу Разработка концептуальной модели с целью усовершенствования (уточнения) модели, и это можно осуществлять до бесконечности, т.к. количество моделей для выбранного объекта может быть построено бесконечное множество. Задание для самостоятельной работы Используя решение рассмотренной в лабораторной работе № 2 задаче создайте компьютерную модель диффузии двух газов. Считайте молекулы газов твердыми шарами, между которыми действуют силы отталкивания (рис. 4). Рис. 4 ТЕМЫ ПРОЕКТОВ 1. Промоделируйте обтекание пластины газом. Газ следует представлять в виде совокупности частиц, между которыми действуют силы притяжения и отталкивания (рис. 5). 12 Рис. 5 2. Рост некоторых природных объектов (кораллов, снежных хлопьев) происходит в результате случайного присоединения частей. Этот процесс называется агрегацией с ограничением диффузии. Возникает фрактал, имеющий древовидную структуру и называющийся дендритом. Напишите программу, моделирующую рост дендрита. (рис. 6). Рис. 6 Литература 1. Клинаев Ю.В. Методы и технологии компьютерных вычислений в математическом моделировании / Ю.В. Клинаев, Д.В. Терин. УМК. Саратов: СГТУ, 2009. 213 с. 2. Медведев Д.А. Моделирование физических процессов и явлений на ПК / Д.А. Медведев, А.П. Куперштох, Э.Р. Пруэл и др. Н.: НГУ, 2010. 101 с 3. Майер Р.В. Задачи, алгоритмы, программы [Электронный ресурс]. Глазов: : ГГПИ, 2010. (http://maier-rv.glazov.net) 13