Решение дифференциального уравнения методом Эйлера

Цель: с помощью метода Эйлера построить приближенное решение задачи Коши с заданной точностью. Первое приближение следует вычислить для 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;
                }
            }
        }

Ответы (0 шт):