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

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

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

Рік:
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: Ро...
Антиботан аватар за замовчуванням

24.10.2023 17:10

Коментарі

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

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Останні оголошення

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини