З В І Т До лабораторної роботи №6

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

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

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

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА ЗІ З В І Т До лабораторної роботи №6 з курсу: „ Комп'ютерні методи дослідження інформаційних процесів і систем” Варіант 13 Львів 2013 ЗАВДАННЯ: розв’язати диференційне рівняння  при умові у(0)=3 методом Рунге-Кутта з автоматичною зміною кроку. Короткі теоретичні відомості Метод Рунге-Кутта з автоматичною зміною кроку Після обчислення  з кроком  всі обчислення виконуються повторно з кроком . Після цього порівнюються результати, отримані в точці хn+1 з кроком  і . Якщо модуль різниці менший , то обчислення продовжуються з кроком , в іншому випадку крок зменшують. Якщо нерівність дуже сильна, то крок збільшують.  Маємо   - значення незалежної змінної в точці  - значення функції в точці - значення функції в точці , обчислене з кроком  - значення функції в точці , обчислене з кроком   - значення функції , обчислене з кроком  1) Якщо  обчислення повторюються з кроком  і т.д., доки не виконається умова . 2) Якщо виконується ця умова, то можливі два варіанти, в залежності від значення K, де K – ознака поділу кроку. Початкове значенняі залишається таким після першого поділу кроку на два. Надалі, якщо крок ділиться, то K приймає значення одиниці. а) Якщо , то навіть коли виконалась умова , крок не змінюється, тобто лишається тим самим (обчислення далі проводяться з попереднім кроком). б) Якщо  і виконалась умова , тоді . В обох випадках а) і б) результат виводиться на друк. ТЕКСТ ПРОГРАМИ: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { int i = 0, j = 0; double x = 0; double y = 3; double y1, y2, y3; double h = 0.01; double E = 0.001; double K1, K2, K3, K4, K, KK; { for (x = 0; x <= 1; i++) { K = 0; KK = 0; K1 = Math.Sqrt(Math.Log(x*x+5*y*y)+2*y); K2 = (x + h) * (y + h) * K1; K3 = (x + h) * (y + h) * K2; K4 = (x + h) * (y + h) * K3; y1 = (y + h / 6) * (K1 + 2 * K2 + 2 * K3 + K4); K1 = Math.Sqrt(Math.Log(x * x + 5 * y * y) + 2 * y); K2 = (x + h / 2) * (y + h / 2) * K1; K3 = (x + h / 2) * (y + h / 2) * K2; K4 = (x + h / 2) * (y + h / 2) * K3; y2 = (y + h / 6) * (K1 + 2 * K2 + 2 * K3 + K4); K1 = Math.Sqrt(Math.Log(x * x + 5 * y * y) + 2 * y); K2 = (x + h / 2 + h / 2) * (y + h / 2 + h / 2) * K1; K3 = (x + h / 2 + h / 2) * (y + h / 2 + h / 2) * K2; K4 = (x + h / 2 + h / 2) * (y + h / 2 + h / 2) * K3; y3 = (y + h / 6) * (K1 + 2 * K2 + 2 * K3 + K4); for (j = 0; Math.Abs(y3 - y1) > E; j++) { if (KK == 1) K = 1; KK = 1; h = h / 2; y1 = y2; K1 = Math.Sqrt(Math.Log(x * x + 5 * y * y) + 2 * y); K2 = (x + h / 2) * (y + h / 2) * K1; K3 = (x + h / 2) * (y + h / 2) * K2; K4 = (x + h / 2) * (y + h / 2) * K3; y2 = (y + h / 6) * (K1 + 2 * K2 + 2 * K3 + K4); K1 = Math.Sqrt(Math.Log(x * x + 5 * y * y) + 2 * y); K2 = (x + h / 2 + h / 2) * (y + h / 2 + h / 2) * K1; K3 = (x + h / 2 + h / 2) * (y + h / 2 + h / 2) * K2; K4 = (x + h / 2 + h / 2) * (y + h / 2 + h / 2) * K3; y3 = (y + h / 6) * (K1 + 2 * K2 + 2 * K3 + K4); } if (K == 0) h *= 2; K = 0; KK = 0; x += h; Console.Write("y=" + y3); Console.WriteLine("\tx=" + x + "\th=" + h); Console.Read(); } } } } } РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ  Висновок: на цій лабораторній роботі я навчилась використовувати метод Рунге-Кутта для обчислення диф. Рівнянь
Антиботан аватар за замовчуванням

29.05.2013 23:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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