Чисельні методи

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Чисельні методи аналізу автоматичних систем
Варіант:
14

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” / ЛАБОРАТОРНА РОБОТА № 8 з дисципліни: "Чисельні методи" на тему: «Розв’язування задачі Коші методом Рунге-Кутта » ЛАБОРАТОРНА РОБОТА № 8 Тема роботи: Розв’язування задачі Коші методом Рунге-Кутта. Мета роботи: Вивчити і засвоїти постановку та методи розв’язування задачі Коші. Навчитися досліджувати розв’язок , використовуючи метод Рунге-Кутта. Варіант 24: Застосовуючи чисельні методи розв’язування задачі Кошi, розв’язати диференцiальне рівняння першого порядку з точністю є =0.0001 на відрізку  із кроком h= 0.05 i заданими початковими умовами , а також порівняти отриманий розв’язок із точним розв’язком y*, використовуючи правило Рунге. Провести дослідження точності обчислень від кількості кроків. Дослідити не менше 10 випадків. Використовуючи точний розв’язок, обґрунтувати необхідну кількість кроків для досягнення заданої точності на заданому у завданні проміжку. / Код програми: #define _USE_MATH_DEFINES #include <Windows.h> #include <iostream> #include <iomanip> #include <cmath> using namespace std; double f(double x, double y) { return y*y*pow(M_E,x) - 2*y ;} double f1(double x, double y) {return 1/(pow(M_E,x) + pow(M_E,2*x));} int main() { SetConsoleOutputCP(1251); cout << "ЛАБОРАТОРНА РОБОТА №8" << endl; double x_n1, y_n1; double x_n, y_n; double x0, y0; double h = 0.054, n; double k1, k2, k3, k4; double val_func; cout << "Введіть значення х0 та у0: "; cin >> x0 >> y0; cout << "Крок\tX\t\tY\t\tІстинне значення\tПохибка" << endl; for (int i = 0; i <= 10; i++) { x_n = x0; y_n = y0; h -= 0.004; n = (int)((0.5 / h) + 0.5); for (int j = 0; j < n; j++) { k1 = f(x_n, y_n); k2 = f(x_n + h / 2, y_n + k1 / 2); k3 = f(x_n + h / 2, y_n + k2 / 2); k4 = f(x_n + h, y_n + k3); x_n1 = x_n + h; y_n1 = y_n + h / 6 * (k1 + 2 * k2 + 2 * k3 + k4); x_n = x_n1; y_n = y_n1; } val_func = f1(x_n, y_n); cout << fixed << setprecision(3)<< h << setprecision(10) << "\t" << x_n << "\t" << y_n << "\t" << val_func << "\t\t"; cout << scientific <<fabs(val_func - y_n) << endl; } system("pause>>void"); return 0; } Результат: / Графік: / / Висновок: В результаті виконання лабораторної роботи було вивчено метод Рунге-Кутта для розв’язання задачі Коші диференціальних рівнянь. Також приведено графік залежності точності обчислень від кроку. З результатів роботи програми видно, що точність обчислень при різних кроках є 10 −2 . Було знайдено розв’язок диференційного рівняння /у точці X = 0,5, Y = 0.345.
Антиботан аватар за замовчуванням

08.11.2018 17:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!