ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования Московский технический университет связи и информатики Кафедра теории вероятностей и прикладной математики Демин Д.Б. Методические указания к выполнению лабораторных работ по дисциплине ЧИСЛЕННЫЕ МЕТОДЫ Часть 2 Для студентов 3-го курса специальности 231300 Москва 2013 План УМД на 2013/2014 уч.г. Методические указания к выполнению лабораторных работ по дисциплине ЧИСЛЕННЫЕ МЕТОДЫ Часть 2 Составитель Д.Б.Демин, к.ф.-м.н., доцент Издание утверждено советом ОТФ-1. Протокол № 9 от 29.05.2013г. Рецензент Е.А. Скородумова, к.ф.-м.н., доцент 2 ВВЕДЕНИЕ Предлагаемые методические указания относятся к дисциплине "Численные методы", изучаемой студентами дневного отделения специальности 231300 "Прикладная математика" в 5 семестре. В течение всего семестра студенты выполняют лабораторные работы по указанной дисциплине, задания к которым приведены в конце каждого раздела. Предлагаемые методические указания являются продолжением первой части, изданной в 2011 г. Сюда вошли следующие разделы дисциплины и задания для выполнения лабораторных работ к ним: численные методы решения систем нелинейных уравнений, численные методы решения систем линейных уравнений, численные методы решения обыкновенных дифференциальных уравнений и численные методы решения краевых задач для обыкновенных дифференциальных уравнений. Данные методические указания не являются систематическим изложением курса. Литература, по которой следует изучать курс, указана в начале методических указаний. Порядок выполнения каждой лабораторной работы включает следующие этапы: 1. Подготовка к выполнению лабораторной работы. Выбор варианта задания. Написание подпрограмм для указанных алгоритмов на языках программирования (Си, Паскаль) или в специализированных пакетах (Matlab, Maple). 2. Проведение расчетов по лабораторному заданию при помощи подготовленных программ в лабораторном классе. 3. Защита результатов лабораторной работы у преподавателя. Выполнение лабораторной работы оформляется отчетом. Отчеты по лабораторным работам практикума можно проводить либо в одной тетради (в клетку) либо на отдельных листах формата A4, скрепленных вместе. Отчеты сдаются преподавателю и обратно не возвращаются. Отчет по каждой лабораторной работе должен содержать следующие пункты. 1. Название лабораторной работы и дату ее проведения, номер варианта, фамилию и номер группы студента. 2. Цель лабораторного задания и текст задания. 3. Математическая формулировка лабораторной задачи, краткое описание используемых численных методов и алгоритм программы, реализующий методы. 4. Исходные данные для программы и результаты ее выполнения. 5. В зависимости от номера лабораторной работы аналитические расчеты поставленной задачи. 6. Результаты выполнения лабораторной работы в целом. 3 МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО РАЗДЕЛАМ КУРСА Список литературы Основная 1. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – М.: Бином. Лаборатория знаний, 2004. 2. Крылов В.И., Бобков В.В., Монастырный П.И. Вычислительные методы. – Т.1, 2. – М.: Наука, 1976-1977 гг. 3. Демидович Б.П., Марон И.А. Основы вычислительной математики. – СПб.: Лань, 2007. 4. Сборник задач по методам вычислений / Под ред. П.И. Монастырного. – М.: Физматлит, 1994. 5. Н. С. Бахвалов, А. А. Корнев, Е. В. Чижонков. Численные методы. Решения задач и упражнения. - М.: Дрофа, 2009. Дополнительная 1. Самарский А.А. Введение в численные методы. - М.: Наука, 1997. 2. Вержбицкий В.М. Численные методы. - М.: Высшая школа, 2001. 3. Каханер Д., Моулер К., Нэш С. Численные методы и программное обеспечение. – М.: Мир, 2001. 4. Формалев В.Ф., Ревизников Д.Л. Численные методы. - М.: Физматлит, 2004. 5. Сборник задач по математике для втузов. Методы оптимизации, уравнения в частных производных, интегральные уравнения / Под ред. А.В. Ефимова. – М.: Наука, 1990. 6. Демидович Б.П., Марон И.А., Шувалова. Э.З. Численные методы анализа. Приближение функций, дифференциальные и интегральные уравнения: Учебное пособие. – СПб.: Лань, 2008. 4 5. ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ СИСТЕМ НЕЛИНЕЙНЫХ УРАВНЕНИЙ Пусть требуется решить систему уравнений с N неизвестными (5.1) f i ( x1 , x2 ,...,x N ) 0, i 1, 2, ..., N , где f i – нелинейные функции действительных переменных x1 , x2 , …, x N . В векторно-матричной форме система (5.1) имеет следующий вид f ( x) 0 (5.2) где x1 f1 ( x ) 0 x2 f 2 ( x ) 0 , 0 – N -мерные векторы-столбцы. x , f ( x) ... ... ... 0 N xN f N ( x) Для решения уравнения (5.2) будем использовать итерационные методы, которые могут быть получены на основе обобщений методов решения скалярных нелинейных уравнений. 5.1. Метод простой итерации Метод простой итерации применим к системам, которые предварительно приведены к виду: (5.3) x (x ), T где ( x ) 1 ( x ) 2 ( x ) ... N ( x ) . T Пусть x ( 0) x1( 0) , ..., x N( 0) – начальное приближение. Последующие приближения в методе простой итерации находятся по формулам: xi( n1) i x1( n ) , ..., x N( n ) , i 1, 2, ..., N , (5.4) или, в векторной форме, (5.5) x ( n1) x ( n ) , ( n 0,1, 2, ...). ( n) ( n) ( n) Если последовательность векторов x x1 , ..., x N сходится к вектору * x x1* , ..., x *N , а функции i (x ) непрерывны, то вектор x * является решением системы (5.3). Погрешность метода простой итерации оценивается, как и для одного скалярного уравнения (см. раздел 4): q n (0) (n) * || x x || ( x ) x (0) , (5.6) 1 q где q определяется из условия: для x , x из сферы || x x ( 0) || выполнено ( x ) ( x ) q || x x || , 0 q 1 . (5.7) Сходимость метода считается хорошей, если q 1 2 . 5 В (5.6)-(5.7) || x || – это норма вектора, причем норма вектора || x x ( 0) || определяется формулой (5.8) || x x ( 0) || max xi xi( 0) , 1i N а согласованная с ней норма функции || ( x ) || формулой N i ( x ) (5.9) || ( x ) || max max . xG 1i N x j j 1 Достаточное условие, обеспечивающее выполнение неравенства (5.7): пусть функции (x ) и (x ) непрерывны в области G : || x x ( 0) || , причем в G выполнено неравенство (5.10) || ( x ) || q 1. ( n1) Если последовательные приближения x не выходят из G , то процесс ите* рации сходится к единственному решению x lim x ( n ) уравнения (5.3). n Из (5.9)-(5.10) получим формулу для параметра q : N i ( x ) q max max 1. (0) ||x x || 1i N x j j 1 В случае N 1 из (5.11) имеем известное условие: q max ( x) 1. (5.11) x[ a , b ] Для применения метода простой итерации к системе (5.1) нужно привести ее к виду (5.3). Это делается по аналогии со скалярным случаем. Перепишем систему (5.2) в следующем виде: x x Af ( x ) ( x ) , (5.12) где A – невырожденная матрица. В силу условия сходимости (5.10) матрицу A нужно выбрать так, чтобы ( x (0) ) E Af ( x (0) ) 0 , 1 отсюда, если матрица f ( x ( 0) ) невырожденная, то A f ( x ( 0) ) . Окончательно из (5.5) получим модифицированный метод Ньютона 1 (5.13) x ( n1) x ( n) f ( x ( 0) ) f ( x ( n ) ) , n 0,1, 2, ... 5.2. Метод Ньютона Этот метод применим к уравнениям вида (5.1)-(5.2). Пусть x ( 0 ) – началь ное приближение. Предполагая, что функция f (x ) непрерывно дифференци руема в некоторой области, содержащей x и x ( 0 ) , разложим f (x ) по формуле Тейлора, ограничиваясь линейной частью f ( x ) f ( x ( 0) ) f ( x ( 0) )( x x ( 0) ) 0 , (5.14) 6 где f (x ) – это матрица производных функций f i (x ) (матрица Якоби), кото рую обозначим как J (x ) : f1 ( x ) f1 ( x ) ... x x N 1 J ( x ) ... ... ... . f ( x ) f N N (x) ... x x N 1 Если det J ( x ( 0) ) 0 , то уравнение (5.14) имеет единственное решение, ко торое обозначим через x (1) . Если найдено x (n ) , тогда x ( n1) вычисляется по формуле: (5.15) x ( n1) x ( n) J 1 ( x ( n) ) f ( x ( n) ) , n 0,1, 2, ..., где J 1 ( x ( n ) ) – матрица, обратная к матрице Якоби. Формула (5.15) описывает итерационный процесс метода Ньютона. Метод Ньютона имеет квадратичную скорость сходимости, причем для остановки алгоритма обычно используют условие || x ( n1) x ( n) || , где – заданная точность решения. Отслеживать факт сходимости процесса можно по формуле: f ( x ( n1) ) f ( x ( n ) ) , (5.16) где f ( x ) max f i ( x ) . 1i N 5.3. Метод наискорейшего спуска (метод градиента) В методе наискорейшего спуска ищется минимум неотрицательной функции ( x1 ,...,x N ) , связанной с решаемой системой (5.1) условием: если точка x * x1* ,...,x *N есть минимум функции ( x1 ,...,x N ) , то она является и решением системы (5.1) и наоборот. Обычно функцию ( x1 ,...,x N ) берут в виде ( x ) ( x1 ,...,x N ) N f 2 i ( x1 ,...,x N ) . (5.17) i 1 Алгоритм метода состоит в следующем. Задаем начальное приближение (0) x , из точки x ( 0 ) перемещаемся по прямой в сторону наибольшего убывания функции (x ) , т.е. в направлении антиградиента grad ( x ( 0) ) до тех пор, пока (x ) убывает, затем вычисления повторяются и т.д. Если известно x (n ) , то x ( n1) вычисляется по формуле x ( n1) x ( n) n grad ( x ( n) ) , (5.18) где n – наименьший положительный корень уравнения 7 x ( n ) grad ( x ( n ) ) 0 , T ( x ( n ) ) ( x ( n ) ) (n) . grad ( x ) , ..., x x 1 N (5.19) Итерационный процесс (5.18) останавливают, если ( x (n1) ) , где – требуемая точность решения. При выборе n в формуле (5.18) необходимо учитывать, что на каждой итерации должно выполняться неравенство: (5.20) ( x ( n1) ) ( x ( n) ) . Определение n из формулы (5.18) означает решение на каждой итера ции нелинейного уравнения ( x ( n) grad ( x ( n) )) 0 относительно переменной . Обычно его решают по методу Ньютона. При таком способе опре деления n градиентный метод поиска минимума функции (x ) получил название метода наискорейшего спуска. Параметр можно выбирать и подругому. Например, берем на первой итерации 1 . Если условие (5.20) не выполняется, то тогда дробят, например, пополам и снова проверяют условие (5.20), и так до тех пор, пока не выполнится условие (5.20). Далее, этот способ выбора повторяют на последующих итерациях метода градиента. В этом случае метод называется методом с дроблением шага. Недостатком метода наискорейшего спуска является медленная сходимость к решению. 5.4. Задание на лабораторную работу № 4: Численное решение систем нелинейных уравнений 1) 1. Решить систему нелинейных уравнений (см. вариант) методом Ньютона (четные номера) , методом простых итераций (нечетные номера) и методом наименьших квадратов (наискорейшего спуска) (все варианты). Начальное приближение определить графически. 2) Сделать 4 итерации вручную (ЭВМ: 8). Оценить достигнутую точность решения. 3) Сравнить методы. 8 Варианты заданий № вар. 3x 2 y y 2 1 0 1 x 4 xy 3 1 0 cos 1,5yx3x y2 0,85 1 00 2 x y3 y 4 0 x 2 y 2 3x 3 6 y 3 8 0 3 x4 9 y 2 0 e xy x 2 y 1,1 4 ( x 0,5)2 y 2 0,1 № вар. 16 17 18 19 sin( x y ) xy 1 5 6 7 8 9 10 11 12 13 14 15 20 x 2 y 2 0,75 tg xy x 2 21 0,8 x 2 2 y 2 1 2 x2 y 2 1 0 22 x3 6 x 2 y 1 0 x y 6ln x 1 0 x 3 y 6ln y 2 0 23 sin( x 0,6) y 1,6 3x cos y 0,9 sin( x 1) y 1 2 x cos y 2 24 25 2 x3 y 2 1 0 26 xy 3 y 4 0 sin( x y) 1,2 x 0,1 27 x2 y 2 1 x2 y 2 1 0 28 xy 3 y 3 0 sin y 2 x 2 ( x 1) 2 y 2 2 e xy x y 1,5 2 x y 6ln x 3 0 15 x 10 y 60ln x 6 0 cos(x 1) y 0,8 x cos(y ) 2 tg( y x) xy 0,3 x 2 2 y 2 1,5 y 0,5 x 2 x 0,5 1 2 x y y 3 1,6 6 sin( x y ) xy 1 x2 y2 3/ 4 cos( y 0,5) x 2 sin x 2 y 1 x2 y 2 1 0 x3 y 0 x3 y3 7x 3 0 x3 y3 7 y 2 0 2 x 2 xy y 2 2 x 2 y 6 0 y 0,5 x 2 1 0 sin( y 1) x 2 2 y cos x 1 2 y cos(x 1) 0 x sin y 0,5 tg ( xy 0,5) x 2 cos( x 1) y 0,7 29 sin x y 1,32 cos y x 0,85 x2 y2 2 2 y 6x y 2 x 0 sin y 2 x 0 2y y2 x 1 0 30 x 2 x yx 2 0 9 6. ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ Все методы решения систем линейных алгебраических уравнений (СЛАУ) делятся на две группы: 1) точные (прямые) методы; 2) методы последовательных приближений (итерационные методы). Точные методы – это методы, которые за конечное число операций приводят к точным значениям неизвестных системы. Предполагается, что коэффициенты и правые части системы известны точно, а все вычисления проводятся без округлений. Итерационные методы – это методы, в которых решение получается с заданной точностью путем бесконечного повторения единообразных действий. В итерационных методах для начала вычислений требуется задание начального приближения. 6.1. Прямые методы. Метод Гаусса Рассмотрим СЛАУ с n неизвестными x1 , x2 , ..., xn : (6.1) ai1 x1 ai 2 x2 ... ain xn bi , i 1, 2, ...,n , или в матричной форме (6.2) Ax B , T T где B (b1 , b2 , ...,bn ) – столбец свободных членов, x ( x1 , x2 ,...,xn ) – столбец неизвестных, A (aij ) i , j 1,n – матрица коэффициентов системы (6.1). Если матрица A невырожденная, т.е. det A 0 , то система (6.1) и эквивалентное ей матричное уравнение (6.2) имеют единственное решение. Тогда решение системы (6.1)-(6.2) имеет вид формул Крамера |A | xi i , (i 1,...,n) , (6.3) | A| или в матричном виде: x A1 B , (6.4) T где Aˆ Aij – матрица, составленная из алгебраических дополнений Aij к элементам a ij ; A1 – обратная матрица системы. При использовании формул (6.3) требуется вычисление (n 1) -го определителя порядка n , на каждый из которых требуется n! арифметических операций, т.е для решения системы (6.1) необходимо n!(n 1) операций. При n 100 , потребуется выполнить n! 10158 операций. Это слишком много даже для современных ЭВМ, что является одной из причин неиспользования формул Крамера. Наиболее известным прямым методом решения СЛАУ является метод Гаусса и различные его модификации. Метод Гаусса состоит в последовательном исключении неизвестных для приведения исходной матрицы систе10 мы (6.1) к треугольному виду, при помощи которой достаточно просто найти решение. Требуемое число операций в методе Гаусса будет порядка O(n 3 ) . Рассмотрим одну из его реализаций – метод Гаусса-Жордана. Пусть a11 0 . Исключим из матрицы А коэффициенты в первом столбце, стоящие под коэффициентом a11 : ai1 a1 j a b , bi(1) bi i1 1 , i, j 2,3,...,n . aij(1) aij a11 a11 На втором шаге делаем то же самое, но уже с подсистемой, получающейся исключением первого уравнения из системы (6.1): ai(21) a 2(1j) ai(21) b2(1) ( 2) (1) ( 2) (1) , bi bi , i, j 3,...,n . aij aij (1) (1) a 22 a 22 Применяя этот процесс n 1 раз, система (6.1) преобразуется в систему с треугольной матрицей: a11 x1 a12 x2 ... a1n xn b1 (1) a22 x2 ... a2(1n) xn b2 ………………………………. ( n1) ann xn bn , где aik( k 1) a kj( k 1) aik( k 1) bk( k 1) (k ) ( k 1) (k ) ( k 1) , bi bi , (6.5) aij aij a kk( k 1) a kk( k 1) k 1,...,n 1, i, j k 1,...,n , aij( 0) aij , bi( 0) bi . Совокупность вычислений по формулам (6.5) называют прямым ходом метода Гаусса. Из полученной треугольной системы, начиная с xn , последовательно находим решение системы (6.1). Этот этап вычислений называется обратным ходом метода Гаусса: n 1 ( k 1) (6.6) xk ( k 1) bk akj( k 1) x j , k n, n 1,...,1 . akk j k 1 ( k 1) Числа akk называются главными (ведущими) элементами. Чтобы уменьшить влияние ошибок округлений и исключить деление на нуль, на каждом шаге прямого хода осуществляется поиск максимального коэффициента в столбце подсистемы и переставления строки с этим коэффициентом со строкой, первой в этой подсистеме. Таким образом, на каждом шаге ищется такой номер строки l , что | alk | max | aik | , k 1,...,n 1. i k Приведем алгоритм метода Гаусса с постолбцовым выбором главного элемента: 1. Для k 1,2,...,n 1, 7. bi bi 11 aik bk , a kk 8. Для j k 1,....,n : a a | aik | , то 9. aij aij ik kj . 3. Если | alk | max i k a kk 4. aki ali , bk bl . 10. xn bn ann 2. Для l k ,...,n : 5. Если alk 0 , то остановить работу алгоритма. 11. Для k n 1,...,2,1 6. Для i k 1,....,n : 1 12. xk a kk n bk a kj x j . j k 1 Другой схемой реализации метода Гаусса является схема так называемого LUP-разложения. LUP-разложение состоит в следующем: создаются три матрицы размера n n : L , U и P , где L – это нижнетреугольная матрица, ее главная диагональ заполнена единицами, U – верхнетреугольная матрица, P – матрица перестановок, причем PA LU . При помощи этих матриц можно свести (6.2) к решению двух систем с треугольными матрицами: (6.7) Ly Pb , Ux y , (6.8) где y – вспомогательное решение. Уравнение (6.7) называют "прямой" подстановкой, а уравнение (6.8) – обратной подстановкой. Матрица P состоит из строк единичной матрицы, расставленных в соответствии с постолбцовым выбором главных элементов в методе Гаусса. Поэтому матрицу P при реализации на ЭВМ можно представить в виде массива чисел, обозначающих номера переставленных строк. Если – это указанная перестановка, то Pi , [i ] 1 , Pi , j 0, j [i] . В результате система (6.7) будет иметь такой вид: y1 b [1] (6.9) l 21 y1 y 2 b [ 2] …………………………… ln1 y1 ln 2 y1 ... y n b [ n] Из (6.9) следует, что y1 b [1] . Подставляя это решение во второе уравнение (6.9), получим y 2 b [ 2] l 21 y1 и т.д. Запишем общую формулу вычислений yi (i 2,...,n) : i 1 yi b [i ] l y ij j . (6.10) j 1 Так как матрица U верхнетреугольная, то последовательность вычисления xi нужно проводить, начиная с xn . В общем случае имеем: 12 n (6.11) xi y i uij x j uii , (i 1,...,n) . j i 1 Матрица U получается из матрицы A при прямом ходе метода Гаусса. Матрица L – это матрица, состоящая из множителей, участвовавших в процессе исключения неизвестных. При осуществлении реализации алгоритма LUP -разложения нет смысла создавать отдельно матрицы U и L , так как после выполнения прямого хода метода Гаусса будем иметь lij , i j , aij uij , i j. Алгоритм схемы LUP -разложения: 1. Для i 1,2,...,n : 2. [i] i. 3. Для k 1,2,...,n : 10. aki ak i . 11. Для i k 1,....,n : a ik , 12. a ik a kk 13. Для j k 1,....,n : 14. aij aij aik akj . 4. p 0, 5. Для i k ,...,n : 6. Если | a | p , то p | a | , k i . 15. Для i 1,....,n : ik ik i 1 Если p 0 , то остановить работу aij y j . 7. 16. yi b [i ] алгоритма. j 1 8. [k ] [k ]. 17. Для i n, n 1,...,1 : n aij x j aii . 9. Для i 1,....,n : 18. xi yi j i 1 6.2. Итерационные методы Привлекательным в итерационных методах является возможность пошагово контролировать точность вычислений, а также простота их реализации на ЭВМ. Для применения итерационных методов систему (6.1)-(6.2) необходимо преобразовать к эквивалентной системе вида x Bx c , (6.12) где B и c – новые матрица и вектор соответственно. Рассмотрим сначала метод простых итераций. 13 6.2.1. Метод простых итераций Будем решать систему (6.12) методом последовательных приближений. Примем за нулевое приближение, например, столбец свободных членов x ( 0) c . Тогда x (1) Bx ( 0) c . Тогда ( n 1)-е приближение вычисляют по формуле (6.13) x ( n1) Bx ( n) c , n 0,1, .... Чтобы привести систему (6.2) к виду (6.12), можно, например, выразить неизвестные x1 , x2 , ..., xn последовательно из уравнений системы (6.1), производя деление каждого уравнения на диагональные элементы системы и перенося в i -м уравнении все слагаемые, не содержащие неизвестное xi , в правую часть уравнения. В результате получим следующие выражения для элементов матрицы B и вектора c : aij bi , i, j 1,...,n, i j , ci , Bij aii aii 0, i j , i 1,...,n. Достаточное условие сходимости метода простых итераций: если какаялибо норма B матрицы B системы (6.12) меньше единицы, то метод простых итераций сходится к решению СЛАУ при любом начальном приближении (со скоростью геометрической прогрессии со знаменателем B ), т.е. достаточно, чтобы норма матрицы B (6.14) || B || 1 для || B || и x ( 0) . Укажем способы вычисления норм в пространстве векторов и матриц. Наиболее употребительны следующие нормы: n 1) || x || max | x j | и согласовнная ей норма матриц || A || max | aij | ; 1i n 1 j n j 1 n n 2) || x ||1 | x j | , || A ||1 max | aij | ; 1 j n i 1 j 1 n 3) || x ||2 x j 1 2 j , || A ||2 max iAT A , 1 j n где iAT A – собственные числа матрицы AT A . Для исследования погрешностей, возникающих в системе (6.2), вводят понятие числа обусловленности матрицы cond ( A) || A || || A1 || . Если матрица A будет особенной, то число cond (A) будет очень большим (во много раз больше 1). В этом случае говорят, что матрица плохо обусловлена. Чем ближе cond (A) к единице, тем матрица лучше обусловлена. Известны оценки погрешности для метода простой итерации: 14 || B || (6.15) || x ( k ) x ( k 1) || , 1 || B || || B ||k * (k ) (6.16) || x x || || x (1) x ( 0) || . 1 || B || Если x ( 0) c , то x (1) x ( 0) Bx ( 0) B c , тогда || B ||k 1 * (k ) (6.17) || x x || || c || . 1 || B || Итерационный процесс (6.13) принято останавливать, как только выполнится неравенство 1 || B || || x ( k ) x ( k 1) || , (6.18) || B || где – заданная точность решения системы. Априорная оценка числа итераций при заданной погрешности : lg lg || c || lg(1 || B ||) n 1 . (6.19) lg || B || Укажем общий способ получения системы (6.12). Чтобы привести систему (6.2) к виду (6.12) можно, например, положить: A D G , ( D G) x b x D 1Gx D 1b , тогда B D 1G , c D 1b . Если матрица A имеет диагональное преобладание, т.е. || x * x ( k ) || n | aii | | a ij | , i 1,...,n , (6.20) j 1 i j то в качестве матрицы D можно выбрать нижне-треугольную часть матрицы A . Очевидно, что при диагональном преобладании элементов матрицы A число || A || 1, следовательно, итерационный процесс (6.13) будет сходящимся. 6.2.2. Метод Зейделя Метод простых итераций обычно очень медленно сходится. Для его ускорения существует метод Зейделя, в котором для вычисления компоненты xi( k 1) вектора неизвестных на (k 1) -й итерации используются уже вычисленные первые i 1 компоненты x на этой итерации. Значения остальных компонент x берутся из предыдущей итерации. Метод Зейделя для вычисления (k 1) -го приближения к решению системы (6.12) будет иметь следующий вид: x1( k 1) b11 x1( k ) ... b1n xn( k ) c1 , xi( k 1) bi1 x1( k 1) ... bi ,i 1 xi(k11) bi ,i xi( k ) ... bin xn( k ) ci , i 2,...,n . (6.21) Систему (6.21) можно переписать в матричном виде: x ( k 1) P x ( k 1) Q x ( k ) c , (6.22) 15 0 ... 0 0 0 b11 b12 ... b1n 0 0 0 b ... b b21 0 ... 22 2n , Q . P ... ... ... ... ... ... ... ... ... b b ... b 0 ... bnn n2 n , n 1 0 0 n1 Таким образом, метод Зейделя эквивалентен некоторому методу простой итерации: (6.23) x ( k 1) F x ( k ) f , k 0,1, 2.... , где F ( E P) 1 Q , f ( E P) 1 c . Поэтому условия сходимости для метода Зейделя будут те же, что и для метода простой итерации. Для оценки погрешности метода Зейделя можно использовать выражение 1 || F || || x ( k ) x ( k 1) || . (6.24) || Q || Метод Зейделя сходится также в случае, если матрица A системы (6.2) является симметричной положительно определенной матрицей. Если матрица A невырожденная и невелика, то систему (6.2) всегда при помощи элементарных преобразований строк можно привести к матрице с диагональным преобладанием, для которой рассмотренные методы итераций сходятся. Например, исходную матрицу A можно привести к матрице с диагональным преобладанием, если сделать следующее преобразование: разделить элементы матрицы на достаточно большое число (например, ее норму) и вычесть эту матрицу из единичной матрицы. Пусть матрица A обладает диагональным преобладанием, тогда метод Зейделя примет следующий вид: n i 1 ( n 1) ( n ) (6.25) xi bi aij x j aij x (jn1) aii , i 1,...,n . j i 1 j 1 Существует более простой способ приведения произвольной невырожденной матрицы A к виду, при котором метод Зейделя будет сходиться. Для этого нужно нормализовать матрицу СЛАУ. Нормальную матрицу можно получить, если, например, домножить слева матрицу A системы (6.2) на транспонированную к ней матрицу, так что матрица AT A будет симметричной и положительно определенной. Однако этот способ ухудшает обусловленность матрицы СЛАУ. Пример. Решим систему: 2 x1 x2 x3 3 , 3x1 5x2 2 x3 1, x1 4 x2 10 x3 0 методами простой итерации и Зейделя. В последнем уравнении есть преобладание диагонального элемента системы. Добьемся этого преобладания в остальных уравнениях: умножим первое уравнение на 2 и прибавим к нему второе, а из второго уравнения вычтем первое уравнение, тогда получим 7 x1 3x2 5, x1 6 x2 3x3 4, x1 4 x2 10 x3 0 , 16 x x 2 x 2 3 5 x1 x2 , x2 1 3 , x3 1 x2 . 7 7 6 2 3 10 5 3/ 7 0 0 T ( 0) Пусть x c 5 7 , 2 3 , 0 , B 1 / 6 0 1/ 2 1 / 10 2 / 5 0 || B || max3 / 7, 4 / 6,1 / 2= 2 / 3 , || c || max| ci | 5 / 7 . i Вычислим приближенно число итераций, дающее ответ с точностью 0.001: k 1 || B ||k 1 1 7 2 * (k ) || x x || || c || 0.001 0.001 3 5 1 || B || 3 2 7 k 1 18.9 k 18 . (k 1) lg 3 lg 3 15 Сведем все вычисления в таблицу: k Метод простых итераций x1 x2 x3 k 0 1 2 3 … 17 –0.714285 –1 –1.051020 –1.1438775 … –1.212100 0.666666 0.785714 1.00238 1.048979 … 1.161587 0 0.338095 0.414285 0.506054 … 0.585834 0 1 3 … 10 11 18 –1.212109 1.161600 0.585845 Метод Зейделя x1 x2 –0.714285 –1 –1.169387 … –1.212100 –1.212114 0.666666 0.833333 1.127517 … 1.161599 1.161610 x3 0 0.433333 0.567945 … 0.585850 0.585855 Точное решение, полученное методом Гаусса, будет следующим: 40 115 58 x1 1.212121..., x2 1.161616..., x3 0.585858... 33 99 99 6.3. Задание на лабораторную работу № 5: Численное решение систем линейных уравнений 1. Решить систему линейных уравнений с матрицей и правой частью, приведенными в таблице (см. вариант), методами: а) Гаусса с точностью 0.001 (четные номера вариантов – алгоритм ГауссаЖордана, нечетные – алгоритм LUP-разложения); б) простой итерации или Зейделя с точностью 0,001, приведя предварительно систему к виду, удобному для итераций (вручную сделать пять итераций). 17 2. Сравнить результаты. № вар Матрица 1 1,7 1,8 0,8 1,8 1 2,6 0,8 2,6 3,2 2 3 4 5 6 7 8 9 10 1,1 1 2,5 3,1 1,9 7,5 9,1 3,8 4,1 3,3 4,1 2,7 5,3 1,5 1,8 3,2 0,5 1,6 5,4 4,2 3,4 3,6 2,7 1,5 9,9 1,1 0,5 1,6 2,1 0,9 6,8 2,2 0,8 2,8 1,9 3,1 2,1 3,8 4,8 5,6 7,8 5,1 2,8 5,7 1,2 2,1 2,8 3,7 4,8 1,8 1,1 1,7 3,6 2,4 0,5 1,2 3,5 2,5 3,7 0,4 1,7 2,3 1,5 2,3 3,4 1,7 2,3 2,4 7,4 1,8 4,7 3,6 1,9 4,5 3,3 7 0,1 2,5 4 1,1 6,2 Правая часть № вар. 2, 2 0,8 0,7 4,2 0,9 2,1 15 16 0,2 2,1 5,6 9,8 6,7 5,8 17 18 0,8 5,7 3,2 4,1 5 0,2 19 20 6,5 0,2 4,3 3,5 2,7 1,9 21 22 3,8 0,4 1,6 7 2,5 6,2 23 24 18 Матрица 0,2 0,3 0,8 1,1 0,8 0,6 0,7 0,4 0,4 2,7 1,2 3,2 1,1 0,8 2,2 0,8 1,3 0,7 2,7 3,3 1,3 3,5 1,7 2,8 4,1 5,8 1,7 3,1 1,9 0,8 3,6 2,7 1,5 2,7 4,3 4,1 3,6 5,4 2,4 4,6 3,2 1,8 4,5 3,1 1,8 7,4 1,6 4,7 2,8 1,9 3,1 2,1 3,8 4,8 1,8 4,7 3,6 1,9 4,5 3,3 0,9 2,1 2,6 7,1 2,7 1,4 6,7 2,1 1,2 3,7 4,5 2,9 2,1 3,5 2,1 1,5 2,6 4,7 1,8 3,6 2,3 1,2 2,5 4,6 2,2 3,1 4,8 8,5 7,1 6,1 Правая часть 1,1 0,5 0,8 2,2 1,2 3,2 2,1 1,7 0,8 0, 2 2,1 5,6 3,8 0,4 1,6 3,2 2,3 0,2 5,1 2,9 0,8 1,6 3,5 2,2 1,7 3,6 2,2 0,7 2,4 6,6 11 2,7 0,9 1,5 4,5 2,8 6,7 5,1 3,7 1,4 3,5 2,6 0,1 12 4,5 3,5 7,5 3,1 0,6 2,3 0,8 7,4 0,5 2,5 1,5 6,4 13 3,8 6,7 1,2 3,9 6,8 1,1 2,4 4,5 3,5 5, 2 3,8 0,5 14 5,4 6,2 0,5 3,4 2,3 0,8 2,4 1,1 3,8 0,5 0,8 1,8 25 7,1 8,2 4,4 3,2 1,5 2,9 4,5 6,7 1,3 1,1 5,4 9,8 26 4,3 1,5 0,7 1,4 1,7 1,9 0,7 1,9 2,1 1,4 2,7 0,6 27 0,5 0,7 1,9 0,7 0,8 1,2 2,1 1,2 2,5 0,7 1 1,4 28 2,2 1,8 0,4 3,1 2,4 1,1 2,5 1,1 7,3 1,2 0,2 0,8 7. ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ Рассмотрим основные численные методы решения обыкновенных дифференциальных уравнений (ОДУ) первого порядка с заданным начальным условием (задача Коши) dy (7.1) f ( x, y ) , y ( x 0 ) y 0 . dx Будем считать, что выполняются условия существования и единственности решения задачи Коши (7.1) на отрезке [ x0 , b] . Основная задача численных методов решения ОДУ состоит в отыскании только одного частного решения, так как эти методы ищут искомую функцию не аналитически (в виде формул), а численно, в виде набора значений этой функции на некотором множестве точек. Это достигается при помощи дискретизации исходной задачи. Дискретизация задачи (7.1) делается следующим образом: на заданном промежутке [a, b] выбирается сетка (множество точек): a x0 x1 ... xN b . Если сетка равномерная, то xn1 xn h , n 0,...,N . Тогда решение y (x) ищется в виде сеточной функции, т.е. набора значений y( xn ) в узлах xn выбранной сетки. Эти значения в общем случае ищутся приближенно. 19 7.1. Метод Эйлера Этот метод является одношаговым методом решения дифференциальных уравнений при помощи конечных разностей первого порядка. y (x) y y0 y ( x0 )(x x0 ) Если производную в (7.1) заменить аппроксимирующей формулой: y0 y ( y( x h) y( x)) h , то, применяя ломаная Эйлера эту формулу для решения y (x) вблиh x x x x зи произвольного узла xn , получим 3 0 0 1 2 формулу Эйлера: yn1 yn h f ( xn , yn ) , (7.2) где y( xn ) y n , xn x0 nh , n 0,...,N . График решения y (x) задачи Коши (7.1) по методу Эйлера представляет собой ломаную линию, составленную из отрезков касательных, проведенных в узлах сетки. Метод Эйлера является одношаговым методом, так как для отыскания последующего значения функции y (x) необходимо знать одно предыдущее ее значение в предшествующем узле сетки. На каждом шаге численного интегрирования метод Эйлера имеет второй порядок точности. Но на всем отрезке [a x0 , b] порядок точности метода Эйлера совпадает с порядком аппроксимации производной и имеет первый порядок точности. y 7.2. Модифицированный метод Эйлера (метод Эйлера-Коши) Проинтегрируем уравнение (7.1) на отрезке [ x0 , x] , тогда получим решение задачи Коши в виде следующего интегрального уравнения: x y ( x) y ( x0 ) f (t, y(t ))dt . (7.3) x0 Интеграл в правой части уравнения (7.3) можно взять численно по одному из методов численного интегрирования. Если применить метод левых прямоугольников, то получим: y( x1 ) y0 f ( x0 , y( x0 ))(x1 x0 ) , что в общем случае, для xn1 , приводит к формуле Эйлера: y( xn1 ) yn f ( xn , y( xn ))(xn1 xn ) . Если интеграл в (7.3) вычислить с помощью метода трапеций, тогда для отрезка [ xn , xn1 ] получим: h y( xn1 ) y n1 y n f ( xn , y n ) f ( xn1 , y n1 ) . (7.4) 2 20 Если значение для y n1 в правой части уравнения (7.4) вычислять по методу Эйлера, то получим модифицированный метод Эйлера: h (7.5) y n1 y n f ( xn , y n ) f ( xn1 , y n h f ( xn , y n ). 2 Можно достичь большей точности, если делать несколько итераций по модифицированному методу Эйлера для значения yn1 : h (7.6) y n( k1) y n f ( xn , y n ) f ( xn1 , y n( k11) ) , 2 где yn( 0)1 yn h f ( xn , yn ) , делая оценку выражения y n( k1) y n( k11) . Так как метод трапеций имеет второй порядок точности, то и модифицированный метод Эйлера также имеет второй порядок точности на всем интервале интегрирования. 7.3. Семейство методов Рунге-Кутты Идея построения методов Рунге-Кутты k -го порядка: построить приближенное решение задачи Коши (7.1) по формуле вида: (7.7) yn1 yn h ( xn , yn , h) , где ( x, y, h) – некоторая функция, приближающая отрезок ряда Тейлора до k -го порядка и не содержащая частных производных f ( x, y) . Если ( x, y, h) f ( x, y) , то приходим к методу Эйлера, т.е. этот метод является методом Рунге-Кутты 1-го порядка. В общем случае функцию ( x, y, h) берут в виде: ( x, y , h ) xn 1 k j 1 j f ( x j , y ( x j )) j f ( x, y( x))dx , y( x ) y( x ) . j i i (7.8) i 1 xn Формула (7.8) означает приближение интеграла в (7.3) квадратурной формулой k -го порядка. Для построения методов Рунге-Кутты порядка, выше первого, функцию ( x, y, h) в (7.8) берут многопараметрической и подбирают ее параметры сравнением выражения (7.7) с многочленом Тейлора для y (x) , соответствующим требуемому порядку степени. Так, при k 2 имеем однопараметрическое семейство методов РунгеКутты 2-го порядка: h h yn1 yn h(1 ) f ( xn , yn ) f xn , yn f ( xn , y n ) . (7.9) 2 2 При 1 / 2 в (7.9) получим модифицированный метод Эйлера. Таким образом, любой метод из семейства методов Рунге-Кутты 2-го порядка имеет следующий вид: 21 K1 f ( xn , yn )h, K f x h , y K1 h, yn1 yn (1 ) K1 K2 , n 0,1, 2,.. (7.10) n n 2 2 2 Наиболее употребительным частным случаем семейства методов РунгеКутты является метод Рунге-Кутты 4-го порядка. Этот метод может быть получен на основании формулы (7.3), если интеграл в правой части вычислить приближенно по методу Симпсона. Тогда на каждом шаге численного интегрирования метод Рунге-Кутта будет иметь 5-й порядок точности, но на всем отрезке порядок точности метода будет равен четырем. В соответствии с этим приведем один из вариантов метода Рунге-Кутта 4-го порядка: 1 K1 2 K 2 2 K 3 K 4 , n 0,1, 2, ... y y n 1 n 6 K f ( x , y )h, n n 1 K f x h , y K 1 h, n (7.11) n 2 2 2 K f x h , y K 2 h, n n 3 2 2 K f x h, y K h. n n 3 4 7.4. Погрешности численного решения ОДУ При практических расчетах очень удобно пользоваться методом Рунге (методом двойного просчета) для оценки погрешности приближенного решения ОДУ. Обозначим абсолютную погрешность решения y (x) через (x) : ( x) y точн ( x) y прибл ( x) . Согласно методу Рунге осуществляется приближенное вычисление значений y( xn ) по системе узлов xn x0 nh на отрезке [ x0 , x N ] с шагом h и с шагом h / 2 при помощи метода k -го порядка точности и далее осуществляется пересчет значения y( xn ) с погрешностью, не превышающей y n*1 y n1 , где y n*1 – значение решения при шаге h / 2 , а y n1 – значение решения при шаге h . (x) будем определять по методу Рунге. При использовании численного метода с шагом h имеем: (h) y точн ( x) y прибл ( x) C ( x)h k O(h k 1 ) , (7.12) а при использовании метода с шагом h / 2 : k h ( h / 2) y точн ( x) y прибл ( x) C ( x) O(h k 1 ) . (7.13) 2 k Выражение C ( x)h является главным членом погрешности метода k -го порядка точности. Из формул выше следует, что: 22 k ( h / 2) ( h) h y прибл ( x) y прибл ( x) (7.14) (x) C ( x) = O(h k 1 ) . k 2 1 2 Подставляя (7.14) в (7.13), получим метод (k 1) -го порядка точности: y точн ( x) y ( h / 2) прибл ( x) ( h / 2) (h) y прибл ( x) y прибл ( x) O(h k 1 ) . (7.15) 2 1 Здесь k 1 для метода Эйлера, k 2 для модифицированного метода Эйлера и k 4 для метода Рунге-Кутты 4-го порядка. Процесс уточнения с применением формулы (7.15) можно продолжать до тех пор, пока не выполнится условие ( hk / 2 ) ( hk ) (7.16) max yприбл ( x) yприбл ( x) , k 1, 2, ..., k где – заданная погрешность решения. Менее строгий, но более "дешевый" способ выбора шага в методе РунгеКутты 4-го порядка основан на вычислении дроби: ( K 2 K 3 ) ( K1 K 2 ) . Если не превышает нескольких сотых, то шаг h сетки можно не менять, в противном случае при переходе от одного узла сетки к другому шаг нужно уменьшить вдвое. 7.5. Метод Адамса Пусть на отрезке [ x0 , x N ] решается задача Коши (7.1) каким-либо численным методом с шагом h ( N ( x N x0 ) / h ) и найдено уже n значений yi y( xi ) , i 1,...,n . Нужно найти приближенное решение этой задачи в следующих точках: xn1 ,...,x N . Для получения значений y n1 y( xn1 ) используем интегро-интерполяционный подход. Возьмем решение y (x) по промежутку [ xn , xn1 ] в виде: xn 1 y ( x n1 ) y ( x n ) f (t, y(t ))dt (7.17) xn и подставим под интеграл в (7.17) вместо функции f ( x, y( x)) интерполирующий ее многочлен Pk (x) (многочлен Ньютона). Хотя вид функции f ( x, y( x)) как функции x неизвестен, но известны ее приближенные значения f ( x j , y( x j )) f j , j 0,...,n , служащие основой для построения интерполяционных многочленов Pk (x) для интерполирования назад. Далее, интегрируя многочлен Ньютона Pk (x) по отрезку [ xn , xn1 ] , получим методы Адамса. Например, если воспользоваться второй интерполяционной формулой Ньютона для интерполирования назад с точностью до разностей 4-го порядка: q(q 1) 2 q(q 1)(q 2) 3 f ( x, y) f n qf n1 f n2 f n 3 , 2! 3! 23 x xn , f n f ( xn , yn ) , и подставить это выражение в интеграл в h (7.17), то, учитывая, что dx hdq , получим h 5 3 y n1 y n y n y n hf n f n1 h2 f n2 h3 f n3 . 2 12 8 Так, при k 0 получим метод Эйлера (т.е. это метод Адамса 1-го порядка). h При k 1 : y n1 y n 3 f n f n1 (метод Адамса 2-го порядка); 2 h при k 2 : y n1 y n 23 f n 16 f n1 5 f n2 (метод Адамса 3-го порядка); 12 h при k 3 : y n1 y n 55 f n 59 f n1 37 f n2 9 f n3 (метод Адамса 4-го порядка). 24 Метод Адамса относится к многошаговым методам решения дифференциальных уравнений, т.к. использует на каждом шаге численного интегрирования несколько значений функции f ( x, y) , вычисленных в предыдущих узлах сетки. где q 7.6. Задание на лабораторную работу № 6: Численное решение задачи Коши для обыкновенных дифференциальных уравнений 1. Решить дифференциальное уравнение (см. вариант) на заданном интервале при заданном начальном условии с шагом h0 и h0 / 2 : аналитически, методом Эйлера, модифицированным методом Эйлера и методом Рунге-Кутты 4-го порядка. 2. Составить четыре таблицы данных и построить четыре графика зависимостей решения: точного y (x) и приближенных yi y( xi ) при h0 / 2 , полученных по трем методам. 3. Определить погрешности численных методов решения – сравнением результатов с аналитическим решением и методом двойного пересчета. Сравнить результаты. № вар. 1 2 3 4 5 6 7 Уравнение y xy 2 y y (3x 2 ) y x 3 y 2 y y cos(x) y y 2 cos(x) y x 3 y 3 y x 2 y y Интервал Начальное условие Шаг h0 y(0) 2 [0, 4] 0,5 y(1) 1 [1, 3] 0,4 y(0) 1 [0, 2] 0,4 y(0) 1 [0, 2] 0,4 y(0) 1 [0, 2] 0,4 y(0) 1 [0, 2] 0,4 y(0) 1 [0, 1] 0,2 24 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 y ( x 1) 2 y 2 y y 2 / x y y 2 sin( x) y y sin(x) y y( x 1) y x 3 y y e x y 3x 2 y 2 y x 2 y y y 2 (e x 4 x) y 1/ y y y 2 y y 2 / x y xy y 2x y y 2 y y y 2 ( 2 x) / x y 1 y 2 y y 2 e x y y / x y y 2 x [0, 1] [1, 2] [0, 1] [0, 2] [0, 2] [0, 1] [1, 2] [0, 2] [0, 1] [0, 2] [2, 4] [0, 1] [1, 5] [0, 2] [0, 1] [1, 2] [1, 5] [0, 1] [0, 2] [1, 3] [0, 1] y(0) 1 y(1) 1 y(0) 0,5 y(0) 1 y(0) 1 y(0) 1 y(1) 0 y(0) 4 y(0) 1 y(0) 1 y(2) 2 y(0) 0,5 y(1) 0,1 y(0) 1 y(0) 1 y(1) 1 y(1) 1 y(0) 0 y(0) 2 y(1) 1 y(0) 0,5 0,2 0,2 0,2 0,4 0,4 0,2 0,2 0,4 0,2 0,4 0,4 0,2 0,5 0,4 0,2 0,2 0,5 0,2 0,4 0,4 0,2 8. ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ КРАЕВЫХ ЗАДАЧ ДЛЯ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ Рассмотрим линейную граничную (краевую) задачу для обыкновенного дифференциального уравнения (ОДУ) 2-го порядка. Пусть на отрезке [a, b] задана дважды непрерывно дифференцируемая функция y (x) , которая определяется линейным неоднородным ОДУ 2-го порядка: y ( x) p( x) y ( x) q( x) y( x) f ( x) , x [a, b] , (8.1) где p(x) , q(x) , f (x) – известные функции. Двухточечная линейная граничная (краевая) задача для уравнения (8.1) ставится следующим образом: найти функцию y (x) , которая на отрезке [a, b] удовлетворяет (8.1), а на концах отрезка граничным условиям 25 0 y (a) 0 y (a) A, (8.2) 1 y (b) 1 y (b) B, где 0 , 0 , 1 , 1 , A , B – заданные постоянные. Предполагается, что | 0 | | 0 | 0 , | 1 | | 1 | 0 . Краевые условия (8.2) определяют третью или смешанную краевую задачу для ОДУ 2-го порядка. В случае, если 0 0, 1 0 , получим краевые условия 1-го рода (условия Дирихле), а если 0 0, 1 0 , получим краевые условия 2-го рода (условия Неймана). Рассмотрим решение граничной задачи (8.1)-(8.2) конечно-разностным методом или, по-другому, методом сеток. В этом методе граничная задача заменяется системой алгебраических уравнений, неизвестными в которой являются различные величины, "близкие" к решению граничной задачи в узлах сетки. Полученную систему алгебраических уравнений называют разностной схемой. Введем на отрезке [a, b] равномерную сетку вида (8.3) w xi a ih, i 0,1, ..., N , h (b a) / N и на этой сетке определим сеточные функции pi p( xi ) , qi q( xi ) , f i f ( xi ) . Считая y (x) точным решением задачи (8.1)-(8.2), обозначим через yi y( xi ) приближенное значение функции y (x) в узлах xi сетки. Простейшим способом построения разностной схемы является замена непрерывных производных в узлах сетки конечноразностными отношениями. Положив в (8.1) x xi , получим равенство (8.4) y ( xi ) p( xi ) y ( xi ) q( xi ) y( xi ) f ( xi ) . Заменив производные в (8.4) конечноразностными отношениями (аппроксимациями) второго порядка: y ( xi 1 ) y ( xi 1 ) y( xi 1 ) 2 y ( xi ) y ( xi 1 ) , y ( xi ) , y ( xi ) 2h h2 получим трехточечное разностное уравнение 2-го порядка: h h 2 2 (8.5) 1 pi yi 1 h qi 2yi 1 pi yi 1 h f i , i 1,...,N 1. 2 2 Формулу (8.5) можно интерпретировать как компактную запись СЛАУ с трехдиагональной матрицей коэффициентов с числом уравнений N 1. Всего неизвестных в этой системе будет N 1 : y0 , y1 , …, y N . Недостающие два уравнения берутся из граничных условий (8.2). Поскольку x0 a , x N b , то, заменяя производные y (a) и y (b) в (8.2) аппроксимациями первого порядка, получим h 0 0 y0 0 y1 Ah, (8.6) 1 y N 1 h1 1 y N Bh, 26 Уравнения (8.5)-(8.6) образуют СЛАУ с трехдиагональной матрицей, к которой (вместо более трудоемкого метода Гаусса) можно применить высокоэффективный метод прогонки. 8.1. Метод прогонки Алгоритм решения системы (8.5)-(8.6) методом правой прогонки имеет следующий вид: 1) найти значения 0 Ah , X1 ; Z1 (h 0 0 ) (h 0 0 ) 2) по рекуррентным формулам Z i 1 h h 2 f i 1 p i Z i 2 , X i 1 h h 2 qi 2 1 pi X i h 2 qi 2 h 1 p i 2 h 2 1 p i X i 2 последовательно вычислить Z 2 , X 2 , …, Z N , X N ; 3) найти y N Bh 1 Z N ; (h 1 1 ) 1 X N 4) по формуле yi 1 Z i X i yi вычислить y N 1 , …, y0 . Здесь Z i и X i – это прогоночные коэффициенты. Этапы 1-2 – это прямой ход метода прогонки, на нем вычисляются все коэффициенты Z i и X i ; этапы 3-4 – обратный ход метода прогонки, на котором вычисляются приближенные значения решения yi от y N до y0 (вычисления идут справа налево). Для устойчивости метода прогонки должны выполняться условия: 2 . (8.7) q( x) 0 , x [a, b] и h max | p( x) | x[ a ,b ] При выполнении условий (8.7) метод сеток сходится, по крайней мере, к решению первой краевой задачи, т.е. когда 1 1 0 ; в других случаях требуется более детальный анализ. Из условий (8.7) получим условия сходимости для метода правой прогонки. Он будет устойчив к погрешностям округлений, если 2 | X i | 1, | h 0 0 || 0 | и h , i 1,...,N 1. (8.8) | pi | При невыполнении этих условий погрешность решения системы (8.5)-(8.6) может быть значительной. 27 Если выполняются условия 2 , i 1,...,N 1, (8.9) | h1 1 || 1 | и h | pi | то можно применить метод левой прогонки. Он состоит в следующем: 1) находим значения 1 Bh , X N 1 ; Z N 1 (h1 1 ) (h 1 1 ) 2) по рекуррентным формулам Z i 1 h h h 2 f i 1 p i Z i 1 p i 2 2 , X i 1 h 2 qi 2 1 h pi X i h 2 qi 2 1 h pi X i 2 2 последовательно вычисляем Z N 2 , X N 2 , …, Z 0 , X 0 ; 3) находим y0 Ah 0 Z 0 ; (h 0 0 ) 0 X 0 4) по формуле yi 1 Z i X i yi вычисляем y1 , …, y N . 8.2. Задание на лабораторную работу № 7: Численное решение двухточечной линейной краевой задачи 1. Решить дифференциальное уравнение y( x) p( x) y( x) q( x) y( x) f ( x) при заданных краевых условиях 0 y(a) 0 y(a) A; 1 y(b) 1 y(b) B. разностным методом с использованием метода исключения Гаусса ("метод правой прогонки" или "метод левой прогонки"), взяв выражения для функций и значения параметров из таблицы (по своему варианту). 2. Составить две таблицы расчетов значений функции в узлах сетки для a 0 , b 1 при двух значениях числа N : 6 и 12 (на ЭВМ соответственно 10 и 20) – дробления интервала [a, b] . 3. Отобразить на одном графике две кривые y y( xi ), i 0,..., N решения краевой задачи при различных N . Проанализировать достигнутую точность решения – сравнением результатов, полученных при двух расчетах. 28 Варианты заданий № вар. p ( x) q ( x) f ( x) 0 0 1 1 A B 1 ( x 1) –1 2 ( x 1)3 1 0 1 0 1 0,5 2 2 ( x 2) x2 1 1 0 1 0 –0,5 –1 3 4x x 1 2 3 ( x 1) 2 1 0 1 0 0 0,5 4 x2 0 ex 1 1 0 1 0 1 5 e x x 0 –1 1 1 1 1 0 1 0 1 0 0 1,4 2 1 x 1 2 6 x 1 –1 x2 2 x 2 x 1 7 –1 –2 3e x 0 1 1 2 0 0 8 x 1 –2 2 1 –1 1 0 –1 4 9 2 x 1 –1 1 x 1 0 1 1 2 1 0 10 –1 –2 e x 1 0 1 0 0 0 11 1 –2 3 ex 1 0 1 1 0 3е 12 x –2 6 1 0 1 0 0,5 2 13 2x –2 2x 2 1 0 1 0 1 0 14 –2 –1 2 xe x 1 0 1 0 0 2,72 15 x2 0 ex 1 1 0 1 0 1 29 16 sin x 0 x2 0 1 1 0 0 1 17 2 x 0 2 1 1 0 1 1 0 18 ( x 3)2 2 ( x 3) 2 3 1 –1 1 0 4/3 3/4 19 cos x 0 x2 1 0 1 0 1 1,5 20 ( x 0,3)2 –2 0,3 0,5 0,5 0,5 0,5 0,5 1 21 0,5 x3 0 1 x3 3 –6 0 1 3 2 22 1,5 3x 1 3x 1 6x 2 0 1 1 0 –3 –4 23 2x –2 4x 1 1 –1 0 0 3,7 24 sin 2x 3x x 1 0 1 0 1 2 25 ( x 1) 2x 3x 2 1 2 2 ( x 1)3 1 –2 1 0 1 0,5 26 1 2( x 1) x 1 2 ( x 1) 2 3 0 1 3 2 1 4 1 x 0 x2 1 1 1 0 1 1 27 2 28 0 –x 1 –1 1 1 0 1 0 29 x 0 ex 1 1 0 1 1 0 30 Методические указания к выполнению лабораторных работ по дисциплине ЧИСЛЕННЫЕ МЕТОДЫ Часть 2 Подписано в печать 24.06.2013г. Формат 60х90 1/16. Объѐм 1,9 усл.п.л. Тираж 150 экз. Изд. № 60. Заказ 130. ООО «ТиРу». Москва, ул. Правды, д. 24, стр. 5. 31