Uploaded by Alexandr Kitaev

Демин Д.Б.Численные методы . Ч.2

advertisement
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное образовательное бюджетное учреждение
высшего профессионального образования
Московский технический университет связи и информатики
Кафедра теории вероятностей и прикладной математики
Демин Д.Б.
Методические указания
к выполнению лабораторных работ
по дисциплине
ЧИСЛЕННЫЕ МЕТОДЫ
Часть 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( n1)  i x1( n ) , ..., x N( n )  , i  1, 2, ..., N ,
(5.4)
или, в векторной форме,
 

(5.5)
x ( n1)   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) ,
1i  N
 
а согласованная с ней норма функции ||  ( x ) || формулой

N

 i ( x ) 
 


(5.9)
||  ( x ) || max
max

.

xG
1i  N

x


j
j

1


Достаточное условие, обеспечивающее выполнение неравенства (5.7):
 
 
 
пусть функции  (x ) и  (x ) непрерывны в области G : || x  x ( 0) ||  , причем
в G выполнено неравенство
 
(5.10)
||  ( x ) || q  1.
 ( n1)
Если последовательные приближения x
не выходят из G , то процесс ите*

рации сходится к единственному решению x  lim x ( n ) уравнения (5.3).

n
Из (5.9)-(5.10) получим формулу для параметра q :

N

 i ( x ) 


q   max
max

  1.
(0)
||x  x ||  1i  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 ( n1)  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 ( n1) вычисляется по
формуле:
 



(5.15)
x ( n1)  x ( n)  J 1 ( x ( n) ) f ( x ( n) ) , n  0,1, 2, ...,

где J 1 ( x ( n ) ) – матрица, обратная к матрице Якоби. Формула (5.15) описывает
итерационный процесс метода Ньютона.
Метод Ньютона имеет квадратичную скорость сходимости, причем для


остановки алгоритма обычно используют условие || x ( n1)  x ( n) ||  , где  –
заданная точность решения. Отслеживать факт сходимости процесса можно
по формуле:
 
 
f ( x ( n1) )  f ( x ( n ) ) ,
(5.16)
 

где f ( x )  max f i ( x ) .
1i  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 ( n1) вычисляется по формуле



x ( n1)  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 (n1) )   , где  –
требуемая точность решения.
При выборе  n в формуле (5.18) необходимо учитывать, что на каждой
итерации должно выполняться неравенство:


(5.20)
( x ( n1) )  ( 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,5yx3x y2 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  A1 B ,
(6.4)
T
где Aˆ  Aij  – матрица, составленная из алгебраических дополнений Aij к
элементам a ij ; A1 – обратная матрица системы.
При использовании формул (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
……………………………….
( n1)
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 ( n1)  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 |  ;

1i  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 ||  || A1 || . Если матрица 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(k11)  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 (jn1)  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 ||  max3 / 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 . Если сетка равномерная, то xn1  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
формулу Эйлера:
yn1  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 ) , что в общем случае, для xn1 , приводит к
формуле Эйлера: y( xn1 )  yn  f ( xn , y( xn ))(xn1  xn ) .
Если интеграл в (7.3) вычислить с помощью метода трапеций, тогда для
отрезка [ xn , xn1 ] получим:
h
y( xn1 )  y n1  y n   f ( xn , y n )  f ( xn1 , y n1 ) .
(7.4)
2
20
Если значение для y n1 в правой части уравнения (7.4) вычислять по методу
Эйлера, то получим модифицированный метод Эйлера:
h
(7.5)
y n1  y n   f ( xn , y n )  f ( xn1 , y n  h f ( xn , y n ).
2
Можно достичь большей точности, если делать несколько итераций по
модифицированному методу Эйлера для значения yn1 :
h
(7.6)
y n( k1)  y n  f ( xn , y n )  f ( xn1 , y n( k11) ) ,
2
где yn( 0)1  yn  h f ( xn , yn ) , делая оценку выражения y n( k1)  y n( k11) .


Так как метод трапеций имеет второй порядок точности, то и модифицированный метод Эйлера также имеет второй порядок точности на всем интервале интегрирования.
7.3. Семейство методов Рунге-Кутты
Идея построения методов Рунге-Кутты k -го порядка: построить приближенное решение задачи Коши (7.1) по формуле вида:
(7.7)
yn1  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



yn1  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, yn1  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 n1 ,
где y n*1 – значение решения при шаге h / 2 , а y n1 – значение решения при
шаге 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 . Нужно найти приближенное решение этой задачи в следующих точках: xn1 ,...,x N . Для получения значений y n1  y( xn1 ) используем
интегро-интерполяционный подход. Возьмем решение y (x) по промежутку
[ xn , xn1 ] в виде:
xn 1
y ( x n1 )  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 , xn1 ] , получим методы Адамса.
Например, если воспользоваться второй интерполяционной формулой
Ньютона для интерполирования назад с точностью до разностей 4-го порядка:
q(q  1) 2
q(q  1)(q  2) 3
f ( x, y)  f n  qf n1 
 f n2 
 f n 3 ,
2!
3!
23
x  xn
, f n  f ( xn , yn ) , и подставить это выражение в интеграл в
h
(7.17), то, учитывая, что dx  hdq , получим
h
5
3
y n1  y n  y n  y n  hf n  f n1  h2 f n2  h3 f n3 .
2
12
8
Так, при k  0 получим метод Эйлера (т.е. это метод Адамса 1-го порядка).
h
При k  1 :
y n1  y n  3 f n  f n1  (метод Адамса 2-го порядка);
2
h
при k  2 : y n1  y n  23 f n  16 f n1  5 f n2  (метод Адамса 3-го порядка);
12
h
при k  3 : y n1  y n  55 f n  59 f n1  37 f n2  9 f n3  (метод Адамса 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  2yi  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  h1  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)
| h1  1 || 1 | и h 
| pi |
то можно применить метод левой прогонки. Он состоит в следующем:
1) находим значения
1
Bh
, X N 1 
;
Z N 1 
(h1  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)
x2
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
x3
0
1
x3
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
Download