Мегаобучалка Главная | О нас | Обратная связь


Метод Рунге - Кутта 1-го порядка (метод Эйлера)



2016-09-17 499 Обсуждений (0)
Метод Рунге - Кутта 1-го порядка (метод Эйлера) 0.00 из 5.00 0 оценок




Отбросим члены ряда, содержащие h2, h3, h4:.

Тогда .так как

Получим формулу Эйлера:

 

Точность метода Эйлера на каждом шаге составляет .

Основной недостаток метода Эйлера - систематическое накопление ошибок. Поэтому его рекомендуется применять для при малых значениях шага интегрирования h.

Реализуем этот метод на C#. Сначала реализуем абстрактный класс, который будет использован для конструирования различных методов построения численных решений систем обыкновенных дифференциальных уравнений.

public abstract class TODE {

private int n;//размерность системы

private double t;// текущее время

private double[] y;// искомое решение y[0] – само решение,

// Y[i] - i-ая производная решения

public double T

{get{return t;}

set{t=value;}}

public int N

{get{return n;}

set{n=value;}}

public double [] Y

{get{return y;}

set{y=value;}}

protected double[] YY; // внутренние переменные

public TODE(int nn)

{N = nn;

YY = new double [N]; Y = new double [N]; }

// установить начальные условия.

// t0 - начальное время, Y0 - начальное условие

public void Setlnit(double tO, double[] Y0)

{T = tO; int i;

for (i = 0; i < N; i++) {Y[i] = Y0[i] ;}}

abstract public void F(double t, double [] Y, ref double[] FY); // правые части системы.

// следующий шаг, dt - шаг по времени

abstract public void NextStep(double dt);}

На основе этого класса построим класс, реализующий метод Эйлера.

public abstract class TEuler : TODE

{public TEuler(int N) : base(N) { }

public override void NextStep(double dt)

{int i;F(T, Y, ref YY);

for (i = 0; i < N; i++) {

Y[i] = Y[i] + dt * YY[i];}

T = T + dt; } }

Метод Рунге - Кутта 2-го порядка (модифицированный метод Эйлера)

Отбросим в члены ряда, содержащие h3, h4, h5:.

Тогда

 

Чтобы сохранить член ряда, содержащий h2, надо определить вторую производную y"(xi).Ее можно аппроксимировать разделенной разностью 2-го порядка

Подставляя это выражение, получим

Окончательно, модифицированная формула Эйлера имеет вид:

 

Как видно, для определения функции y(x) в точке i+1 необходимо знать значение правой части дифференциального уравнения f(xi+1, yi+1) в этой точке, для определения которой необходимо знать предварительное значение yi+1.

Для определения предварительного значения yi+1 воспользуемся формулой Эйлера. Тогда все вычисления на каждом шаге по модифицированной или уточненной формуле Эйлера будем выполнять в два этапа:

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

На втором этапе уточняем значение y=i+1 по модифицированной формуле Эйлера

Точность модифицированного метода Эйлера на каждом шаге .



2016-09-17 499 Обсуждений (0)
Метод Рунге - Кутта 1-го порядка (метод Эйлера) 0.00 из 5.00 0 оценок









Обсуждение в статье: Метод Рунге - Кутта 1-го порядка (метод Эйлера)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (499)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)