МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

 

ДАГЕСТАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

 

 

 

 

 

АБДУРАГИМОВ Э.И., БЕЙБАЛАЕВ В.Д.

 

ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ ЗАДАЧИ КОШИ ДЛЯ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ

 

Электронный лабораторный практикум

 

 

 

 

 

 

 

 

 

 

 

Махачкала 2017

  Перейти к  содержанию


 

 

 

        

       Электронный лабораторный практикум предназначен для студентов математического факультета специальностей 010100- математика, 010400- прикладная математика и информатика. Оно содержит варианты тем лабораторной работы и краткие теоретические сведения по теме: «Численные методы решения дифференциальных уравнений», необходимые для выполнения лабораторной работы по этой теме. В нем приведен также образец выполнения нулевого варианта лабораторной работы, аналогичного вариантам, которые должны выполнить студенты. Студенты математического факультета специальности 010100- математика выполняют только задание 1, а студенты специальности 010400- прикладная математика и информатика выполняют задания 1 и 2.

 

 

 

 

Составители: Абдурагимов Э.И.─доцент кафедры

прикладной математики ДГУ,                                    

                                              Бейбалаев В.Д─ доцент кафедры

прикладной математики ДГУ

 

 

 

 

 

 

 

 

 

 

 

  Перейти к  содержанию


Содержание

 

1.    Одношаговые методы

2.    Многошаговые методы Адамса

3.    Формулы Адамса

4.   Задание 1

5.   Задание 2

6.    Образец выполнения лабораторной работы

7.    Литература

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  Перейти к  содержанию

 

 

 

 

 

 

 

 

КРАТКИЕ СВЕДЕНИЯ

 

Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений первого порядка

 

1.    Одношаговые методы

 

Содержание темы

 

·       Метод Тейлора

·       Метод Эйлера

·       Методы Рунге-Кутта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  Перейти к содержанию

 Перейти к содержанию темы

         Метод Тейлора. Метод Тейлора является приближенным методом решения задачи Коши. Он позволяет, зная значения решения и производных решения задачи Коши в некоторой точке , найти приближенно решение  этой задачи в точках достаточно близких к точке .

           Рассмотрим задачу Коши для дифференциального уравнения первого порядка

                                                                   (1)

         Введем на отрезке    сетку (в общем случае неравномерную) значений аргумента   такую, чтобы выполнялось соотношение . Точки  называются узлами сетки. Предполагая, что решение  задачи (1) бесконечно дифференцируема в точке  , напишем разложение  в окрестности точки  :

       ,        (2)

где  . Если функция  имеет непрерывные производные по и  до порядка , то из (2) получим приближенную формулу

        .     (3)

        По этой формуле, зная значения , можно найти приближенно значение  решения задачи Коши (1) в точке  близкой к точке . Чем ближе точка к узлу , тем точнее получим значение решения  по формуле (3). Если же значение  больше радиуса сходимости ряда (2), то погрешность не стремится к нулю и предлагаемый метод неприменим.

 

 Перейти к содержанию темы

 

        Производные, входящие в правую часть разложения (3), можно найти, дифференцируя уравнение (1) требуемое число раз. Например, для первой и второй производных имеем

         

Аналогично можно найти и производные более высоких порядков.

        Однако, использование формулы (3) с большим значением   имеет ряд недостатков: во-первых, с ростом порядка производной выражение для нее может оказаться очень сложным; во-вторых, если  функция  известна, лишь приближенно или задано таблично, ее производные находятся с большой ошибкой. Поэтому не целесообразно на практике применять формулу (3) с большим значением .

 Перейти к содержанию темы

 

        Метод Эйлера. Метод Эйлера является простейшим численным методом решения задачи Коши и имеет невысокую точность, поэтому на практике его используют редко. Однако на его основе легче объяснить алгоритмы более эффективных методов и способы построения и исследования этих алгоритмов.

        Для построения метода Эйлера возьмем в формуле (3)  и . Получим

 (4)    

