ЛАБОРАТОРНАЯ РАБОТА № 4 Тема работы: Численное решение обыкновенных дифференциальных уравнений. Оценка погрешности решения. Визуально-ориентированное и модульное программирование в среде Mathcad. Цель работы: Усвоить алгоритмы классических численных методов интегрирования обыкновенных дифференциальных уравнений (Рунге-Кутта, Эйлера). Освоить технику создания законченных программных модулей (блоков) в среде Mathcad. Задание: Задана система обыкновенных дифференциальных уравнений (варианты заданий совпадают с лабораторной работой №3). Численно решите задачу Коши для данной системы уравнений: - используя встроенную функцию rkfixed системы Mathcad; используя средства визуально-ориентированного программирования (ранжированные переменные) и методы Рунге-Кутта и Эйлера; - используя средства модульного программирования и метод Рунге-Кутта. Сравните численные результаты между собой. Оцените погрешность численного интегрирования по правилу Рунге. Теоретическая часть Рассмотрим задачу Коши для одного дифференциального уравнения первого порядка du u t t u 0 . f t ,u t , 0 dt Для численного решения этого уравнения зададим сетку t k t 0 k, k 0,1, , N с постоянным шагом . На этой сетке определим сеточные функции yk u tk , f k f tk ,uk . Метод Рунге-Кутта позволяет строить схемы различного порядка точности. Наиболее известной и широко используемой на практике является схема Рунге-Кутта четвертого порядка точности: k1 f tn , yn k 2 f t n , yn k1 2 2 k3 f t n , yn k 2 2 2 k4 f tn , yn k3 yn 1 yn k1 2k2 2k3 k4 . 6 Численный метод Эйлера y n1 y n f t n , y n является частным вариантом метода Рунге-Кутта первого порядка точности. Метод Рунге-Кутта легко обобщается на системы уравнений путем формальной замены скалярных величин u , f t ,u на векторы u ,f t ,u . Для системы уравнений du T T f t ,ut , u u1 ,u 2 , ,u m , f f1 , f 2 , , f m dt расчетные формулы имеют вид: k 1 f t n , y n k 2 f t n ,y n k 1 2 2 k 3 f t n ,y n k 2 2 2 k 4 f t n , y n k 3 y n1 y n k 1 2k 2 2k 3 k 4 6 В частности, для системы двух дифференциальных уравнений du dt f t ,u t , vt dv g t ,u t , vt dt развернутая запись формул схемы Рунге-Кутта имеет вид: k1 f t n , y n , z n , q1 g t n , y n , z n , k 2 f t n , y n k1 , z n q1 , q 2 g t n , y n k1 , z n q1 , 2 2 2 2 2 2 k3 f t n , yn k 2 , z n q2 , q3 g t n , y n k 2 , z n q 2 , 2 2 2 2 2 2 k 4 f t n , y n k 3 , z n q3 , q4 g t n , y n k 3 , z n q3 , y n 1 y n k1 2k 2 2k 3 k 4 , z n1 z n q1 2q 2 2q3 q 4 6 6 Здесь через y , z обозначены приближенные сеточные функции, соответствующие функциям ut ,vt соответственно. Шаг интегрирования в методах Эйлера и Рунге-Кутта следует выбирать достаточно малым, чтобы обеспечить устойчивость и требуемую точность расчета. Как практически получить нужную точность? Априорные оценки точности для выбора шага на деле не используются по следующим причинам. Во-первых, они чрезвычайно громоздки и включают производные, которые до начала расчета не известны, во- вторых, эти оценки являются мажорантными и могут во много раз превосходить фактическую ошибку расчета. Поэтому основным практическим приемом является апостериорная оценка точности. Для ее получения расчет проводят на двух сетках с шагом и k , k 1 , затем применяют правило Рунге. Если численные решения на двух сетках обозначить через yt ; и yt ; k , то погрешность решения на сетке с меньшим шагом оценивается по формуле y t ; y t ; k t ; , k p 1 где p - порядок точности схемы. Порядок выполнения задания 1. Определите функции, входящие в правую часть системы уравнений. 2. Задайте исходные данные для решения задачи Коши, и вычислите шаг интегрирования. 3. Используя ранжированные переменные, составьте программу численного решения задачи Коши методом Рунге-Кутта и методом Эйлера. 4. Вычислите решение методами Рунге-Кутта и Эйлера. 5. Сравните полученные решения, изобразив их на одном графике. 6. Решите задачу Коши с использованием встроенной функции rkfixed. 7. Убедитесь, что это решение совпадает с полученным ранее (в п.4) решением. 8. Увеличив в два раза число узлов интегрирования, и заново решив задачу Коши, оцените погрешность численного решения. 9. Используя средства модульного программирования системы Mathcad, составьте законченный модуль численного решения задачи Коши для системы двух дифференциальных уравнений методом Рунге-Кутта с постоянным шагом . 10. Убедитесь в правильной работе данного модуля, сравнив полученное с его помощью решение с найденным ранее (п.4, п.6). 11. Сформулируйте выводы по проделанной работе. 12. Сохраните рабочий документ. В приведенном ниже примере предполагается, что система дифференциальных уравнений имеет вид: du1 2 2 dt u 2 u1 4 u1 u 2 du 2 u1 u 2 4 u12 u 22 dt