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

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

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

Рік:
2022
Тип роботи:
Лабораторна робота
Предмет:
Чисельні методи

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Навчально-науковий інститут атомної та теплової енергетики Кафедра цифрових технологій в енергетиці ЛАБОРАТОРНА РОБОТА №1 з дисципліни «Чисельні методи» Варіант № 9 Тема: Розв’язання задачі Коші. Завдання: Методами Рунге-Кутта та Адамса розв'язати задачу Коші. Розв’язати за допомогою Matchad систему рівнянь. Виконання роботи: Завдання 1: Розвязати задачу Коші методом Рунге-Кутта та Адамса. Варіант завдання : / / Лістинг програми: package chmLr1; /* * Ждан Вячеслав Тм-02 * Варіант №9 * y' = e^(-ax) ( y^2 + b); [0,4]; h = 0.1; * */ public class Main { private static double x = 0; private static double y = 0; private static double h = 0.1; public static void main(String[] args) { int left = 0; int right = 4; int n = (int) ((right - left) / h) + 1; calculateRK(n); x = 0; y = 0; calculateAdams(n); } /* y' = e^(-ax) ( y^2 + b); */ public static double dF(double x, double y) { int variant = 9; int n = variant - 5, k = variant - 5; double a = 1 + 0.4 * n; double b = 1 + 0.4 * k; return Math.pow(Math.E, (-a * x)) * (Math.pow(y, 2) + b); } /* Calculate values for RK*/ public static void calculateRK(int tMax) { double dx, e; System.out.println("\n Runge-Kutta Method: " + "\n n x y k1 k2 k3 k4 e" + "\n----------------------------------------------------"); for (int t = 0; t < tMax; t++) { x = t * h; double[] resK = rk(); dx = (resK[0] + 2 * resK[1] + 2 * resK[2] + resK[3]) / 6; e = Math.abs((Math.pow(y, h) - Math.pow(y, h / 2)) / (Math.pow(2, 4) - 1)); System.out.printf("%2d %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.3f\n", t, x, y, resK[0], resK[1], resK[2], resK[3], e); y += dx; } } public static double[] rk() { double[] res = new double[4]; res[0] = h * dF(x, y); res[1] = h * dF(x + h / 2, y + res[0] / 2); res[2] = h * dF(x + h / 2, y + res[1] / 2); res[3] = h * dF(x + h, y + res[2]); return res; } //Get 4 first value from RK public static double[] RKfirst4() { double dx, e; double[] res = new double[4]; for (int t = 0; t < 4; t++) { x = t * h; double[] resK = rk(); dx = (resK[0] + 2 * resK[1] + 2 * resK[2] + resK[3]) / 6; res[t] = y; y += dx; } return res; } //Calculate values for Adams public static void calculateAdams(int tMax) { double e; System.out.println("\n Adams Method: " + "\n n x y e" + "\n-----------------------"); double[] last4results = RKfirst4(); for (int t = 0; t < 4; t++) { x = t * h; e = Math.abs((Math.pow(last4results[t], h) - Math.pow(last4results[t], h / 2)) / (Math.pow(2, 4) - 1)); System.out.printf("%2d %6.2f %6.2f %6.3f\n", t, x, last4results[t], e); } for (int t = 4; t < tMax; t++) { y = last4results[3] + (h / 24) * (55 * dF(x, last4results[3]) - 59 * dF(x - h, last4results[2]) + 37 * dF(x - 2 * h, last4results[1]) - 9 * dF(x - 3 * h, last4results[0])); e = Math.abs((Math.pow(y, h) - Math.pow(y, h / 2)) / (Math.pow(2, 4) - 1)); for (int i = 0; i < 3; i++) last4results[i] = last4results[i + 1]; last4results[3] = y; x = t * h; System.out.printf("%2d %6.2f %6.2f %6.3f\n", t, x, y, e); } } } Результат роботи: / / Графіки: / / Розв`язок завдання по варіантам за допомогою MathCad: Відповіді отримані за допомогою MathCad сходяться з власними / / Завдання №2: Розв’язати за допомогою Matchad систему рівнянь: / Розв`язок системи за допомогою MathCad: / / Висновок: Під час виконання роботи було набуто навички з використання MathCad. Розроблено програмне забезпечення для обрахунку задач Коші методами Рунге-Кутта та Адамса.
Антиботан аватар за замовчуванням

24.10.2023 17:10-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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