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

Конец


 

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

56139. Церемонія нагородження номінантів шкільної премії «Сова» 170.5 KB
  Ведучий: Добрий день вельмишановні гості Ми раді щиро вітати вас на нашому святі Ведуча: Коли настає весна і на вулицях з’являються перші весняні квіти в кожному домі в селі і в місті відзначається велике свято -– Міжнародний день -– 8 березня.
56140. Об организации математического развития младших школьников как одного из звеньев модернизации начальной школы 288.5 KB
  Самоанализ и анализ урока математики 10. Анализ урока информатики курс А. Анализ урока с позиций развивающего обучения УМК Перспективная начальная школа Об организации математического развития младших школьников как одного из звеньев модернизации начальной школы Математика один из сложных но и один из любимых предметов учащихся начальных классов.; сосредоточить в классе разнообразные материалы для счета и манипулирования совокупности предметов которые могут демонстрировать отношения между элементами множеств...
56141. СОВРЕМЕННЫЙ УРОК РУССКОГО ЯЗЫКА В НАЧАЛЬНОЙ ШКОЛЕ 310.5 KB
  Целевая установка учителя на безошибочное письмо. Реализуется последовательной работой по предупреждению возможных ошибок учащихся на всех этапах обучения: при устном анализе текста подлежащего записи в процессе письма и после написания работы.
56143. СОВРЕМЕННЫЙ УРОК РУССКОГО ЯЗЫКА В НАЧАЛЬНОЙ ШКОЛЕ 128.5 KB
  Существует несколько классификаций традиционных форм урока. Опираясь на устоявшиеся классификации уроков используя привычные этапы традиционных уроков учитель при коммуникативно деятельностном подходе к обучению меняет ценностные ориентации их структурных компонентов...
56144. Соціокультурний компонент змісту навчання як засіб підвищення мотивації студентів у процесі формування професійної компетенції майбутнього вчителя іноземної мови початкових класів 68.5 KB
  Одним із основних пріоритетів у процесі навчання іноземної мови у вищому навчальному закладі має стати розвиток соціокультурної компетенції основою якої є створення мотивації та інтересу до країнознавчої тематики...
56145. Передумови та проблеми застосування новітніх інформаційних технологій при викладанні соціальних дисциплін 2.78 MB
  Нові методики їх викладання повинні враховувати сучасні вимоги до застосування інформаційних технологій. У навчальних закладах компютерні технології повинні привести до поступового формування нового покоління, покоління техноінформаційного суспільства...
56146. Виховання соціальної компетентності учнів початкової школи 133.5 KB
  Сьогодні в умовах величезних змін у соціальному та політичному житті України постала проблема радикальної перебудови у сфері виховання мета якої формувати людину забезпечувати прогрес людського суспільства.
56147. РОЛЬ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ НАВЧАННЯ У ФОРМУВАННІ ПРОФЕСІЙНО-ДІЛОВИХ ЯКОСТЕЙ СПЕЦІАЛІСТА 131 KB
  Курс фізики за своїм змістом політехнічний, має професійну спрямованість. Фізика слугує теоретичною базою більшості галузей техніки, вона має широке та різноманітне застосування в людській діяльності.