Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Розв’язування звичайних диференціальних рівнянь і систем методами Ойлера та Рунге-Кутта

Автор:   •  Май 23, 2023  •  Лабораторная работа  •  1,006 Слов (5 Страниц)  •  95 Просмотры

Страница 1 из 5

Виконав: ст.гр.АВ-11 Скібель П.

Лабораторна  робота №13

«Розв’язування звичайних диференціальних рівнянь

і систем методами Ойлера та Рунге-Кутта»

Варіант №14

Завдання 1. Розв’язати звичайне диференціальне рівняння [pic 1] із заданою початковою умовою y(0)=0 на інтервалі x[0; 2] методами:  
1) Ойлера;  2) Рунге-Кутта; 3) в Matlab за допомогою функції
ode45().

  1. Метод Ойлера

Формула методу Ойлера для числового розв’язування ЗДР:

[pic 2].

[pic 3]

Програма в С

#include<stdio.h>

#include<math.h>

float f_lab13(float x, float y)  {return exp(-y)+cos(8*pow(x,2));}

int main()

            {int n=10;  float  xa=0, xb=2, h, x0, y0=0, y1;   h=(xb-xa)/n;

              for(x0=xa; x0<=xb+h/3; x0+=h)

                  {printf("\n x0=%.1f     y0=%f ", x0, y0);

                    y1=y0+h*f_lab13(x0,y0);

                    y0=y1;

                  }

              }

Таблиця 1

Результати виконання програми

x

0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

1.6

1.8

2.0

y

0.0

0.4000

0.7239

0.8782

0.7681

0.9402

0.9892

1.1637

1.0263

1.0860

1.2947

Програма в Matlab

clc; clear all;

xa=0; xb=2; n=10;  h=(xb-xa)/n; y0=0;

for x0=xa:h:xb;

    disp('    x0        y0'); disp([x0,y0]);

    y1=y0+h*f_lab13(x0,y0);

    y0=y1;

end

Файл-функція:

function z=f_lab13(x,y)

         z=exp(-y)+cos(8*power(x,2));

Таблиця 2

Результати виконання програми

x

0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

1.6

1.8

2.0

y

0.0

0.4000

0.7239

0.8782

0.7681

0.9402

0.9892

1.1637

1.0263

1.0860

1.2947

2. Метод Рунге-Кутта

Формули методу Рунге-Кутта для числового розв’язування ЗДР:

[pic 4]

[pic 5]

[pic 6]

Програма в С

#include<stdio.h>

#include<math.h>

float f_lab13(float x, float y)  {return  exp(-y)+cos(8*pow(x,2));}

int main()

            {int  n=10;  float  xa=0, xb=2, h, x0, y0=0, y1, k1, k2, k3, k4;

               h=(xb-xa)/n;

               for(x0=xa; x0<=xb+h/3; x0+=h)

                  {printf("\n x0=%.1f y0=%f",x0,y0);

                      k1=h*f_lab13(x0, y0);

                      k2=h*f_lab13(x0+h/2, y0+k1/2);

                      k3=h*f_lab13(x0+h/2, y0+k2/2);

                      k4=h*f_lab13(x0+h, y0+k3);

                      y1=y0+(k1+2*k2+2*k3+k4)/6;

                      y0=y1;

                   }

              }

Таблиця 3

Результати виконання програми:

x

0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

1.6

1.8

2.0

y

0.0

0.3645

0.6265

0.6518

0.6449

0.8768

0.8452

0.9840

1.1083

1.1387

1.1446

Програма в Matlab

clc; clear all;

xa=0; xb=2; n=10;

h=(b-a)/n; y0=0;

for x0=xa:h:xb;

    disp('    x0        y0'); disp([x0,y0]);

    k1=h*f_lab13(x0,y0);

    k2=h*f_lab13(x0+h/2,y0+k1/2);

    k3=h*f_lab13(x0+h/2,y0+k2/2);

    k4=h*f_lab13(x0+h,y0+k3);

    y1=y0+(k1+2*k2+2*k3+k4)/6;

...

Скачать:   txt (7.7 Kb)   pdf (332.3 Kb)   docx (735.8 Kb)  
Продолжить читать еще 4 страниц(ы) »
Доступно только на Essays.club