На основе этого приближенного равенства напишем точное равенство

                              .                                  (5)

Формально это равенство получается из (4), заменяя  на , приближенное равенство на точное. Если положить  при всех , то есть шаг интегрирования считать постоянным, то из (5) получим формулу

                                                 (6)

которая называется численным методом Эйлера.

         При , полагая в (6) , получим

                                  .

Поскольку правая часть этого равенства известна, то можно найти . Затем полагая , аналогично находим . Доказывается [1. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы, 1987, М., 600 с.], что если функция  непрерывна отрезке  и имеет непрерывную производную , то

                                   ,                                            (7)

где С- постоянная не зависящая от   , т.е. метод Эйлера (6) сходится с первым порядком сходимости. Поэтому при малом   можно положить .

        Существует несколько модификаций метода Эйлера. Например, метод Эйлера- Коши

            

метод  Эйлера- Маклорена

                      .

Обе эти модификации имеют второй порядок сходимости (см. [1]).

 Перейти к содержанию темы

 

           Методы Рунге-Кутта. Рассмотрим задачу Коши

                                                                (7)

        Рассмотрим одношаговые методы Рунге-Кутта построения задачи Коши (7). Сначала рассмотрим общий подход к выводу формул Рунге-Кутта, затем- реализацию этого подхода к построению формул второго порядка сходимости.

       Пусть   три набора чисел, где   - некоторое натуральное число. Положим

                         (8)

и

                                                   (9)

        Рассмотрим вопрос о выборе параметров . Обозначим  Если достаточно гладкая функция своих аргументов, то  и - гладкие функции параметра . Предположим, что  настолько гладкая функция, что существуют производные , а  выбраны так, что

                                                        (10)

Кроме того, предположим, что существует достаточно гладкая функция , для которой соответствующее значение . Согласно формуле Тейлора выполняется равенство

             ,       (11)

где  . Величина  называется погрешностью метода на шаге, а - порядком погрешности метода.

        Таким образом, параметры  определяют из системы (10) при фиксированном . Отметим, что система (10) должна иметь место для произвольной правой части  уравнения (1).

       Теперь рассмотрим вывод формул (8), (9) при значении  . В силу (9) имеем

             

где . Вычислим производные функции :

,

        Согласно исходному дифференциальному уравнению

     .

        Подставим в выражения   значение  и потребуем выполнение равенств (10) при всех гладких функциях . Пользуясь последними соотношениями, получим

       

        Соотношение  выполняется при всех гладких , если

                                        .                                       (12)

        Соотношение  выполняется при всех гладких , если

                                        

                                                                                (13)

Таким образом,  при всех гладких , если выполнены соотношения (12), (13). Задавая произвольно один из параметров, получим различные методы Рунге-Кутта с погрешностью второго порядка малости .

        Например, при  получаем , . Тогда в силу (3) имеем

  

Этой приближенной формуле соответствует расчетная формула

                     ,                              (14)

где  . Формула (14) называется формулой Эйлера-Коши.

       При ,  в силу (8) получаем расчетную формулу вида

                 .                     (15)

Формула (15) называется формулой Эйлера-Маклорена.

        В случае уравнения    согласно (11), имеем  независимо от значений . Отсюда следует, что нельзя построить формулы Рунге-Кутта со значениями  и .

        Для погрешности метода на шаге в силу (11) получим выражение

                    

        Во многих пакетах прикладных программ используются следующие формулы Рунге-Кутта третьего порядка точности

                                

и четвертого порядка точности

                                 

                             

                                    

которые можно построить указанным методом.

    Перейти к содержанию темы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  Вернуться к содержанию

 

 

 

 

 

 

2.    Многошаговые методы Адамса

 

Содержание темы

 

·       Экстраполяционный метод Адамса

·       Интерполяционный метод Адамса

·       Формулы Адамса

 

 

 

  Перейти к содержанию

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  Перейти к содержанию

 

 

 Перейти к содержанию темы

 

          Экстраполяционный метод Адамса. Рассмотрим задачу Коши

                                                              (16)

Пусть, каким либо образом найдены значения    и требуется найти приближенное решение задачи (16) в следующих точках  ,  . Приближенные значения решения задачи  , могут быть вычислены методом Рунге-Кутта либо Эйлера. Начало решения должно быть вычислено с большей точностью. Если для нахождения начала решения применяется метод Рунге-Кутта, то величина шага  для него нужно брать меньшую, чем для последующей схемы расчета.

       Расчетное правило экстраполяционного метода Адамса имеет вид

  , (17)    

где    - конечные разности -го порядка,

                            .

Для остаточного члена имеет место следующая оценка:

                                           

где

                                   .

       В экстраполяционном методе Адамса убывание абсолютных величин слагаемых происходит главным образом за счет убывания абсолютных величин конечных разностей. Этим в основном и руководствуются, выбирая  и : чем меньше возьмем шаг , тем ниже при постоянных требованиях к точности будет порядок  последней участвующей в вычислениях конечной разности и тем меньше слагаемых будет содержать правая часть формулы (17). Однако, уменьшив шаг, мы тем самым увеличиваем число узловых точек на данном отрезке, что дает возможность применять укороченную формулу большое число раз, а это, как правило, сопряжено с ростом погрешности. Обычно  и  стараются подобрать так, чтобы последняя конечная разность, участвующая в вычислениях, была практически постоянной в пределах принятой точности. Например, если третья конечная разность в пределах принятой точности практически постоянна, то правило (17) примет вид                      

                                   (18)

с локальной ошибкой дискретизации

                               .

Таким образом, метод Адамса (18) имеет четвертый порядок точности на интервале. Чтобы начать счет по схеме Адамса, необходимо знать решение в четырех начальных точках .

 Перейти к содержанию темы

 

        Интерполяционный метод Адамса. Рассмотрим интерполяционную формулу Адамса вида:

     (19)

где   

                                .

Для остаточного члена имеет место следующая оценка:

где 

.

        Использование вычислительной схемы интерполяционного метода Адамса связано со следующей особенностью. Так как в равенстве (19) величина  входит в правую часть, начиная со второго члена, то имеем уравнение для нахождения этой величины. В практике используют обычно такой прием: по формулам (17) экстраполяционного метода Адамса вычисляют , затем это значение применяют в правой части формулы (19) для нахождения  «коррекционного» значения. Затем это коррекционное значение можно снова уточнить по формуле (19), пока не добьются требуемой точности.

 Перейти к содержанию темы

 

 

Формулы Адамса

 

I. Экстраполяционные(явные) формулы

 

Одношаговая:

Двухшаговая:  

Трехшаговая:   

Четырехшаговая:

 

II. Интерполяционные(неявные) формулы

 

Одношаговая:

Двухшаговая:

Трехшаговая: 

Четырехшаговая:  Перейти к содержанию темы

 

  Перейти к содержанию

 

Задание 1

·       Варианты

·       План отчета по лабораторной работе

Найти приближенное решение задачи Коши на отрезке   для данного дифференциального уравнения (пункт а) варианта ) с заданными начальными условиями указанным в варианте одношаговым методом с точностью . Для этого составить алгоритм, выбрать шаг метода и составить соответствующую программу решения задачи на ЭВМ. Для контроля работы составленной программы сначала по этой программе найти приближенное решение задачи Коши пункта б) на том же отрезке  ( тестовая задача );  проверить верно ли оно найдено, находя точное решение этой задачи . Шаг метода выбрать так, чтобы  где порядок метода. Например, для метода Эйлера-Коши  поэтому  выбираем так, чтобы  Можно взять  

Выписать значения полученного решения в точках - шаг таблицы. Заполнить таблицу вида

Таблица результатов

                           

0.0

0.2

0.4

.  .  .

2.0

   б)

.  .  .

.  .  .

 а) 

.  .  .

         При заполнении таблицы в результатах для   и  сохранять по два десятичных знака. Значение  выписать с плавающей точкой с двумя значащими цифрами (например, ). По данным таблицы построить график решения задачи Коши пункта а) варианта. Сделать  выводы о поведении решения.

 

Варианты

 

пп

Дифференциальное уравнение

Начальные условия

Отрезок [a,b]

Численный метод

1

[0; 2]

Рунге-Кутта 4-го порядка точности

2

[1; 2]

Эйлера-Коши

3

[1;2,6]

Рунге- Кутта 3-го порядка

4

[0; 1]

Эйлера-Маклорена

5

[0; 1]

Рунге-Кутта 4-го порядка точности

6

                          

[1; 2,4]

Эйлера-Маклорена

7

         

[1; 2]

Эйлера-Коши Рунге-Кутта 3-го порядка точности

8

[0; 2]

Эйлера-Маклорена

 

9

[0; 1]

Эйлера-Коши

10

[0; 2,8]

Рунге-Кутта 3-го порядка точности

11

[0; 1,2]

Эйлера-Коши

12

[0; 2]

Рунге-Кутта 3-го порядка точности

13

 

Эйлера-Маклорена

 

14

[0;0,8]

Эйлера-Коши

15

[0; 1,2]

Рунге-Кутта 4-го порядка точности

16

[0, 1]

Эйлера-Маклорена

 

17

[0; 1,2]

Эйлера-Коши

18

[0; 2]

Рунге-Кутта 4-го порядка точности

19

[0; 2]

Рунге-Кутта 3-го порядка точности

20

[0; 2,4]

Эйлера-Коши

21

[0; 2]

Рунге-Кутта 4-го порядка точности

22

[0; 1]

Эйлера-Маклорена

 

23

[0; 2,8]

Эйлера-Коши

24

[1; 2,4]

Рунге-Кутта 3-го порядка точности

25

[0; 2]

Эйлера-Маклорена

 

 

Отчет по заданию 1 работы должен содержать

 

1. Условие задачи

2. Схема  алгоритма решения задачи.

3. Программа на ЭВМ, составленная по схеме алгоритма.

4. Таблица результатов вида указанного в задании.

5. График решения задачи Коши ( пункт а) варианта).

6.Выводы относительно поведения решения задачи Коши ( пункт а) варианта) на отрезке .

  Перейти к содержанию

 

Задание 2

 

·       Варианты

·       План отчета по лабораторной работе

           Решить задачу Коши указанным методом на отрезке [0;a] для данных значений параметра А. Шаг интегрирования взять равным h. Решение задачи Коши получить для указанных значений параметра A в данных точках xi   из отрезка [0;a]. Приближённые значения yi решения в точках xi, полученные явным k-шаговым методом Адамса, каждый раз уточнять неявным k-шаговым методом Адамса. Необходимые для начала вычислений по k-шаговым формулам Адамса k начальных значений  вычислить каким-либо одношаговым методом Рунге-Кутта. Составить таблицы вида:

 

  

А=0

 

xi

0

0.1

0.2

1.0

y(xi)

0

0.1263

0.2947

3.2678

 

A=1

xi

0

0.1

0.2

1.0

y(xi)

0

0.2015

0.4163

4.8762

 

и т.д.

         По данным этих таблиц построить графики  решений  для двух каких─либо значений параметра A. Сделать выводы относительно  зависимости решения от значений параметра A.

  Вернуться к заданию 2

Варианты к заданию 2

 

п/п

Задача Коши

Шаг h

Отрезок

[0;a]

Метод

Точки, в которых необходи-мо найти решение

Значения пара-

метра A

1

2

3

4

5

6

7

1.

0.01

[0;1]

Двухшаговый метод Адамса

(q=1)

A=0,

2.

,

0.01

[0;1]

Трёхшаговый метод Адамса (q=2)

A=0,1,2,

3,4

3.

0.05

[0;1]

Четырехшаго-

вый метод Адамса (q=3)

4

0.01

[0;0.4]

Четырехшаго-

вый метод Адамса (q=3)

A=-2,

-1,0,1,2

5

0.01

[0;0.5]

Четырехшаго

вый метод Адамса (q=3)

A=-2,

-1,0,1,2

6

0.01

[0;1]

Двухшаговый метод Адамса

(q=1)

A=1,2,3,4

7

0.01

[0;2]

Трёхшаговый метод Адамса

(q=2)

A=0,1,-2

8

 

 

 

 

0.05

[0;1]

Четырехшаго-

вый метод Адамса (q=3)

A=0,1,2,4

1

2

3

4

5

6

7

9

0.01

[0;0.5]

Четырехшаго-

вый метод Адамса (q=3)

A=0,1,2,4

10

0.01

[0;0.5]

Трёхшаговый метод Адамса

(q=2)

A=0,1,2

11

 

0.1

 

[0;2]

 

Двухшаговый метод Адамса

(q=1)

 

 

A=1,2,

4,5

 

12

0.01

[0;2]

Трёхшаговый метод Адамса

(q=2)

13

0.01

[0;1]

Двухшаговый метод Адамса

(q=1)

A=0,1,2,3

 

14

0.01

[0;1]

Четырехшаго-

вый метод Адамса (q=3)

15

0.01

[0;0.5]

Двухшаговый метод Адамса

(q=1)

16

0.01

[0;1]

Трёхшаговый метод Адамса

(q=2)

A=0,1,2,5

17

0.01

[0;1]

Четырехшаго-

вый метод Адамса (q=3)

A=0,2,5

         Вернуться к заданию 2

 

 

Отчет по заданию 2 работы должен содержать

 

1. Условие задачи

2. Схема  алгоритма решения задачи.

3. Программа на ЭВМ, составленная по схеме алгоритма.

4. Таблица результатов вида указанного в задании.

5. Графики решений для каких либо двух значений параметра А.

6.Выводы о зависимости решения от параметра А.

 

  Перейти к содержанию

 

ОБРАЗЕЦ ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ

 

Вариант 0

Задание 1

 

         Найти решение задачи Коши

                                                       (0.1)

одношаговым методом Рунге-Кутта 4-го порядка точности.

         Обозначая в уравнении , перейдем к задаче Коши для системы дифференциальных уравнений

                                

Эту задачу можно записать в векторной форме следующим образом

                                                                                  (0.2)

где

                               , 

             .

      Пусть известно значение вектора  в точке  ( в нашем случае это  и ). Укажем схему алгоритма, по которому пользуясь формулами (0.3), (0.4)  можно найти следующую точку  и приближенное значение вектора  (в нашем случае ).

Вернуться обратно

1.    Вводим - число уравнений в системе (в нашем случае их два, поэтому ), - шаг, - точность.

2.    Задаем правую часть системы в виде некоторой процедуры pr, в которой                      

           

3.    Считая   и вектор известным (например, известны начальные данные ), вычисляем с помощью процедуры pr правую часть системы при этих значениях  и . С ее помощью вычисляем вектор : , затем вычисляем  и вектор   и соответствующую им правую часть  с помощью процедуры pr. Тогда .

4.    Затем вычисляем вектор  . По значениям  и  с помощью процедуры pr вычисляем правую часть . Тогда . Затем вычисляем аргумент  и аргумент  . По этим данным с помощью процедуры pr вычисляем правую часть . Тогда . Наконец, вычисляем вектор . Это и будет приближенным значением решения в точке , т.е. .

Вернуться обратно

 

     По указанной схеме можно составить процедуру (на языке Паскаль) в которой по входным данным вычисляются выходные данные - следующие значения. Далее, считая  входными данными можно по этой процедуре вычислить следующие значения  и т.д. Таким образом, обращаясь к этой процедуре в цикле можно найти приближенное решение в точках  . В нашем случае сначала задаем начальные данные :

                        .                                  (0.3)

