Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки, молоді та спорту України
Національний університет «Львівська Політехніка»
ІКТА
Кафедра ЗІ
Звіт до лабораторної роботи №5
з дисципліни: «Комп’ютерні методи дослідження інформаційних процесів та систем»
на тему: «Методи чисельного розв’язування диференціальних рівнянь»
Мета роботи
Ознайомлення з методами чисельного розв’язування диференційних рівнянь.
Метод Ейлера
Метод Ейлера є найпростішм методом розв’язування задачі Коші. Він дозволяє інтегрувати ДР першого порядку виду.
(4)
Метод Ейлера базується на розкладі функції в ряд Тейлора в околі точки
(5)
Якщо мале, то, знехтувавши членам розкладу, що містять в собі і т.д. отримаємо
(6)
Похідну знаходимо з рівняння (4), підставивши в нього початкову умову. Таким чином можна знайти наближене значення залежної змінної при малому зміщенні від початкової точки. Цей процес можна продовжувати, використовуючи співвідношення.
,
роблячи як завгодно багато кроків.
Похибка методу має порядок , оскільки відкинуті члени, що містять в другій і вище степенях.
Недолік методу Ейлера - нагромадження похибок, а також збільшення об’ємів обчислень при виборі малого кроку з метою забезпечення заданої точності.
В методі Ейлера на всьому інтервалі тангенс кута нахилу дотичної приймається незмінним і рівним . Очевидно, що це призводить до похибки, оскільки кути нахилу дотичної в точках та різні. Точність методу можна підвищити, якщо покращити апроксимацію похідної.
Завдання
Розв’язати чисельним методом звичайне диференційне рівняння.
5
Текст програми
namespace Lab_6
{
class Program
{
static void Main(string[] args)
{
Lab Lab = new Lab();
Lab.Obrach();
Console.ReadLine();
}
}
class Lab
{
public int i, n = 1, a = 0, b = 1;
public double h = 0.01, x;
double[] f = new double[2];
double[] y = new double[2];
public void dy()
{
f[0] = y[0];
y[0] = Math.Sin(x + Math.Pow(y[0], 2));
}
public void Eiler()
{
dy();
for (i = 0; i < n; i++)
{
y[i] = y[i] + h * f[i];
}
x = x + h;
}
public void Obrach()
{
for (i = 0; i < n; i++)
{
Console.WriteLine("Pochatkove znachennja y");
y[i] = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("znachennja a");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("znachennja b");
b = Convert.ToInt32(Console.ReadLine());
}
x = a;
do
{
Eiler();
Console.WriteLine("x = " + x + "\ty1 = " + y[0]);
}
while (x < b);
Console.ReadLine();
Console.ReadLine();
}
}
}
Результат роботи програми
Висновок
В цій лабораторній роботі я ознайомилася з методами чисельного розв’язування диференційних рівнянь, а саме з методом Ейлера