Модифицированный метод эйлера решения дифференциальных уравнений

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

Для заданного дифференциального уравнения Модифицированный метод эйлера решения дифференциальных уравненийс начальным условием Модифицированный метод эйлера решения дифференциальных уравнений
найти приближенное решение, используя метод Predictor-Corrector.

Метод Предиктор-Корректор:
Метод предиктор-корректор также известен как метод Модифицированного Эйлера .
В методе Эйлера касательная рисуется в точке, а наклон рассчитывается для заданного размера шага. Таким образом, этот метод лучше всего работает с линейными функциями, но для других случаев остается ошибка усечения. Для решения этой проблемы введен модифицированный метод Эйлера. В этом методе вместо точки среднее арифметическое наклона за интервал Модифицированный метод эйлера решения дифференциальных уравненийиспользуется.

Таким образом, в методе Predictor-Corrector для каждого шага прогнозируемое значение Модифицированный метод эйлера решения дифференциальных уравненийсначала рассчитывается по методу Эйлера, а затем наклоны в точках Модифицированный метод эйлера решения дифференциальных уравненийи Модифицированный метод эйлера решения дифференциальных уравненийрассчитывается и среднее арифметическое этих склонов добавляются к Модифицированный метод эйлера решения дифференциальных уравненийрассчитать скорректированное значение Модифицированный метод эйлера решения дифференциальных уравнений,

  • Шаг — 1: сначала прогнозируется значение для шага (здесь t + 1): Модифицированный метод эйлера решения дифференциальных уравнений,
    здесь h — размер шага для каждого приращения
  • Шаг — 2: Затем прогнозируемое значение корректируется : Модифицированный метод эйлера решения дифференциальных уравнений
  • Шаг — 3: Увеличение сделано: Модифицированный метод эйлера решения дифференциальных уравнений
  • Шаг 4: Проверить продолжение, если Модифицированный метод эйлера решения дифференциальных уравненийзатем перейдите к шагу — 1.
  • Шаг 5: Завершить процесс.

    Как и в этом методе, используется средний уклон, поэтому ошибка значительно уменьшается. Также мы можем повторить процесс коррекции сходимости. Таким образом, на каждом шаге мы уменьшаем ошибку, таким образом, улучшая значение y.

    Примеры:

    The final value of y at x = 1 is y=2.18147

    Реализация: здесь мы рассматриваем дифференциальное уравнение: Модифицированный метод эйлера решения дифференциальных уравнений

    // C ++ код для решения дифференциального уравнения
    // используя метод Predictor-Corrector или Modified-Euler
    // с заданными условиями, y (0) = 0,5, размер шага (h) = 0,2
    // найти y (1)

    using namespace std;

    // рассмотрим дифференциальное уравнение
    // для заданных x и y возвращаем v

    double f( double x, double y)

    double v = y — 2 * x * x + 1;

    // предсказывает следующее значение для данного (x, y)
    // и размер шага h с использованием метода Эйлера

    double predict( double x, double y, double h)

    // возвращается значение следующего y (прогнозируемого)

    double y1p = y + h * f(x, y);

    // исправляет прогнозируемое значение
    // используя модифицированный метод Эйлера

    double correct( double x, double y,

    double x1, double y1,

    // (x, y) предыдущего шага

    // и x1 — увеличенный x для следующего шага

    // и у1 прогнозируется у для следующего шага

    double e = 0.00001;

    y1c = y + 0.5 * h * (f(x, y) + f(x1, y1));

    > while ( fabs (y1c — y1) > e);

    // каждая итерация корректирует значение

    // of y используя средний уклон

    void printFinalValues( double x, double xn,

    double y, double h)

    double x1 = x + h;

    double y1p = predict(x, y, h);

    double y1c = correct(x, y, x1, y1p, h);

    // на каждой итерации сначала значение

    // для следующего шага сначала прогнозируется

    // а затем исправлено.

    cout «The final value of y at x = «

    // здесь x и y являются начальными

    // заданное условие, поэтому x = 0 и y = 0.5

    double x = 0, y = 0.5;

    // конечное значение x, для которого требуется y

    printFinalValues(x, xn, y, h);

    // Java-код для решения дифференциала
    // уравнение с использованием Predictor-Corrector
    // или модифицированный метод Эйлера с
    // заданные условия, y (0) = 0,5, шаг
    // размер (h) = 0,2, чтобы найти y (1)

    // рассмотрим дифференциальное уравнение
    // для заданных x и y возвращаем v

    static double f( double x, double y)

    double v = y — 2 * x * x + 1 ;

    // предсказывает следующее значение для данного (x, y)
    // и размер шага h с использованием метода Эйлера

    static double predict( double x, double y, double h)

    // возвращается значение следующего y (прогнозируемого)

    double y1p = y + h * f(x, y);

    // исправляет прогнозируемое значение
    // используя модифицированный метод Эйлера

    static double correct( double x, double y,

    double x1, double y1,

    // (x, y) предыдущего шага

    // и x1 — увеличенный x для следующего шага

    // и у1 прогнозируется у для следующего шага

    double e = 0.00001 ;

    y1c = y + 0.5 * h * (f(x, y) + f(x1, y1));

    while (Math.abs(y1c — y1) > e);

    // каждая итерация корректирует значение

    // of y используя средний уклон

    static void printFinalValues( double x, double xn,

    double y, double h)

    double x1 = x + h;

    double y1p = predict(x, y, h);

    double y1c = correct(x, y, x1, y1p, h);

    // на каждой итерации сначала значение

    // для следующего шага сначала прогнозируется

    // а затем исправлено.

    DecimalFormat df = new DecimalFormat( «#.#####» );

    System.out.println( «The final value of y at x = » +

    x + » is : » +df.format(y));

    public static void main (String[] args)

    // здесь x и y являются начальными

    // заданное условие, поэтому x = 0 и y = 0.5

    double x = 0 , y = 0.5 ;

    // конечное значение x, для которого требуется y

    printFinalValues(x, xn, y, h);

    // Этот код предоставлен mits

    # Python3 код для решения дифференциального уравнения
    # с использованием метода Predictor-Corrector или Modified-Euler
    # с заданными условиями, y (0) = 0,5, размер шага (h) = 0,2
    # найти y (1)

    # рассмотрим дифференциальное уравнение
    # для заданных x и y, вернуть v

    v = y — 2 * x * x + 1 ;

    # предсказывает следующее значение для данного (x, y)
    # и размер шага h методом Эйлера

    def predict(x, y, h):

    # значение следующего y (прогнозируемого) возвращается

    y1p = y + h * f(x, y);

    # исправляет прогнозируемое значение
    # с использованием модифицированного метода Эйлера

    def correct(x, y, x1, y1, h):

    # (x, y) предыдущего шага

    # и x1 — увеличенный x для следующего шага

    # и y1 прогнозируется y для следующего шага

    while ( abs (y1c — y1) > e + 1 ):

    y1c = y + 0.5 * h * (f(x, y) + f(x1, y1));

    # каждая итерация корректирует значение

    # у, используя средний наклон

    def printFinalValues(x, xn, y, h):

    y1p = predict(x, y, h);

    y1c = correct(x, y, x1, y1p, h);

    # на каждой итерации сначала значение

    # для следующего шага сначала прогнозируется

    # а затем исправлено.

    print ( «The final value of y at x =» ,

    if __name__ = = ‘__main__’ :

    # здесь x и y являются начальными

    # заданное условие, поэтому x = 0 и y = 0.5

    # конечное значение x, для которого требуется y

    printFinalValues(x, xn, y, h);

    # Этот код предоставлен Rajput-Ji

    // C # код для решения дифференциала
    // уравнение с использованием Predictor-Corrector
    // или модифицированный метод Эйлера с
    // заданные условия, y (0) = 0,5, шаг
    // размер (h) = 0,2, чтобы найти y (1)

    // рассмотрим дифференциальное уравнение
    // для заданных x и y возвращаем v

    static double f( double x, double y)

    double v = y — 2 * x * x + 1;

    // предсказывает следующее значение для данного (x, y)
    // и размер шага h с использованием метода Эйлера

    static double predict( double x, double y, double h)

    // возвращается значение следующего y (прогнозируемого)

    double y1p = y + h * f(x, y);

    // исправляет прогнозируемое значение
    // используя модифицированный метод Эйлера

    static double correct( double x, double y,

    double x1, double y1,

    // (x, y) предыдущего шага

    // и x1 — увеличенный x для следующего шага

    // и у1 прогнозируется у для следующего шага

    double e = 0.00001;

    y1c = y + 0.5 * h * (f(x, y) + f(x1, y1));

    while (Math.Abs(y1c — y1) > e);

    // каждая итерация корректирует значение

    // of y используя средний уклон

    static void printFinalValues( double x, double xn,

    double y, double h)

    double x1 = x + h;

    double y1p = predict(x, y, h);

    double y1c = correct(x, y, x1, y1p, h);

    // на каждой итерации сначала значение

    // для следующего шага сначала прогнозируется

    // а затем исправлено.

    Console.WriteLine( «The final value of y at x = » +

    x + » is : » + Math.Round(y, 5));

    static void Main()

    // здесь x и y являются начальными

    // заданное условие, поэтому x = 0 и y = 0.5

    double x = 0, y = 0.5;

    // конечное значение x, для которого требуется y

    printFinalValues(x, xn, y, h);

    // Этот код предоставлен mits

    // PHP-код для решения дифференциального уравнения
    // используя Predictor-Corrector или Modified-Euler
    // метод с заданными условиями, y (0) = 0,5,
    // размер шага (h) = 0,2, чтобы найти y (1)

    // рассмотрим дифференциальное уравнение
    // для заданных x и y возвращаем v

    function f( $x , $y )

    $v = $y — 2 * $x * $x + 1;

    // предсказывает следующее значение для данного (x, y)
    // и размер шага h с использованием метода Эйлера

    function predict( $x , $y , $h )

    // возвращается значение следующего y (прогнозируемого)

    $y1p = $y + $h * f( $x , $y );

    // исправляет прогнозируемое значение
    // используя модифицированный метод Эйлера

    function correct( $x , $y , $x1 , $y1 , $h )

    // (x, y) предыдущего шага и

    // х1 — увеличенный х для следующего шага

    // и у1 прогнозируется у для следующего шага

    $y1c = $y + 0.5 * $h * (f( $x , $y ) +

    > while ( abs ( $y1c — $y1 ) > $e );

    // каждая итерация корректирует

    // значение y с использованием среднего наклона

    function printFinalValues( $x , $xn , $y , $h )

    $y1p = predict( $x , $y , $h );

    $y1c = correct( $x , $y , $x1 , $y1p , $h );

    // на каждой итерации сначала значение

    // для следующего шага сначала прогнозируется

    // а затем исправлено.

    echo «The final value of y at x = » . $x .

    » is : » . round ( $y , 5) . «n» ;

    // здесь x и y являются начальными

    // заданное условие, поэтому x = 0 и y = 0.5

    // конечное значение x, для которого требуется y

    printFinalValues( $x , $xn , $y , $h );

    // Этот код предоставлен mits
    ?>

    Видео:Решение системы дифференциальных уравнений методом ЭйлераСкачать

    Решение системы дифференциальных уравнений методом Эйлера

    Метод Эйлера модифицированный.

    Для уменьшения погрешности вычислений часто используется модифицированный метод Эйлера. Этот метод имеет так же следующие названия: метод Эйлера-Коши или метод Рунге-Кутта второго порядка точности.

    Пусть дано дифференциальное уравнение первого порядка

    Модифицированный метод эйлера решения дифференциальных уравнений

    с начальным условием:

    Модифицированный метод эйлера решения дифференциальных уравнений

    Выберем шаг h и введём обозначения:

    yi — значение интегральной функции в узлах.

    При использовании модифицированного метода Эйлера шаг h делится на два отрезка.

    Иллюстрации к решению приведены на рисунке 4.

    Модифицированный метод эйлера решения дифференциальных уравнений

    Рисунок 4. Метод Эйлера модифицированный.

    Проведем решение в несколько этапов:

    2. Через точку А проведем прямую под углом α, где tg α = f(xi, yi);

    3. На этой прямой найдем точку С(хi + h/2, yi + h/2 ∙ f(xi, yi));

    4. Через точку С проведем прямую под углом α1, где tg α1 = f(xi + h/2,yi + h/2 ∙ f(xi, yi));

    5. Через точку А проведем прямую, параллельную последней прямой;

    7. После проведения вычислений, аналогичных вычислениям, описанным в методе Эйлера, получим формулу для определения значения уi+1:

    Модифицированный метод Эйлера дает меньшую погрешность. На рисунке 4 это хорошо видно. Так величина εl характеризует погрешность метода Эйлера, а ε — погрешность метода Эйлера модифицированного.

    Блок-схема процедуры решения дифференциального уравнения методом Эйлера модифицированным приведена на рисунке 5.

    EilerM(X0, Xk, Y0, N, Y)

    Модифицированный метод эйлера решения дифференциальных уравнений Модифицированный метод эйлера решения дифференциальных уравненийF(x, у) — заданная функция — должна

    Модифицированный метод эйлера решения дифференциальных уравненийбыть описана отдельно.

    h = (Xk – X0)/N

    Модифицированный метод эйлера решения дифференциальных уравнений Модифицированный метод эйлера решения дифференциальных уравненийВходные параметры:
    Х0, XК — начальное и конечное

    i = 0, …, N-1

    Модифицированный метод эйлера решения дифференциальных уравнений Модифицированный метод эйлера решения дифференциальных уравненийзначения независимой

    Модифицированный метод эйлера решения дифференциальных уравненийпеременной;

    x = X0 + i ∙ h

    Модифицированный метод эйлера решения дифференциальных уравненийY0 – значение y0 из начального условия

    Модифицированный метод эйлера решения дифференциальных уравненийy(x0)=y0;

    Yi+1 = Yi + h ∙ F(x + h/2, Yi + h/2 ∙ F(xi, yi))

    Модифицированный метод эйлера решения дифференциальных уравненийN — количество отрезков разбиения;

    Модифицированный метод эйлера решения дифференциальных уравненийY — массив значений искомого решения

    End

    Модифицированный метод эйлера решения дифференциальных уравненийв узлах сетки.

    Рисунок 5. Блок-схема процедуры решения дифференциального уравнения методом Эйлера модифицированным.

    Решение поставленной задачи методами Эйлера и Эйлера модифицированного.

    Метод Эйлера.

    1. Строим оси координат;

    2. Отмечаем A(0; -1.8) – первую точку интегральной кривой;

    3. Ищем угол наклона касательной к графику в точке A:

    Модифицированный метод эйлера решения дифференциальных уравнений

    Модифицированный метод эйлера решения дифференциальных уравнений

    Модифицированный метод эйлера решения дифференциальных уравнений

    Модифицированный метод эйлера решения дифференциальных уравнений

    4. Строим касательную l0 в точке А под углом α0;

    5. Находим х1 по формуле: xi = х0 + ih, где h – шаг интегрирования

    6. Проводим прямую x = x1 = 1,2 до пересечения с прямой l0, отмечаем точку B(x1; y1);

    7. Ищем y точки B:

    Из прямоугольного треугольника ABC Модифицированный метод эйлера решения дифференциальных уравнений,

    Следовательно, точка B имеет координаты (1.2; -1.8).

    Видео:Метод ЭйлераСкачать

    Метод Эйлера

    Модифицированный метод эйлера решения дифференциальных уравнений

    Variant 19 (Sukach Maxim, BS17-03)

    Модифицированный метод эйлера решения дифференциальных уравнений

    Модифицированный метод эйлера решения дифференциальных уравнений

    Найдем Модифицированный метод эйлера решения дифференциальных уравнений

    Модифицированный метод эйлера решения дифференциальных уравнений

    В итоге, наше решение принимает вид:

    Модифицированный метод эйлера решения дифференциальных уравнений

    Метод Эйлера дает возможность приближенно выразить функцию теоретически с любой наперед заданной точностью. Суть метода Эйлера в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Метод Эйлера является методом 1-го порядка точности и называется методом ломаных.

    Для вычисления используются следующие формулы:

    Модифицированный метод эйлера решения дифференциальных уравнений

    Модифицированный метод эйлера решения дифференциальных уравнений

    Метод Эйлера и точное решение при x0 = 0, xf = 9, y0 = 1, h = 0.1

    Модифицированный метод эйлера решения дифференциальных уравнений

    Метод Эйлера и точное решение при x0 = 0, xf = 3, y0 = 1, h = 0.1

    Модифицированный метод эйлера решения дифференциальных уравнений

    Метод Эйлера и точное решение при x0 = 0, xf = 1, y0 = 1, h = 0.1

    Усовершенствованный метод Эйлера

    Суть усовершенствованного метода Эйлера в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Усовершенствованный метод Эйлера является методом 2-го порядка точности и называется модифицированным методом Эйлера.

    Разница между данным методом и методом Эйлера минимальна и заключается в использовании следующих формул:

    Модифицированный метод эйлера решения дифференциальных уравнений

    Модифицированный метод эйлера решения дифференциальных уравнений

    Усовершенствованный Метод Эйлера и точное решение при
    x0 = 0, xf = 9, y0 = 1, h = 0.1

    Модифицированный метод эйлера решения дифференциальных уравнений

    Усовершенствованный Метод Эйлера и точное решение при
    x0 = 0, xf = 3, y0 = 1, h = 0.1

    Модифицированный метод эйлера решения дифференциальных уравнений

    Усовершенствованный Метод Эйлера и точное решение при
    x0 = 0, xf = 1, y0 = 1, h = 0.1

    Классический метод Рунге-Кутты

    Суть метода Рунге-Кутты в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Классический метод Рунге-Кутты является методом 4-го порядка точности и называется методом Рунге-Кутты 4-го порядка точности.

    Ну и как обычно, формулы:

    Модифицированный метод эйлера решения дифференциальных уравнений

    Модифицированный метод эйлера решения дифференциальных уравнений

    Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 9, y0 = 1, h = 0.1

    Модифицированный метод эйлера решения дифференциальных уравнений

    Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 3, y0 = 1, h = 0.1

    Модифицированный метод эйлера решения дифференциальных уравнений

    Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 1, y0 = 1, h = 0.1

    Сравнение методов для заданной задачи

    Модифицированный метод эйлера решения дифференциальных уравнений

    Размер ошибки всех методов на промежутке [0, 9] с шагом 0.1

    Модифицированный метод эйлера решения дифференциальных уравнений

    Размер ошибки всех методов на промежутке [0, 3] с шагом 0.1

    Модифицированный метод эйлера решения дифференциальных уравнений

    Размер ошибки всех методов на промежутке [0, 1] с шагом 0.1

    Очевидно что, классический метод Рунге-Кутты справляется с задачей аппроксимации в случае данного уравнения намного лучше чем Метод Эйлера и Усовершенствованный метод Эйлера.

    График глобальной средней ошибки

    Модифицированный метод эйлера решения дифференциальных уравнений

    Глобальная ошибка в зависимости от размера шага H на промежутке от 0.01 до 0.91 для x0 = 1, xf = 9

    🎬 Видео

    Линейное дифференциальное уравнение Коши-ЭйлераСкачать

    Линейное дифференциальное уравнение Коши-Эйлера

    Численное решение задачи Коши методом ЭйлераСкачать

    Численное решение задачи Коши методом Эйлера

    Дифференциальные уравнения. Задача Коши. Метод Эйлера.Скачать

    Дифференциальные уравнения. Задача Коши. Метод Эйлера.

    Дифференциальное уравнение. Формула ЭйлераСкачать

    Дифференциальное уравнение. Формула Эйлера

    МЗЭ 2022 Численное решение дифференциальных уравнений. Неявный метод Эйлера. Ложкин С.А.Скачать

    МЗЭ 2022 Численное решение дифференциальных уравнений.  Неявный метод Эйлера. Ложкин С.А.

    Пример решения задачи Коши методом Эйлера. Метод Эйлера с пересчетом.Скачать

    Пример решения задачи Коши методом Эйлера. Метод Эйлера с пересчетом.

    МЗЭ 2022 Численное решение дифференциальных уравнений Метод Эйлера Ложкин С. А.Скачать

    МЗЭ 2022 Численное решение дифференциальных уравнений  Метод Эйлера  Ложкин С. А.

    Метод Эйлера. Решение систем ДУСкачать

    Метод Эйлера. Решение систем ДУ

    Видеоурок "Системы диф. уравнений. Метод Эйлера"Скачать

    Видеоурок "Системы диф. уравнений. Метод Эйлера"

    5 Численное решение дифференциальных уравнений Part 1Скачать

    5  Численное решение дифференциальных уравнений Part 1

    метод Эйлера для решения ОДУСкачать

    метод Эйлера для решения ОДУ

    Метод Эйлера для дифурСкачать

    Метод Эйлера для дифур

    ШОК! Решение ДУ методом Эйлера! ПОХИЩЕНИЕ С СЮРПРИЗОМ!Скачать

    ШОК! Решение ДУ методом Эйлера! ПОХИЩЕНИЕ С СЮРПРИЗОМ!

    БРП3 МК52 решение ДУ метод ЭйлераСкачать

    БРП3 МК52 решение ДУ метод Эйлера

    Системы дифференциальных уравнений.Метод исключения.Метод Эйлера.Скачать

    Системы дифференциальных уравнений.Метод исключения.Метод Эйлера.

    Численные методы решения ДУ: метод ЭйлераСкачать

    Численные методы решения ДУ: метод Эйлера

    5 Численное решение дифференциальных уравнений Part 1Скачать

    5  Численное решение дифференциальных уравнений Part 1
  • Поделиться или сохранить к себе: