Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР4 / ЧМ_Л4.odt
Скачиваний:
0
Добавлен:
27.06.2025
Размер:
183.95 Кб
Скачать

Приложение в

Код для задания 3

using System;

class Program

{

static void Main(string[] args)

{

double x0 = 0;

double y0 = 1;

double h = 0.1;

int n = 20;

double[] eulerResults = new double[n + 1];

double[] rk2Results = new double[n + 1];

double[] rk4Results = new double[n + 1];

eulerResults[0] = y0;

rk2Results[0] = y0;

rk4Results[0] = y0;

for (int i = 1; i <= n; i++)

{

double x = x0 + (i - 1) * h;

eulerResults[i] = eulerResults[i - 1] + h * F(x, eulerResults[i - 1]);

}

for (int i = 1; i <= n; i++)

{

double x = x0 + (i - 1) * h;

double k1 = F(x, rk2Results[i - 1]);

double k2 = F(x + h, rk2Results[i - 1] + h * k1);

rk2Results[i] = rk2Results[i - 1] + (h / 2) * (k1 + k2);

}

for (int i = 1; i <= n; i++)

{

double x = x0 + (i - 1) * h;

double k1 = F(x, rk4Results[i - 1]);

double k2 = F(x + h / 2, rk4Results[i - 1] + (h / 2) * k1);

double k3 = F(x + h / 2, rk4Results[i - 1] + (h / 2) * k2);

double k4 = F(x + h, rk4Results[i - 1] + h * k3);

rk4Results[i] = rk4Results[i - 1] + (h / 6) * (k1 + 2 * k2 + 2 * k3 + k4);

}

Console.WriteLine("Метод Эйлера:");

PrintResults(eulerResults, h);

Console.WriteLine("Метод Рунге-Кутта 2-го порядка:");

PrintResults(rk2Results, h);

Console.WriteLine("Метод Рунге-Кутта 4-го порядка:");

PrintResults(rk4Results, h);

}

static double F(double x, double y)

{

return 3 * x * y;

}

static void PrintResults(double[] results, double h)

{

for (int i = 0; i < results.Length; i++)

{

double x = i * h;

Console.WriteLine($"x = {x:F1}, y = {Math.Round(results[i],2)}");

}

}

}

Томск 2024

Соседние файлы в папке ЛР4