50063

Численное решение обыкновенных дифференциальных уравнений

Лабораторная работа

Математика и математический анализ

При выполнении данной лабораторной работы были получены теоретические и практические навыки в приближенном решении дифференциальных уравнений первого порядка с начальным условием методами Эйлера, Эйлера (уточнённый), Рунге-Кутты, Адамса, Милна. Сравнивая полученные результаты вычислений с истинным значением можно сделать вывод...

Русский

2014-01-15

957.5 KB

8 чел.

СОДЕРЖАНИЕ

[1] СОДЕРЖАНИЕ

[2]
Постановка задачи

[3]
Численное решение

[3.1] Метод Эйлера

[3.2] Уточненный метод Эйлера

[3.3] Метод Рунге-Кутты

[3.4]
Метод Адамса

[3.5] Метод Милна

[4] Програмная реализация

[4.1] Описание основных процедур и функций

[4.2]
Блок-схемы основных процедур

[4.3] Текст программы

[5]
Решение в среде Mathcad

[6]

Результаты вычислений

[7]
Вывод

[8] Кафедра: «Техническая кибернетика»

[8.0.1]  

  1.  
    Постановка задачи

Необходимо решить дифференциальное уравнение   с начальным условием y(0) = 1 методом:

  •  Эйлера,
  •  уточнённым  Эйлера,
  •  Рунге-Кутты (4-го порядка),
  •  Адамса,
  •  Милна,

на интервале [0;0,5].

Точное решение данного дифференциального уравнения представляется в следующем виде:

  1.  
    Численное решение
    1.  Метод Эйлера 

Вычисления производятся по формулам: ,  где h-шаг, f(x,y)-заданная функция; h = 0,05.

Вычисления представим в виде таблицы:

i

xi

0

0,0000

1,0000

0,0000

0,0000

1

0,0500

1,0000

-0,0526

-0,0026

2

0,1000

0,9974

-0,1144

-0,0057

3

0,1500

0,9916

-0,1881

-0,0094

4

0,2000

0,9822

-0,2784

-0,0139

5

0,2500

0,9683

-0,3921

-0,0196

6

0,3000

0,9487

-0,5415

-0,0271

7

0,3500

0,9216

-0,7493

-0,0375

8

0,4000

0,8842

-1,0654

-0,0533

9

0,4500

0,8309

-1,6253

-0,0813

10

0,5000

0,7496

-3,0058

-0,1503

Значение, вычисленное данным методом: y(0,5) = 0,7496, а точно вычисленное  y(0,5) = 0,5000.

  1.  Уточненный метод Эйлера

Вычисления производятся по формулам: 

 где

h = 0,05; x1/2 = 0,025;  y1/2 = 1;

Вычисления представим в виде таблицы:

i

xi

0

0,0000

1,0000

1

0,0500

0,9987

-0,0256

-0,0013

2

0,1000

0,9974

-0,1143

-0,0057

3

0,1500

0,9873

-0,1943

-0,0097

4

0,2000

0,9780

-0,2853

-0,0143

5

0,2500

0,9588

-0,4109

-0,0205

6

0,3000

0,9369

-0,5701

-0,0285

7

0,3500

0,9017

-0,8124

-0,0406

8

0,4000

0,8557

-1,1946

-0,0597

9

0,4500

0,7823

-2,0094

-0,1005

10

0,5000

0,6547

Значение, вычисленное данным методом: y(0,5) = 0,6547, а точно вычисленное   y(0,5) = 0,5000.

  1.  Метод Рунге-Кутты

Вычисления производятся по формулам: 

 ,где

 

h = 0,05.

Вычисления представим в виде таблицы:

xi

φ0

φ1 

φ2 

φ3

0

0,0000

1,0000

0,0000

-0,0013

-0,0013

-0,0027

-0,0013

1

0,0500

0,9987

-0,0027

-0,0042

-0,0043

-0,0059

-0,0043

2

0,1000

0,9944

-0,0059

-0,0077

-0,0078

-0,0098

-0,0078

3

0,1500

0,9867

-0,0098

-0,0120

-0,0121

-0,0145

