![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Эйлера модифицированного (ЭМ) и Эйлера усовершенствованного (ЭУ).
Наиболее удобным и почти универсальным методом оценки точности методов Рунге-Кутта является сравнение используемых алгоритмов с рядом Тейлора. Поскольку известно, что ошибка вычисления функции по ряду Тейлора не превосходит первого отброшенного слагаемого ряда. Решаем уравнение
Сравнивая алгоритм Эйлера и алгоритм ряда Тейлора, видим совпадение 2х слагаемых, следовательно, порядок точности метода Эйлера 0(Δ t). В данном случае первое отброшенное слагаемое равно Запишем обобщенную формулу алгоритмов метода Рунге-Кутта в виде записана как полусумма производных в точках t и t+Δ t, т.е. в соответствии с методом ЭМ. При этом значение x (t+Δ t) получено методом Эйлера:
Используя обобщенный алгоритм Производная взята в средней точке интервала t+Δ t, а значение x в этой точке получено методом Эйлера:
Представим слагаемые ряда (4.6) в следующем виде:
где введены следующие обозначения: Чтобы оценить значения f для методов ЭМ и ЭУ разложим f(x, t) в ряд Тейлора:
Используя вместо x и t значения xi+1 и ti+1 = ti+Δ t, определим значение Подставим ее в (4.) и получим Аналогичным образом получим функцию Приведем программы методов ЭМ и ЭУ на MATLAB: function EylerY x=0; t=0; display(x) display(t) dt=1; for m=1: 6 dx=FunkEMY(x); x1=x+dx*dt; dx1=FunkEMY(x1); x=x+0.5*(dx+dx1)*dt t=t+dt end function dx=FunkEMY(x) k=1; u=1; Tau=1; dx=0; dx=(k*u-x)/Tau; function EylerM x=0; t=0; display(x) display(t) dt=1; for m=1: 6 dx=FunkEMY(x); x1=x+0.5*dx*dt; dx1=FunkEMY(x1); x=x+dx1*dt t=t+dt end
|