
ЧМ Лабораторная работа 4
.pdfПриложение Б Численное дифференцирование
double x = 2;
double Function(double x)
{
double y = 2 * x * x + Math.Log(x) - 2; return y;
}
double h = 0.1; void RightDiff()
{
double right_diff = (Function(x + h) - Function(x))/h; Console.WriteLine($"Правая разностная производная: {right_diff}");
}
void LeftDiff()
{
double left_diff = (Function(x) - Function(x - h)) / h; Console.WriteLine($"Левая разностная производная: {left_diff}");
}
void CentreDiff()
{
double centre_diff = (Function(x+h) - Function(x-h))/(2*h); Console.WriteLine($"Центральная разностная производная: {centre_diff}");
}
RightDiff();
21
LeftDiff();
CentreDiff();
22
Приложение В Решение дифференциального уравнения
double[] X = { 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2 };
double y0 = 1;
double h = 0.1;
double Function(double x, double y)
{
double F = Math.Sin(x) + 2 * y + Math.Exp(x + 2);
return F;
}
void Euler(double x)
{
while (X.Length < 22)
{
double y_i = y0 + h * Function(x, y0);
Console.WriteLine($"При х = {Math.Round(x + 0.1, 1)} y = {y_i}");
y0 = y_i;
break;
}
}
void RungeKutt2(double x, double x_i)
{
while (X.Length < 22)
{
double y_i = y0 + (h/2 * Function(x, y0)) + (h/2 * Function(x_i, y0 + h * Function (x, y0)));
23
Console.WriteLine($"При х = {Math.Round(x + 0.1, 1)} y = {y_i}"); y0 = y_i;
break;
}
}
void RungeKutt4(double x)
{
while (X.Length < 22)
{
double f1 = Function(x, y0);
double f2 = Function(x + (h / 2), y0 + ((h / 2) * f1)); double f3 = Function(x + (h / 2), y0 + ((h / 2) * f2)); double f4 = Function(x + h, y0 + (h * f3));
double y_i = y0 + (h / 6) * (f1 + 2 * f2 + 2 * f3 + f4); Console.WriteLine($"При х = {Math.Round(x + 0.1, 1)} y = {y_i}"); y0 = y_i;
break;
}
}
for (int i = 0; i < X.Length-1; i++)
{
Euler(X[i]);
}
Console.WriteLine(); y0 = 1;
for (int i = 0; i < X.Length-1; i++)
{
24
RungeKutt2(X[i], X[i] + h);
}
Console.WriteLine(); y0 = 1;
for (int i = 0; i < X.Length-1; i++)
{
RungeKutt4(X[i]);
}
25