Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Інститут комп’ютерних технологій автоматики та метрології
Кафедра захисту інформації
/
Звіт
Про виконання лабораторної роботи № 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();
}
}
}
Результати роботи програми:
/
Висновок:
В цій лабораторній роботі я ознайомився з основними методами чисельного розвязування звичайних диференціальних рівнянь. Дана програма розвязує рівняння модифікованим методом Ейлера і виводить на екран значення початкових умов і таблицю розвязків у вигляді значення х – значення у в точці х – значення похідної в точці х.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!