Затем обращаясь к процедуре , составленную по вышеуказанному алгоритму, в ней по входным данным (0.3) будут вычислены выходные данные . Если теперь еще раз обратится к процедуре  , считая полученные выходные данные  за входные данные, будут вычислены выходные данные  т.е . Таким образом, задав входные данные (0.3)  и обращаясь  в цикле  к процедуре

 получим последовательность  - значений узлов , приближенных значений решения  и приближенные значения производных решения . При каждом значении  их можно распечатать. В результате получим таблицу значений решения  (производные  можно не распечатывать, если нет необходимости их распечатывать).

        Аналогично составляются схемы алгоритма и для методов Рунге-Кутта второго порядка (Эйлера-Коши, Эйлера-Маклорена) и третьего порядка.

        Приводим программу на языке Паскаль для этих методов, составленную в соответствии с приведенной здесь схеме алгоритма. В нашем случае требуется решить данную задачу методом Рунге-Кутта 4-го порядка точности. Поэтому в головной программе, задав , обращаемся к процедуре  из описанных в программе процедур.

        Работу составленной программы предварительно проверяем на аналогичной тестовой задаче:

       

с решением  . Убедившись, что верно (с применяемой точностью) решена тестовая задача, по этой же программе, внося в нее соответствующие изменения, решаем задачу Коши своего варианта.

  Перейти к содержанию

 

 

 

 

 

Задание 2

       Найти решение задачи Коши

                                           (0.4)

четырехшаговым методом Адамса с шагом  при значениях параметра

        

Программа

Решения задачи Коши для обыкновенного дифференциального уравнения

 

 

ses crt; {$F+}

const

n=2;

type

  vect = array [1..n] of real;

            prc = procedure (x:real; y:vect; var f:vect);

Var

  y,u,f,f0,f1,f2,f3,f4,fn,fn1,fn2,fn3,fnp:vect;

 i,j,k:integer;

  h,x,x0:real;

{-----------------------------------------------------------}

procedure pr1(x:real; y:vect; var f:vect);

Begin

  f[1]:=y[2];

  f[2]:=3*y[2]-2*y[1]+2*x-3;

end;

procedure rgkem(var x:real; h:real; var y:vect; pr:prc);

var

  i:integer;

  k1,k2,k3,k4:vect;

Begin

  u:=y;

  pr(x,y,f);

  for i:=1 to n do k1[i]:=h*f[i] ;

  x:=x+h/2;

  for i:=1 to n do y[i]:=u[i]+k1[i]/2;

  pr(x,y,f);

  for i:=1 to n do k2[i]:=h*f[i] ;

  for i:=1 to n do

  y[i]:=u[i]+k2[i]; x:=x+h/2;

  end;

procedure rgkek(var x:real; h:real; var y:vect; pr:prc);

var

  i:integer;

  k1,k2,k3,k4:Vect;

Begin

  u:=y;

  pr(x,y,f);

  for i:=1 to n do k1[i]:=h*f[i] ;

  x:=x+h;

  for i:=1 to n do y[i]:=u[i]+k1[i];

  pr(x,y,f);

  for i:=1 to n do k2[i]:=h*f[i] ;

  for i:=1 to n do

  y[i]:=u[i]+(k1[i]+k2[i])/2;

  end;

procedure rgk3(var x:real; h:real; var y:vect; pr:prc);

var

  i:integer;

  k1,k2,k3,k4:Vect;

Begin

  u:=y;

  pr(x,y,f);

  for i:=1 to n do k1[i]:=h*f[i] ;

  x:=x+h/2;

  for i:=1 to n do y[i]:=u[i]+k1[i]/2;

  pr(x,y,f);

  for i:=1 to n do k2[i]:=h*f[i];

  x:=x+h/2;

  for i:=1 to n do y[i]:=u[i]-k1[i]+2*k2[i];

  pr(x,y,f);

  for i:=1 to n do k3[i]:=h*f[i];

  y[i]:=u[i]+(k1[i]+4*k2[i]+k3[i])/6;

  end;