-0,0121

4

0,2000

0,9746

-0,0145

-0,0174

-0,0175

-0,0207

-0,0175

5

0,2500

0,9571

-0,0207

-0,0244

-0,0246

-0,0291

-0,0247

6

0,3000

0,9325

-0,0291

-0,0343

-0,0347

-0,0413

-0,0347

7

0,3500

0,8977

-0,0413

-0,0496

-0,0504

-0,0618

-0,0505

8

0,4000

0,8472

-0,0618

-0,0778

-0,0804

-0,1078

-0,0810

9

0,4500

0,7662

-0,1081

-0,1609

-0,1872

-0,5832

-0,2312

10

0,5000

0,5350

-1,3804

0,1235

-0,6473

0,1255

-0,3837

Значение, вычисленное данным методом: y(0,5) = 0,535, а точно вычисленное y(0,5) = 0,5000.

  1.  
    Метод Адамса

Вычисления производятся по формулам: 

,    

где    

Вычисления представим в виде таблицы:

xi 

2

3

4

5

0

0,0000

1,0000

0,0000

-0,0027

1

0,0500

0,9987

-0,0027

-0,0005

-0,0032

-0,0002

2

0,1000

0,9944

-0,0059

-0,0007

-0,0001

-0,0039

-0,0003

-0,000034

3

0,1500

0,9867

-0,0098

-0,0009

-0,0002

-0,0048

-0,0004

-0,000216

4

0,2000

0,9746

-0,0145

-0,0014

-0,0004

-0,0062

-0,0008

-0,000518

5

0,2500

0,9571

-0,0207

-0,0022

-0,0009

-0,0083

-0,0017

-0,001735

6

0,3000

0,9325

-0,0291

-0,0039

-0,0026

-0,0122

-0,0043

-0,009350

7

0,3500

0,8979

-0,0413

-0,0082

-0,0120

-0,0204

-0,0163

-0,173723

8

0,4000

0,8478

-0,0617

-0,0245

-0,1857

-0,0449

-0,2020

9

0,4500

0,7694

-0,1065

-0,2265

-0,2713

10

0,5000

0,6169

-0,3779

Значение, вычисленное данным методом: y(0,5) = 0,6169, а точно вычисленное y(0,5) = 0,5000.

  1.  Метод Милна

Вычисления производятся по формулам:

Формула прогноза:

Формула коррекции:    

Определение начального отрезка y1, y2, y3 произведем по формуле Рунге-Кутта 4-го порядка точности.

y1=y(0,5)=0,9987,      y2=y(0,1)= 0,9944,      y3=y(0,15)= 0,9867;

  Вспомогательная таблица:

xi

yпр

y'пр

yкор

y'кор

0,0000

1,0000

0,0000

1,0000

0,0000

0,0500

0,9987

-0,0541

0,9987

-0,0541

0,1000

0,9944

-0,1181

0,9944

-0,1180

0,1500

0,9867

-0,1952

0,9867

-0,1952

0,2000

0,9746

-0,2909

0,9746

-0,2910

0,2500

0,9572

-0,4141

0,9571

-0,4142

0,3000

0,9326

-0,5809

0,9324

-0,5812

0,3500

0,8981

-0,8246

0,8977

-0,8258

0,4000

0,8482

-1,2311

0,8472

-1,2362

0,4500

0,7706

-2,1196

0,7662

-2,1624

0,5000

0,6221

-7,1915

0,5626

-14,9816

Значение, вычисленное данным методом: y(0,5) = 0,5626, а точно вычисленное y(0,5) = 0,5000.


  1.  Програмная реализация
    1.  Описание основных процедур и функций

      - Procedure Eiler(h, Xo, Xmax, Yo :real; var StringGrid_data: TStringGrid);

         Вычисляются значения точек функции, являющейся решением ОДУ, по методу Эйлера. На выходе получаются массивы чисел типа real, записанные в StringGrid_data.

     - Procedure RK4(h, Xo, Xmax, Yo :real; var StringGrid_data: TStringGrid); Вычисляются значения точек функции, являющейся решением ОДУ, по методу Рунге-Кутты 4 порядка. На выходе получаются массивы чисел типа real, записанные в StringGrid_data.

  1.  
    Блок-схемы основных процедур

Метод Эйлера      Метод Рунге-Кутты 4 порядка


Приложение 1

Текст программы

unit Main_unit;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, ExtCtrls, Grids, pngimage;

type

 TForm_lab6 = class(TForm)

   Image_DE: TImage;

   But_calc: TButton;

   StringGrid_data: TStringGrid;

   Edit_Xo: TEdit;

   Edit_Xmax: TEdit;

   Label_Xo: TLabel;

   Label_Xmax: TLabel;

   method_choice: TComboBox;

   Label_DE: TLabel;

   Label_method: TLabel;

   Label_Yo: TLabel;

   Edit_Yo: TEdit;

   procedure But_calcClick(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form_lab6: TForm_lab6;

implementation

{$R *.dfm}

procedure Eiler(h, Xo, Xmax, Yo :real; var StringGrid_data: TStringGrid);

var

 yi_1,y1,y2,x,y,dydx,dy : real;

 i:integer;

begin

 StringGrid_data.Visible:=true;

 StringGrid_data.Cells[0,0]:='     n  ';

 StringGrid_data.Cells[1,0]:='     x  ';

 StringGrid_data.Cells[2,0]:='     y  ';

 StringGrid_data.Cells[3,0]:='     dy/dx  ';

 StringGrid_data.Cells[4,0]:='     dy ';

 for i:= 0 to 10 do

   begin

     StringGrid_data.Cells[0,i+1]:=inttostr(i);

     StringGrid_data.Cells[1,i+1]:=FloatToStr(Xo+h*i);

   end;

 StringGrid_data.Cells[2,1]:='1';

 for i:= 2 to 11 do

   begin

     yi_1:=strtofloat(StringGrid_data.Cells[2,i-1]);

     x:= strtofloat(StringGrid_data.Cells[1,i-1]);

     y:= strtofloat(StringGrid_data.Cells[2,i-1]);

     StringGrid_data.Cells[2,i]:=floattostr(Yo+h*(1/(x-y)+1));

     y1:=strtofloat(StringGrid_data.Cells[2,i-1]);

     y2:=strtofloat(StringGrid_data.Cells[2,i]);

     dy:=y2-y1;

     StringGrid_data.Cells[4,i-1]:=floattostr(dy);

   end;

 for i:= 1 to 11 do

   begin

     y:=strtofloat(StringGrid_data.Cells[2,i]);

     x:= strtofloat(StringGrid_data.Cells[1,i]);

     StringGrid_data.Cells[3,i]:=floattostr(1/(x-y)+1);

   end;

end;

procedure RK4(h, Xo, Xmax, Yo :real; var StringGrid_data: TStringGrid);

var

 f0,f1,f2,f3, Xi,Yi : real;

 Xmas,Ymas: array [1..10] of real;

 yi_1,y1,y2,x,y,dy : real;

 i:integer;

begin

 StringGrid_data.Visible:=true;

 StringGrid_data.Cells[0,0]:='     n  ';

 StringGrid_data.Cells[1,0]:='     x  ';

 StringGrid_data.Cells[2,0]:='     y  ';

 StringGrid_data.Cells[3,0]:='     f0  ';

 StringGrid_data.Cells[4,0]:='     f1  ';

 StringGrid_data.Cells[5,0]:='     f2  ';

 StringGrid_data.Cells[6,0]:='     f3  ';

 StringGrid_data.Cells[7,0]:='     dy ';

 for i:= 0 to 10 do

   begin

     StringGrid_data.Cells[0,i+1]:=inttostr(i);

     StringGrid_data.Cells[1,i+1]:=FloatToStr(Xo+h*i);

   end;

 StringGrid_data.Cells[2,1]:=FloatToStr(Yo);

 for i := 0 to 10 do

 begin

   Xi:= StrToFloat(StringGrid_data.Cells[1,i+1]);

   Yi:= StrToFloat(StringGrid_data.Cells[2,i+1]);

   f0:= h*(1/(Xi-Yi)+1);

   f1:=h*(1/((Xi+0.5*h)-(Yi+0.5*f0))+1);

   f2:=h*(1/((Xi+0.5*h)-(Yi+0.5*f1))+1);

   f3:=h*(1/((Xi+h)-(Yi+f2))+1);

   dy:=1/6*(f0+2*f1+2*f2+f3);

   StringGrid_data.Cells[2,i+2]:=floattostr(Yi+dy);

   StringGrid_data.Cells[3,i+1]:=floattostr(f0);

   StringGrid_data.Cells[4,i+1]:=floattostr(f1);

   StringGrid_data.Cells[5,i+1]:=floattostr(f2);

   StringGrid_data.Cells[6,i+1]:=floattostr(f3);

   StringGrid_data.Cells[7,i+1]:=floattostr(dy);

 end;

end;

procedure TForm_lab6.But_calcClick(Sender: TObject);

var

 Xo, Xmax, Yo: real;

 yi_1,y1,y2,x,y,dydx,dy : real;

 i:integer;

 h : real;

begin

 Xo:=Strtofloat(Edit_Xo.Text);

 Xmax:=Strtofloat(Edit_Xmax.Text);

 h:=(Xmax-Xo)/10;

 Yo:=Strtofloat(Edit_Yo.Text);

 if method_choice.Text='Эйлера' then

   Eiler(h,Xo,Xmax,Yo,StringGrid_data)

   else

   if method_choice.Text='Рунге-Кутты' then

     RK4(h,Xo,Xmax,Yo,StringGrid_data) end; end.

  1.  
    Решение в среде Mathcad
  2.  

    Результаты вычислений

Метод

(Yi)

Xi

Метод Эйлера

Уточненный метод Эйлера

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

Метод Адамса

Метод Милна

Точное решение

0,0000

1,0000

1,0000

1,0000

1,0000

1,0000

1,0000

0,0500

1,0000

0,9987

0,9987

0,9987

0,9987

0,9987

0,1000

0,9974

0,9974

0,9944

0,9944

0,9944

0,9944

0,1500

0,9916

0,9873

0,9867

0,9867

0,9867

0,9867

0,2000

0,9822

0,9780

0,9746

0,9746

0,9746

0,9746

0,2500

0,9683

0,9588

0,9571

0,9571

0,9571

0,9571

0,3000

0,9487

0,9369

0,9325

0,9325

0,9324

0,9325

0,3500

0,9216

0,9017

0,8977

0,8979

0,8977

0,8977

0,4000

0,8842

0,8557

0,8472

0,8478

0,8472

0,8472

0,4500

0,8309

0,7823

0,7662

0,7694

0,7662

0,7662

0,5000

0,7496

0,6547

0,5350

0,6169

0,5626

0,5000


Вывод

При выполнении данной лабораторной работы были получены теоретические и практические навыки в приближенном решении дифференциальных уравнений первого порядка с начальным условием методами Эйлера, Эйлера (уточнённый), Рунге-Кутты, Адамса, Милна. Сравнивая полученные результаты вычислений с истинным значением можно сделать вывод, что наибольшей точностью из всех рассмотренных методов для данного дифференциального уравнения обладает метод Рунге-Кутты 4-го порядка.

 


Министерство образования и науки РФ

Федеральное Государственное Бюджетное образовательное

учреждение высшего  
пр
офессионального образования

«Белгородский Государственный Технологический Университет им. В.Г. Шухова»
(БГТУ им. В.Г. Шухова)

ИИТУС

Кафедра: «Техническая кибернетика»

Лабораторная работа №6

дисциплина: «Численные методы и оптимизация»

тема:  «Численное решение обыкновенных дифференциальных

уравнений»

Вариант 1

Выполнил:
студент группы АП-21

Андрианов А.Ю.

Принял:

ст. препод. кафедры ТК
Рыбин И.А.

Белгород 2013

  1.  

Да

Нет

ачало

x0 ,y0, h, n

x[0]=Xo

y[0]=Yo

i=1

i>=n

y[i]=y[i]+h*f(x,y)

x[i]=x[i]+h

i=i+1

Конец


 

А также другие работы, которые могут Вас заинтересовать

34552. Развитие жанра соц. романа в творчестве Д. Стейнбека 18.54 KB
  Размыкает рамки семьи. Семьи несут в себе боль страдания и надежды обездоленных и незащищенных простых арендаторов. Главой семьи Джоудов ее душой была мать одна из самых больших творческих удач писателя. Ма единственный человек из всей семьи кто сохраняет ясность мысли и мужество перед лицом тяжких испытаний.
34553. Тема американского мечтателя в тв-ве Фицджеральда 17.15 KB
  Великий Гэтсби. Для Гэтсби деньги не цель а средство. Низкий уровень развития самосознания Гэтсби. Он расследует подноготную Гэтсби и в момент когда увлечение Дейзи достигает апогея Том разоблачает соперника и Дейзи в смятении сбивает любовницу мужа.
34554. Эволюция героя в творчестве Хэмингуэя 22.08 KB
  Сантьяго рассуждает о смысле человеческой жизни. Сантьяго любит все живое любит природу. Исследователи любят говорить о том что Сантьяго не признает себя побежденным. Сантьяго глубже связан со всем этим.
34555. Сквозной сюжет Фолкнера об американском юге. Особенности их сюжетно-повествовательной организации 21.77 KB
  Специфичность в том что все особенности частности той жизни и жанры которые берет Фолкнер для читателя вбирают в себя то что для Фолкнера было частью человечества. Фолкнера интересует судьба Американского юга. Сама композиция произведений Фолкнера отличается от композиций Джойса.
34556. О Нил основоположник американской национальной драмы. Трагедия «Страсти под вязами» 16.7 KB
  Как художник О Нил сложился в атмосфере ширившегося в начале 20 в. Именовавший себя анархистом О Нил отошел затем от политического движения но крайне негативное отношение к государству как орудию подавления личности и буржуазному обществу которое презрев духовные ценности обольстилось ценностями материальными сохранял всю жизнь. Выступив в двойной роли родоначальника и реформатора отечественной драмы О Нил не замкнулся в рамках чистого искусства для задуманных им преобразований такой масштаб был тесен.
34557. Основные этапы и общие тенденции развития литературы Зап.Европы и Америки после ВМВ 18.09 KB
  Так формируется ситуация постмодернизма. С точки зрения постмодернизма модернизм характеризуется стремлением познать начало начал. Отличительная черта постмодернизма – концептуальность. Характерные черты постмодернизма 1интертекстуальность 2 многоуровневая организация текста 3неопределенность культ неясностей ошибок пропусков фрагментарность и принцип монтажа принцип ризомы 4жанровый и стилевой синкретизм соединение нерасчлененность различных видов культурного творчества 5театральность работа на публику использование...
34558. Молодежная проблематика в современной литературе (Д. Селинджер, Д. Осборн, Р. Мерль и др.) 18.16 KB
  стал неоднозанчный образ главного героя – Холдена Колфилда. Возраст героя выбран С. В образе героя причудливо переплетаются жизненная мудрость и инфантилизм. Окружающую действительность он воспринимает через соотнесение с идеалом которым для героя является свобода.
34559. Проза французского Сопротивления 19.28 KB
  Арагона сбки Нож в сердце 1941 Глаза Эльзы 1942 Паноптикум 1943 Французская заря 1945 в стихах других поэтовкоммунистов Л. Арагон Ф. За порчу сукна штраф 200 франков 1945 Арагона К. Луи Арагон 18971982 начинает свою литературную деятельность в 1917 году а после возвращения с фронта примыкает к дадаистам сборник стихов Фейерверк 1920.
34560. Экзистенциализм во французской литературе. Его влияние на литературный процесс. Спор Сартра и Камю 15.46 KB
  Спор Сартра и Камю. Хотите философствовать пишите романы рекомендовал соотечественникам Альбер Камю. Спор Камю с Сартром не менее важен. В отличие от Сартра изображающего человеческую сущность чистой возможностью Камю считает что бытие человека изначально определено человеческой природой и содержит в себе набор возможностей ограничивающих человеческую свободу.