Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Інститут комп’ютерних технологій автоматики та метрології
Кафедра захисту інформації
/
Звіт
Про виконання лабораторної роботи № 6
«Комп’ютерні методи дослідження
інформаційних процесів і систем»
(Варіант7)
Мета роботи: ознайомлення з чисельними методами розв’язування диференційних рівнянь.
Завдання:
Ознайомитись з основними теоретичними відомостями.
Розробити детальну блок-схему алгоритму методу.
Написати програму, яка забезпечить розв’язок та виведення на екран результатів роботи.
Ввести в комп’ютер програму згідно з отриманим завданням.
Здійснити відладку введеної програми, виправивши виявлені помилки.
Виконати програму. Текст відлагодженої програми та отримані результати оформити у звіт з лабораторної роботи.
варіант
Диференційне рівняння
Метод
Початкові умови
інтервал
крок
7
Модифі-
кований
метод
Ейлера
[0,1]
0,1
Список методів, використаних в програмі та блок-схемі алгоритму:
go() – метод класу Laba, який викликає початок роботи програми.
vvid() – метод класу Laba, який забезпечує зчитування границь проміжку.
begin() – метод класу Laba, який забезпечує формування початкових умов.
cycle() – метод класу Laba, який забезпечує розвязання рівняння модифікованим методом Ейлера.
F1(double[] y0) – метод класу Laba, який повертає елемент масиву початкових умов.
double F2(double x, double[] y0) – метод класу Laba, який повертає обчислене значення функції.
WriteLine() – метод класу Console, який забезпечує вивід з переходом на новий рядок.
Write() – метод класу Console який забезпечує вивід без переходу на новий рядок.
ReadLine() – метод класу Console, який забезпечує зчитування даних з клавіатури.
ToDouble() – метод класу Convert, який забезпечує приведення даних до типу double.
Cos() – метод класу Math, який забезпечує обчислення косінуса
Pow() – метод класу Math, який забезпечує піднесення у степінь.
Main() – метод класу Program, з якого починається робота програми.
Блок-схеми:
Блок-схема до методу cycle():
початок
y = new double[2];
x=a,b
x+=h
pochUmova[0] = y0[0] + h * F1(y0);
y[0]=y0[0]+0.5*h*(F1(y0)+F1(pochUmova));
pochUmova[1] = y0[1] + h * F1(y0);
y[1] = y0[1] + 0.5 * h * (F2(x, y0) + F2(x + h, pochUmova ));
x, y, dy
i=0,y.Length
i++
y0[i] = y[i];
кінець
Остаточна версія програми:
using System;
using System.Collections.Generic;
using System.Text;
namespace Laba6_kmd
{
class Laba
{
public double h=0.1;
public double a;
public double b;
public double [] y0;
public double[] pochUmova;
public double[] y;
public double x;
public void go()
{
vvid();
}
void vvid()
{
Console.Write("введiть початкове значення х: a=");
a = Convert.ToDouble(Console.ReadLine());
Console.Write("введiть кiнцеве значення х: b=");
b = Convert.ToDouble(Console.ReadLine());
Console.WriteLine();
begin();
}
void begin()
{
Console.WriteLine();
Console.WriteLine("Початковi умови:");
y0 = new double[2];
y0[0] = -(1.0 / 32);
Console.WriteLine("y="+y0[0]);
y0[1] = -4;
Console.WriteLine("dy"+y0[1]);
Console.WriteLine();
pochUmova = new double[2];
for (int i = 0; i < pochUmova.Length; i++)
{
pochUmova[i] = y0[i];
}
cycle();
}
double F1(double[] y0)
{
return y0[1];
}
double F2(double x, double[] y0)
{
return Math.Pow((Math.Cos(4 * x)), (-3))-16*y0[0];
}
void cycle()
{
y = new double[2];
for (x = a; x <= b; x += h)
{
pochUmova[0] = y0[0] + h * F1(y0);
y[0]=y0[0]+0.5*h*(F1(y0)+F1(pochUmova));
pochUmova[1] = y0[1] + h * F1(y0);
y[1] = y0[1] + 0.5 * h * (F2(x, y0) + F2(x + h, pochUmova ));
Console.WriteLine("x="+x+"\t dy="+y[0]+"\t d2y="+y[1]);
for (int i = 0; i < y.Length; i++)
{
y0[i] = y[i];
}
}
}
}
class Program
{
static void Main(string[] args)
{
Laba got = new Laba();
got.go();
}
}
}
Результати роботи програми:
/
Висновок:
В цій лабораторній роботі я ознайомився з основними методами чисельного розвязування звичайних диференціальних рівнянь. Дана програма розвязує рівняння модифікованим методом Ейлера і виводить на екран значення початкових умов і таблицю розвязків у вигляді значення х – значення у в точці х – значення похідної в точці х.