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

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

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

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

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Навчально-науковий інститут атомної та теплової енергетики Кафедра цифрових технологій в енергетиці ЛАБОРАТОРНА РОБОТА №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:19

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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