DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Метод Адамса розв'язання задачі Коші для диференціального рівняння першого порядку

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

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

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

Рік:
2018
Тип роботи:
Лабораторна робота
Предмет:
Чисельні методи
Група:
КН-21
Варіант:
14
Коротко про документ

Про що ця робота

У лабораторній роботі досліджено чисельне розв'язання задачі Коші для диференціального рівняння першого порядку. Реалізовано метод Адамса та порівняно результати з методом Рунге-Кутта мовою C++.

У роботі розглядаються

  • Чисельні методи
  • Задача Коші
  • Диференціальні рівняння
  • Метод Адамса
  • Метод Рунге-Кутта
  • Програмування мовою C++
  • Похибка обчислень

Зміст і розділи

  1. Мета роботи
  2. Варіант завдання
  3. Код програми
  4. Результат виконання
  5. Висновок
Для кого:Студенти технічних та комп'ютерних спеціальностей вищих навчальних закладів
Викладачі:Дронюк І. М.

Ключові поняття

метод Адамсазадача Кошідиференціальне рівнянняметод Рунге-Куттакрок інтегруванняабсолютна похибкавідносна похибкаC++сіткафункція f(x, y)

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

Міністерство освіти і науки України Національний університет “Львівська політехніка” / ЛАБОРАТОРНА РОБОТА № 10 з дисципліни: "Чисельні методи" на тему: «Метод Адамса розв’язання задачі Коші для диференціального рівняння першого порядку» ЛАБОРАТОРНА РОБОТА № 10 Тема роботи: Метод Адамса розв’язання задачі Коші для диференціального рівняння першого порядку. Мета роботи: Вивчити і засвоїти метод розв’язування задачі Коші методом Адамса. Варіант 24: Створити проект на певній мові програмування для розв’язання задачі Коші для диференціального рівняння першого порядку методом Адамса: 1. Розробити проект на певній мові програмування для розв’язання задачі Коші для диференціального рівняння першого порядку методом Адамса. 2. Обчислити розв’язок задачі Коші для диференціального рівняння першого порядку методом Адамса. 3. Порівняти отримані результати з розв’язком задачі Коші за методом Рунге-Кутта та зробити висновки. Визначити абсолютну та відносну похибку обчислення кожного методу. Обґрунтувати досягнення заданої точності.  Код програми: #include <Windows.h> #include <iostream> #include <cmath> using namespace std; double f(double x, double y) {return cos(1.5*x + y) + (x-y) ;} int main() { SetConsoleOutputCP(1251); cout << "ЛАБОРАТОРНА РОБОТА №10" << endl; double x0, y0, xn; double h, h_2; int n, n_2; double k1, k2, k3, k4; cout << "Введіть значення х0 та у0: "; cin >> x0 >> y0; cout << "Введіть xn: "; cin >> xn; cout << "Введіть крок: "; cin >> h; h_2 = h / 2; n = (int)(((xn - x0) / h) + 0.5); n++; n_2 = (int)(((xn - x0) / h_2) + 0.5); n_2++; double* x = new double[n]; double* y = new double[n]; double* x_h2 = new double[n_2]; double* y_h2 = new double[n_2]; for (int i = 0; i < n; i++) x[i] = x0 + h*i; for (int i = 0; i < n_2; i++) x_h2[i] = x0 + h_2*i; y[0] = y_h2[0] = y0; for (int j = 0; j < n - 1; j++) { k1 = f(x[j], y[j]); k2 = f(x[j] + h / 2, y[j] + k1 / 2); k3 = f(x[j] + h / 2, y[j] + k2 / 2); k4 = f(x[j] + h, y[j] + k3); y[j + 1] = y[j] + h / 6 * (k1 + 2 * k2 + 2 * k3 + k4); } for (int j = 0; j < n_2 - 1; j++) { k1 = f(x_h2[j], y_h2[j]); k2 = f(x_h2[j] + h_2 / 2, y_h2[j] + k1 / 2); k3 = f(x_h2[j] + h_2 / 2, y_h2[j] + k2 / 2); k4 = f(x_h2[j] + h_2, y_h2[j] + k3); y_h2[j + 1] = y_h2[j] + h_2 / 6 * (k1 + 2 * k2 + 2 * k3 + k4); } cout << "\nМетод Рунге-Кутта: " << endl; cout << "X\tY" << endl; for (int i = 0; i < n; i++) { cout << x[i] << "\t" << y[i] << endl; } cout << "Похибка методу: " << fabs((y_h2[n_2 - 1] - y[n - 1])) / (16 - 1) << endl << endl; for (int i = 3; i < n - 1; i++) y[i + 1] = y[i] + h / 24 * (55 * f(x[i], y[i]) - 59 * f(x[i - 1], y[i - 1]) + 37 * f(x[i - 2], y[i - 2]) - 9 * f(x[i - 3], y[i - 3])); for (int i = 3; i < n_2 - 1; i++) y_h2[i + 1] = y_h2[i] + h_2 / 24 * (55 * f(x_h2[i], y_h2[i]) - 59 * f(x_h2[i - 1], y_h2[i - 1]) + 37 * f(x_h2[i - 2], y_h2[i - 2]) - 9 * f(x_h2[i - 3], y_h2[i - 3])); cout << "\nМетод Адамса для: " << endl; cout << "X\tY" << endl; for (int i = 0; i < n; i++) { cout << x[i] << "\t" << y[i] << endl; } cout << "Похибка методу: " << fabs((y_h2[n_2 - 1] - y[n - 1])) / (16 - 1) << endl; delete[] y; delete[] x; delete[] x_h2; delete[] y_h2; system("pause>>void"); return 0; } Результат: // Висновок: В результаті виконання лабораторної роботи було вивчено метод Адамса для розв’язання задачі Коші для диференціальних рівнянь першого порядку. Було знайдено розв’язок диференційного рівняння:  На проміжку Х є [0;1]. Наприклад при х = 0.9 , у = 0.3115.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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