Решение дифференциального уравнения методом Эйлера
Цель: с помощью метода Эйлера построить приближенное решение задачи Коши с заданной точностью. Первое приближение следует вычислить для n = 1. Затем при вычислении каждого следующего итерационного значения следует увеличивать число отрезков в разбиении интервала на 1. Итерационный процесс стоит остановить, если модуль разницы между двумя последними приближениями меньше заданной погрешности. Если n превысит 10000, а необходимая точность не будет достигнута, вывести текущий ответ и текущую погрешность с замечанием "Достигнуть заданной точности не удалось".
Ошибка в моём коде заключается в том, что сравнивать нужно финальное значение y, полученное при текущем n, и финальное значение y, полученное при предыдущем n. А я сравниваю два последних значения y, полученные при текущем n (ещё и на каждом шаге). Как это исправить?
for (n = 1; n < 10000; ++n)
{
double xi = a;
for (i = 0; i < n; ++i)
{
double h = (b - a) / n;
y = yi + h * Solve(xi, yi);
counter++;
if (Math.Abs(y - yi) < eps)
{
Console.WriteLine("Модуль разницы между двумя последними приближениями меньше заданной погрешности");
n--;
eps1 = 1;
break;
}
yi = y;
xi += h;
}
if (eps1 == 1)
{
break;
}
approx = y;
if (y <= 0.0)
{
Console.WriteLine("Ошибка! Введите новый интервал");
break;
}
}
}