Устойчивость методов полиномиальной аппроксимации
При анализе устойчивости метода полиномиальной аппроксимации обычно обращаются к тестовой задаче Коши где - комплексный параметр. Применим алгоритм (22) к решению задач (38), получим Преобразуем (39) в эквивалентное разностное уравнение где . Положив в (40) , получим после сокращения на многочлен степени : Многочлен (41) будем называть характеристическим многочленом метода полиномиальной аппроксимации (22). Общее решение разностного уравнения (40) определяется выражением где - различных корней характеристического многочлена (41), - произвольные постоянные, значения которых находятся из стартовых значений решения. Если характеристический многочлен (41) имеет кратный корень ( - его кратность), то соответствующее слагаемое в формуле (42) общего решения будет иметь вид Заметим, что если , то при (даже в том случае, когда корень - простой). Если - корень кратности и , то из (43) следует, что при . Замечание.При значение является простым корнем характеристического многочлена тогда и только тогда, когда . Теорема(критерий устойчивости методов полиномиальной аппроксимации). Состоятельный метод полиномиальной аппроксимации (22), удовлетворяющий условию , устойчив (в том смысле, что локальная алгоритмическая ошибка метода и ошибка округления остаются ограниченными при достаточно малой величине шага ) тогда и только тогда, когда все корни многочлена таковы, что , а те корни, для которых , простые. Корни многочлена (44) принято называть паразитными. Замечание.Методы Адамса-Башфорта и Адамса-Мултона устойчивые. Действительно, для этих методов , . Поэтому . Здесь все корни многочлена равны нулю и, следовательно, лежат внутри единичного круга. Обозначим через - решение уравнения со стартовыми значениями ( ). Теорема (оценка глобальной погрешности многошагового метода полиномиальной аппроксимации). Пусть выполнены следующие условия: 1. Правая часть дифференциального уравнения определена непрерывна в области и существует константа , не зависящая от такая, что в области
2. Пусть - точное решение уравнения задачи Коши (1) имеет на отрезке непрерывные производные до порядка , . 3. Метод полиномиальной аппроксимации (22) является состоятельным и . 4. При достаточно малом все корни многочлена таковы, что , а те корни, для которых , простые.
Тогда для глобальной ошибки метода (22) справедлива оценка
где , , -локальная ошибка округления на -ом шаге, - постоянные, зависящие от коэффициентов формулы (22) и правой части дифференциального уравнения и независящие от , . Из (45) следует, что глобальная ошибка метода полиномиальной аппроксимации состоит из трех частей: 1) ошибка при вычислении стартовых значений, 2) суммарная алгоритмическая ошибка метода, характеризуемая величиной , убывающая с уменьшением , 3) ошибка округления, представленная членом , который растет с уменьшением . Погрешность, очевидно, растет с увеличением длины отрезка, на котором разыскивается решение. Замечание.Все описанные методы решения задачи Коши (1) переносятся на системы дифференциальных уравнений где или ……. Формулы сохраняются в прежнем виде, нужно только заменить на , на . В оценках погрешности абсолютная величина заменяется на норму вектора. 6. Задание.Найдите на отрезке решение задачи Коши для системы обыкновенных дифференциальных уравнений
с точностью , методами Рунге-Кутта, Адамса-Башфорта четвертого порядка и прогноза-коррекции (используя для прогноза алгоритм (37) и коррекции – метод Адамса-Мултона четвертого порядка). Варианты заданий.
Приложение.Для выполнения задания можно использовать следующие процедуры (на языке Паскаль):
1) Процедура rung, реализующая алгоритм метода Рунге-Кутта четвертого порядка (18):
Procedure rung(h:real; var x0:real;var y0:vector; n:integer); {Входные параметры: h – шаг интегрирования системы; x0 – стартовое значение аргумента; y0 – массив, содержащий значения решения системы в точке x0; n - размерность системы. Выходные параметры: y0 – массив, содержащий значения решения системы в точке x0+h. Здесь vector - одномерный массив порядка n} var i:integer; begin f(x0,y0,k1); for i:=1 to n do yt[i]:=y0[i]+0.5*h*k1[i]; f(x0+0.5*h,yt,k2); for i:=1 to n do yt[i]:=y0[i]+0.5*h*k2[i]; f(x0+0.5*h,yt,k3); for i:=1 to n do yt[i]:=y0[i]+h*k3[i]; f(x0+h,yt,k4); x0:=x0+h; for i:=1 to n do y0[i]:=y0[i]+(h/6)*(k1[i]+2*k2[i]+2*k3[i]+k4[i]) end;
2) Процедура ad , реализующая алгоритм метода Адамса-Башфорта четвертого порядка (см. Таблицу 1):
Procedure ad(h:real;var yt:start;var y0:vector); {Входные параметры: h – шаг интегрирования системы; yt – двумерный массив порядка (n,4)(n-размерность системы),столбцы которого являются решениями системы в четырех стартовых точках. Выходные параметры: y0 – массив, содержащий решение системы в точке, отстоящей на 4h от первой стартовой. Здесь start – двумерный массив порядка (n,4), vector - одномерный массив порядка n, kof – одномерный массив порядка 4.} var i,j:integer; kf:kof; begin kf[1]:=-9.0/z; kf[2]:=37.0/z; kf[3]:=-59.0/z; kf[4]:=55.0/z; for i:=1 to n do for j:=1 to 4 do y0[i]:=y0[i]+h*yt[j,i]*kf[j] end; 3) Процедура ad_mult, реализующая алгоритм метода прогноза-коррекции: прогноз - явный метод (37), коррекция - метод Адамса-Мултона четвертого порядка (см. Таблицу 2).
Procedure ad_mult(x0,h,eps:real;ys:start;var yc:vector); { {Входные параметры: x0 – первая стартовая точка решения системы; h - шаг интегрирования системы; eps- значение в условии окончания итерационного процесса при коррекции решения ; ys – двумерный массив порядка (n,3) (n-размерность системы), столбцами которого являются решения системы в трех стартовых точках. Выходные параметры: yc - массив, содержащий решение системы в точке, отстоящей на 3h от первой стартовой. Здесь start – двумерный массив порядка (n,3), vector - одномерный массив порядка n, kof – одномерный массив порядка 4.} var i,j :word; yt :start; { yp,y :vector; { ka_m :kof; x :real; begin yp:=ys[3]; for j:=1 to 3 do f(x0+j*h,ys[j+1],yt[j]); ka_m[1]:=1/z; ka_m[2]:=-5/z; ka_m[3]:=19/z; ka_m[4]:=9/z; for i:=1 to n do yp[i]:=yp[i]+2*h*yt[3,i]; {прогноз} f(x0+4*h,yp,yt[4]); yc:=ys[4]; for i:=1 to n do for j:=1 to 4 do yc[i]:=yc[i]+h*yt[j,i]*ka_m[j]; while nr(yp,yc)>=eps do {nr – имя функции,вычисляющей норму разности двух векторов} begin yp:=yc; y:=ys[4]; f(x0+4*h,yc,yt[4]); for i:=1 to n do for j:=1 to 4 do y[i]:=y[i]+h*yt[j,i]*ka_m[j]; yc:=y end end; function nr(z,z1:vector):real; {vector - одномерный массив порядка n} var i :word; q :real; begin q:=0; for i:=1 to n do if abs(z1[i]-z[i])>=q then q:=abs(z1[i]-z[i]); nr:=q end;
Составитель – Трофимов Валерий Павлович Редактор - Бунина Т.Д.
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (538)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |