Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
ЗВІТ
До лабораторної роботи №4
з курсу: «Комп’ютерні методи дослідження інформаційних процесів та систем»
на тему: «Методи чисельного розв’язування диференціальних рівнянь»
Варіант №9
МЕТА РОБОТИ
Ознайомлення методами чисельного розв’язання диференціальних рівнянь.
КОРОСТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Модифікований метод Ньютона.
Метод Ейлера є найпростішим методом розв’язування задачі Коші. Він дозволяє інтегрувати ДР першого порядку виду.
(4)
Метод Ейлера базується на розкладі функції в ряд Тейлора в околі точки
(5)
Якщо мале, то, знехтувавши членам розкладу, що містять в собі і т.д. отримаємо
(6)
Похідну знаходимо з рівняння (4), підставивши в нього початкову умову. Таким чином можна знайти наближене значення залежної змінної при малому зміщенні від початкової точки. Цей процес можна продовжувати, використовуючи співвідношення.
,
роблячи як завгодно багато кроків.
Похибка методу має порядок , оскільки відкинуті члени, що містять в другій і вище степенях.
Недолік методу Ейлера - нагромадження похибок, а також збільшення об’ємів обчислень при виборі малого кроку з метою забезпечення заданої точності.
В методі Ейлера на всьому інтервалі тангенс кута нахилу дотичної приймається незмінним і рівним . Очевидно, що це призводить до похибки, оскільки кути нахилу дотичної в точках та різні. Точність методу можна підвищити, якщо покращити апроксимацію похідної.
ЗАВДАННЯ
№ п./п
Диференційне рівняння
Початкові умови
9
БЛОК-СХЕМА АЛГОРИТМУ
СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ФУНКЦІЙ, ВИКОРИСТАНИХ У ПРОГРАМІ, ТА ЇХ ПОЯСНЕННЯ
Main() – головний метод; input() – метод зчитування введених даних;
class Program – клас, який містить тільки головну функцію Main(); class Main – клас, у якому відбуваються усі дії;
Console.ReadLine() та Console.ReadKey() – функція зчитування з клавіатури;
Console.WriteLine() та Console.Write() – функції виведення на екран;
Convert.ToDouble() – функція конвертування у тип Double;
try {} catch (Exception) {} – функція перехоплення винятку;
goto – оператор переходу виконання коду до відповідної мітки; for() – оператор циклі з передумовою; if {} else {} – оператор умови;
ТЕКСТ ПРОГРАМИ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace kmd_lab6
{
class Program
{
static void Main(string[] args)
{
Main p = new Main(); p.calc();
Console.Write("\nPress <Enter> to exit..."); Console.ReadKey();
}
}
class Main
{
public int i, n = 1, a, b;
public double h = 0.01, x;
double[] f = new double[2];
double[] y = new double[2];
public void input()
{
inpt: try
{
Console.Write(" Почтакове значення y = ");
y[0] = Convert.ToDouble(Console.ReadLine());
Console.Write(" Значення a = ");
a = Convert.ToInt32(Console.ReadLine());
Console.Write(" Значення b = ");
b = Convert.ToInt32(Console.ReadLine());
}
catch (Exception) { Console.WriteLine("\tВиникла помилка!!!"); goto inpt; }
}
public void dy()
{
f[0] = y[0];
y[0] = Math.Sqrt(Math.Pow(Math.Sin(x * x), 2) + 3);
}
public void eiler()
{
dy();
for (i = 0; i < n; i++)
{
y[i] = y[i] + h * f[i];
} x += h;
}
public void calc()
{
input(); x = a;
do
{
eiler(); Console.WriteLine(" x = {0:0.#0}\ty' = {1}", x, y[0]);
} while (x <= b);
}
}
}
РЕЗУЛЬТАТ РОБОТИ ПРОГРАМИ
...
...
...
ВИСНОВОК
Отже, під час лабораторної роботи я ознайомився з методами чисельного розв’язування диференціальних рівнянь. За допомогою методу Ейлера склав алгоритм розв’язування диференціальних рівнянь.