Скачиваний:
8
Добавлен:
01.09.2021
Размер:
1.5 Mб
Скачать

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

им. Р.Е.АЛЕКСЕЕВА

Кафедра «Численные методы решения обыкновенного дифференциального уравнения»

Дисциплина «Информатика»

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

Вариант№23

Выполнил: Федоров К.Р. Группа 19-Э-5 Проверил: Лапшин И.В.

Нижний Новгород

2020

Постановка задания:

Блок схема:

Метод Эйлера простой

С++ :

Метод Эйлера простой

#include <iostream> #include <iomanip> #include <math.h> using namespace std;

double F(double x, double y, double z)

{

return ((-2 * z - y) / (4 * x));

}

int main()

{

double x0 = 1, y0 = 1.381, z0 = -0.15, x, y, z, x1, y1, z1, h, a = 1, b = 2; int n = 5;

cout << setw(10) << "x" << setw(10) << "y" << setw(10) << "z" << endl; cout << "_______________________________" << endl;

h = (b - a) / n; while (x0 < b)

{

cout << setw(10) << x0 << setw(10) << y0 << setw(10) << z0 << endl;

x1 = x0 + h;

y1 = y0 + h * z0;

z1 = z0 + h * F(x0, y0, z0);

x0 = x1;

y0 = y1;

z0 = z1;

}

return 0;

}

Блок-схема

Метод Эйлера центрированный

С++

Метод Эйлера центрированный

#include <iostream> #include <iomanip> #include <math.h> using namespace std;

double F(double x, double y, double z)

{

return ((-2 * z - y) / (4 * x));

}

int main()

{

double x0 = 1, y0 = 1.381, z0 = -0.15, x, y, z, x1, y1, z1, xp, h, a = 1, b = 2; int n = 5;

cout << setw(10) << "x" << setw(10) << "y" << setw(10) << "z" << endl; cout << "_______________________________" << endl;

h = (b - a) / n; x = x0;

while (x0 < b)

{

cout << setw(10) << x0 << setw(10) << y0 << setw(10) << z0 << endl;

x1 = x0 + h;

y1 = y0 + h * (z0 + h * ((F(x0, y0, z0)) / 2));

z1 = z0 + h * F(x0 + h / 2, y0 + h * z0 / 2, z0 + h * F(x0, y0, z0) / 2); x0 = x1;

y0 = y1;

z0 = z1;

}

return 0;

}

Блок-схема

Метод Эйлера усредненный

С++

Метод Эйлера усредненный

#include <iostream> #include <iomanip> #include <math.h> using namespace std;

double F(double x, double y, double z)

{

return (((-2 * z) - y) / (4 * x));

}

int main()

{

double x0 = 1, y0 = 1.381, z0 = -0.15, x, y, z, x1, y1, z1, xp, h, a = 1, b = 2; int n = 5;

cout << setw(10) << "x" << setw(10) << "y" << setw(10) << "z" << endl; cout << "_______________________________" << endl;

h = (b - a) / n; x = x0;

while (x0 < b)

{

cout << setw(10) << x0 << setw(10) << y0 << setw(10) << z0 << endl;

x1 = x0 + h;

y1 = y0 + h * ((z0 + (z0 + h * F(x0, y0, z0))) / 2);

z1 = z0 + h * ((F(x0, y0, z0) + F(x0 + h, y0 + h * z0, z0 + h * F(x0, y0,

z0))) / 2);

x0 = x1;

y0 = y1;

z0 = z1;

}

return 0;

}

Блок-схема

Метод Эйлера правого края

С++

Метод Эйлера правого края

#include <iostream> #include <iomanip> #include <math.h> using namespace std;

double F(double x, double y, double z)

{

return ((-2 * z - y) / (4 * x));

}

int main()

{

double x0 = 1, y0 = 1.381, z0 = -0.15, x, y, z, x1, y1, z1, xp, h, a = 1, b = 2; int n = 5;

cout << setw(10) << "x" << setw(10) << "y" << setw(10) << "z" << endl; cout << "_______________________________" << endl;

h = (b - a) / n; x = x0;

while (x0 < b)

{

cout << setw(10) << x0 << setw(10) << y0 << setw(10) << z0 << endl;

x1 = x0 + h;

y1 = y0 + h * (z0 + h * F(x0, y0, z0));

z1 = z0 + h * F(x1, y0 + h * z0, z0 + h * F(x0, y0, z0)); x0 = x1;

y0 = y1;

z0 = z1;

}

return 0;

}

Соседние файлы в папке Информатика 2 семестр МОРОЗОВСКАЯ