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

Конец


 

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

32805. Рационализм в философии нового времени 17.35 KB
  Эти две субстанции пересекаются и активно взаимодействуют однако их взаимосвязь является лишь механической. В человеке материальная и духовная субстанции проявляются как тело и душа. В понятии единой субстанции т. Спиноза называет следующие свойства единой субстанции: независимое ни от чего существование; вечность; бесконечность; является внутренней причиной самой себя и всего сущего.
32806. Субъективный идеализм в философии Н.В. (Дж.Беркли, Д.Юм) 14.1 KB
  Джордж Беркли 1685 1753 гг. Беркли внес весомый вклад в теорию познания четко поставив вопрос о соотношении объективного и субъективного в ощущениях об объективности причинности и о видах существования. Беркли утверждал что мир не существует независимо от человека а представляет собой комплекс ощущений и восприятий. Философия Беркли основывается на следующих основных принципах: 1 существовать значит быть воспринимаемым; 2 я не в состоянии помыслить ощущаемые вещи или предмет независимо от их ощущения и восприятия; 3 мы никогда не...
32807. Философия французского Посвящения 17.75 KB
  Философия Просвещения опиралась на достижения наук: биологии физики медицины которые стали естественнонаучным основанием раскрытия сущности и природы человека. Просветители развивали материалистические взгляды на природу и человека. Дидро уподоблял человека инструменту наделенному чувствительностью и памятью а Ламетри проводил аналогию между человеком и машиной. Однако французские материалисты обращали внимание и на роль социальнокультурных факторов появления человека уделяли внимание роли языка как средства общения и познания мира.
32808. Особенности становления и основные черты немецкой классической философии 11.99 KB
  Немецкая философия конца ХVIII первой трети ХIХ веков представлена именами Канта Фихте Шеллинга Гегеля Фейербаха и представляет собой важный этап в развитии мировой философской мысли. Произведения Шиллера и Гете философские труды Канта и Гегеля отразили противоречивость эпохи. Маркс назвал философию Канта теорией буржуазной революции.
32809. Философия И. Канта: субъективный идеализм и агностицизм 14.27 KB
  Канта: субъективный идеализм и агностицизм. Основателем немецкой классической философии считается Иммануил Кант 1724 1804 гг. Основное содержание своей философии Кант изложил в виде следующих вопросов: Что я могу знатьЧто я должен делатьНа что я могу надеятьсяЧто есть человек. В творчестве Канта принято выделять 2 периода: 1 докритический до 70х гг.
32810. Философия Гегеля: абсолютный идеализм и диалектика 14.28 KB
  Диалектика в творчестве Гегеля это теория развития всего сущего и метод познания действительности. В ходе своего саморазвития Абсолютная идея проходит ряд ступеней развиваясь от простого к сложному от абстрактного к конкретному. Высшая ступень развития абсолютный дух. Причем философия означает завершение итог развития Абсолютной идеи: по определению Гегеля философия это духовная квинтэссенция эпохи самосознание эпохи.
32811. Философия Л. Фейербаха: антропологический материализм и критика христианства 15.47 KB
  Основным предметом философского анализа Фейербах считал проблему человека и рассматривал ее с материалистических позиций. Фейербах рассматривает человека как природное живое существо. Философ подчеркивал тесное единство человека и окружающей его природы. Посредством человека природа познает саму себя.
32812. Условия возникновения и основные положения маркистской философии 15.99 KB
  Возникновение марксизма явилось закономерным результатом общественноисторического прогресса а также развития научной и философской мысли. это период развития капиталистических отношений в Западной Европе. В этих условиях Маркс и Энгельс пришли к выводу о необходимости научного исследования законов общественного развития и создания на их основе теории указывающей пути и средства освободительной борьбы обосновывающей неизбежность перехода от капитализма к новому этапу развития общества. Дарвина явилась естественнонаучным основанием идеи...
32813. Этапы развития русской философии, её основные черты 15.04 KB
  Этапы развития русской философии её основные черты. Основные этапы развития русской философии совпадают с этапами развития истории России. развитие русской философии неразрывно связано с социальнополитическими событиями с особенностями социальноисторического процесса в России. Этапы развития русской философии.