procedure rgk4(var x:real; h:real; var y:vect; pr:prc);

var

  i:integer;

  k1,k2,k3,k4:Vect;

Begin

  u:=y;

  pr(x,y,f);

  for i:=1 to n do k1[i]:=h*f[i] ;

  x:=x+h/2;

  for i:=1 to n do y[i]:=u[i]+k1[i]/2;

  pr(x,y,f);

  for i:=1 to n do k2[i]:=h*f[i];

  for i:=1 to n do y[i]:=u[i]+k2[i]/2;

  pr(x,y,f);

  for i:=1 to n do k3[i]:=h*f[i] ;

  x:=x+h/2;

  for i:=1 to n do y[i]:=u[i]+k3[i];

  pr(x,y,f);

  for i:=1 to n do k4[i]:=h*f[i];

  for i:=1 to n do

  y[i]:=u[i]+(k1[i]+2*(k2[i]+k3[i])+k4[i])/6;

 end;

   procedure adext2(var x:real; h:real; fn, fn1:vect; var y:vect; pr:prc);

    begin

      u:=y;

       for i:=1 to n do y[i]:=u[i]+h/2*(3*fn[i]-fn1[i]); x:=x+h;

    end;

  procedure adext3(var x:real; h:real; fn, fn1,fn2:vect; var y:vect; pr:prc);

     begin

      u:=y;

       for i:=1 to n do y[i]:=u[i]+h/12*(23*fn[i]-16*fn1[i]+5*fn2[i]); x:=x+h;

    end;

 procedure adext4(var x:real; h:real; fn, fn1,fn2,fn3:vect; var y:vect; pr:prc);

     begin

      u:=y;

     for i:=1 to n do y[i]:=u[i]+h/24*(55*fn[i]-59*fn1[i]+37*fn2[i]-9*fn3[i]);

       x:=x+h

    end;

 

 procedure adint2(x:real; h:real;fnp, fn,fn1:vect;  y:vect; pr:prc);

    begin

      u:=y;

       for i:=1 to n do y[i]:=u[i]+h/12*(5*fnp[i]+8*fn[i]-fn1[i]);

    end;

   procedure adint3(x:real; h:real; fnp, fn,fn1,fn2:vect; y:vect; pr:prc);

    begin

      u:=y;

       for i:=1 to n do y[i]:=u[i]+h/24*(9*fnp[i]+19*fn[i]-5*fn1[i]+fn2[i]);

    end;

  procedure adint4(x:real; h:real; fnp, fn,fn1,fn2,fn3:vect; y:vect; pr:prc);

    begin

      u:=y;

       for i:=1 to n do y[i]:=u[i]+h/720*(251*fnp[i]+646*fn[i]-

       264*fn1[i]+106*fn2[i]-19*fn3[i]);

    end;

  {-----------------------------------------------------------}

 begin

  clrscr;

  x:=0; y[1]:=0; y[2]:=4;

  h:=0.1;

   { writeln;

   writeln('vtoroi poryadok');

  writeln('x= ',x:3:1,'   y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

  for k:=1 to 20 do

  begin

    rgkem(x,h,y,pr1);

    if k=19 then   pr1(x,y,fn1);

    if k=20 then     pr1(x,y,fn);

    if k mod 1=0 then

    writeln('x= ',x:4:2,'  y=',y[1]:6:3,'  yt=',3*(exp(2*x-exp(x))+x:6:3);

  end;

     readkey;

     for k:=1 to 100 do

  begin

     adext2(x,h,fn,fn1,y,pr1); pr1(x,y,fnp);

     if k mod 10=0 then

    writeln('xe=',x:4:2,'  y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

       adint2(x,h,fnp,fn,fn1,y,pr1);

          if k mod 10=0 then

     writeln('xi=',x:4:2,'  y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

     fn1:=fn;fn:=fnp;

    end;

   readkey;

   writeln('tretii poryadok');

    x:=0; y[1]:=0; y[2]:=1;

   writeln('x= ',x:4:2,'   y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

   for k:=1 to 100 do

  begin

    rgk3(x,h,y,pr1);

    if k=98 then   pr1(x,y,fn2);

    if k=99 then   pr1(x,y,fn1);

    if k=100 then     pr1(x,y,fn);

    if k mod 10=0 then

    writeln('x= ',x:4:2,'   y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

  end;

     readkey;

     for k:=1 to 100 do

  begin

     adext3(x,h,fn,fn1,fn2,y,pr1); pr1(x,y,fnp);

     if k mod 10=0 then

  writeln('xe=',x:4:2,'   y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

       adint3(x,h,fnp,fn,fn1,fn2, y,pr1);

          if k mod 10=0 then

   writeln('xi=',x:4:2,'   y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

      fn2:=fn1; fn1:=fn; fn:=fnp;

    end;

   readkey;}

 

    writeln;

   writeln('chetvertii poryadok');  h:=0.1;

    x:=0; y[1]:=0; y[2]:=4;

   writeln('x= ',x:4:2,'   y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

   for k:=1 to 20 do

  begin

    rgk4(x,h,y,pr1);

    if k=17 then   pr1(x,y,fn3);

    if k=18 then   pr1(x,y,fn2);

    if k=19 then   pr1(x,y,fn1);

    if k=20 then     pr1(x,y,fn);

    if k mod 1=0 then

    writeln('x= ',x:4:2,'   y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

  end;

     readkey;

     for k:=1 to 10 do

  begin

     adext4(x,h,fn,fn1,fn2,fn3,y,pr1); pr1(x,y,fnp);

     if k mod 1=0 then

   writeln('xe=',x:4:2,'   y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

       adint4(x,h,fnp,fn,fn1,fn2,fn3, y,pr1);

          if k mod 1=0 then

    writeln('xi=',x:4:2,'   y=',y[1]:6:3,'  yt=', 3*(exp(2*x-exp(x))+x:6:3);

     fn3:=fn2; fn2:=fn1;fn1:=fn; fn:=fnp;

    end;

   readkey;

  end.

Таблица результатов задания 1

   

0.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

1.6

1.8

2.0

   б)

0.00

1.01

2.60

5.09

8.98

15.01

24.31

38.57

60.34

93.44

144.62

0.00

1.011

2.60

5.09

8.98

15.01

24.31

38.57

60.34

93.45

143.63

                                      

  а) 

0.00

0.84

1.75

2.74

3.78

4.89

6.09

7.38

8.79

10.34

12.06

 

 

 

Рис. 1. График решения  задачи (0.1)

 

 

   

0.00

0.10

0.20

0.30

0.40

 

0.000

0.405

0.816

1.224

1.613

 

 

   

0.00

0.10

0.20

0.30

0.40

 

0.000

0.400

0.798

1.190

1.568

 

 

   

0.00

0.10

0.20

0.30

0.40

 

0.000

0.395

0.780

1.155

1.520

 

 

   

0.00

0.10

0.20

0.30

0.40

 

0.000

0.390

0.762

1.119

1.468

 

 

   

0.00

0.10

0.20

0.30

0.40

 

0.000

0.385

0.744

1.083

1.414

 

 

 

 

 

 

 

         Рис. 2. График решения задачи (0.4) при .

 

  Перейти к содержанию

 

  Перейти к содержанию

 

ЛИТЕРАТУРА

 

1. В.И. Крылов, В.В. Бобков, П.И. Монастырный. Вычислительные методы, т.2. -М.: Наука, 1977.-400 с.

2. Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков. Численные методы. -М.: Наука, 1987. - 600 с.