Глава III. Численная диагностика особенностей точного решения. Глава III. ЧИСЛЕННАЯ ДИАГНОСТИКА ОСОБЕННОСТЕЙ ТОЧНОГО РЕШЕНИЯ. Рассмотрен вопрос диагностики особенностей точного решения дифференциальных уравнений при численном интегрировании по наиболее употребимым схемам. Показано, что одностадийная схема Розенброка с комплексным коэффициентом, изначально предложенная для жестких задач, позволяет избежать переполнения счета при расчетах плохообусловленых задач. Теоретически обоснован и проиллюстрирован на примерах алгоритм, позволяющий диагностировать тип сингулярности и другие особенности точного решения при расчетах на сгущающихся вложенных сетках с использованием схемы Розенброка с комплексным коэффициентом. На примере программы интегрирования задачи Коши для обыкновенного дифференциального уравнения проиллюстрированы принципы написания программ расчетов с контролем точности и диагностикой особенностей. §1. Обзор проблемы и методов ее решения. 1. История. Предположим, что существует некоторый алгоритм решения определённого класса задач. Предположим так же, что есть конкретная задача, точное решение которой имеет особенность в какой-либо точке. Возникает вопрос: можно ли по результатам работы численного алгоритма понять, в какой точке решение имеет особенность и какого рода эта особенность. Такая проблема была поставлена в 2003 году на семинаре академика Г.И. Марчука в Институте вычислительной математики РАН. Тогда был предложен следующий пример: задача Коши для обыкновенного дифференциального уравнения (ОДУ) du u 2 , 0 t , u 0 u0 0 . dt (1) Точное решение выглядит следующим образом: u t Оно имеет полюс при u0 1 u0t t* 1 u0 и не существует при t t* . Будем численно решать задачу (1), например, по явной схеме Рунге-Кутта порядка точности O() с постоянным шагом u0 u 0 ; uˆ u u 2 , n 0,1,...; tn n (2) здесь u , uˆ численное решение на текущем и последующем временных слоях соответственно. Численное решение (2) положительно, монотонно возрастает и существует при сколь угодно больших t n . По его виду невозможно сделать вывод о наличии полюса у точного решения. Кажется, что точное решение быстро возрастает и существует при любых t 0 . Такое же качественное поведение дают явные схемы Рунге-Кутта более высоких порядков точности. 85 Глава III. Численная диагностика особенностей точного решения. В данной работе приводится методика диагностики решения на наличие особенностей. Она основана на приеме сгущения сеток и позволяет выявлять не только сингулярности решения, но и более тонкие особенности: например, ограниченность числа непрерывных производных. 2. Разностные схемы интегрирования ОДУ. Рассмотрим задачу Коши для системы ОДУ du F u , t , u 0 u0 , 0 t . dt (3) Здесь u t неизвестная вектор-функция, а F u, t известная вектор-функция той же размерности. Для численного интегрирования (3) используются различные схемы. Из явных схем наиболее распространены схемы Рунге-Кутты (explicit Runge-Kutta schemes ERK). Для них легко строятся схемы высокого порядка точности, разработана методика автоматики выбора шага, они просты в реализации и включены в стандартные пакеты математических программ. Здесь мы ограничимся рассмотрением схем ERK до четвертого порядка точности включительно. Формулы для них приведены во всех стандартных учебниках по численным методам [Калиткин Н.Н., 1978]. В практически важных расчетах очень часто возникают так называемые жесткие системы. К ним относятся задачи химической кинетики, радиоэлектроники и многие другие. Явные схемы для решения таких задач совершенно неприменимы. Подробный обзор методов интегрирования жестких систем можно найти, например, в [Хайрер Э., Ваннер Г., 1996]. Среди неявных схем стоит отметить однопараметрическое семейство схем Розенброка (ROS). Формулы одностадийной схемы Розенброка для нахождения сеточного решения задачи (3) на новом временном слое û имеют вид [Rosenbrock H.H., 1963] uˆ u Re k ; E F u k F u, t 0.5 здесь F u – матрица Якоби, вычисленная в точке u, t , E – единичная матрица, – численный параметр. Таким образом, для перехода на новый временной слой требуется решить систему линейных алгебраических уравнений (СЛАУ) с матрицей E F u . Порядок линейной системы равен размерности задачи (3). Решение линейной системы в (4) следует выполнять прямыми методами, проводя вычисления с максимально доступной разрядностью. При этом переход с исходного временного слоя на новый производится за конечное, заранее известное число операций, как в явных схемах. Такие схемы называют явно–неявными. Для жестких систем необходима, по меньшей мере, A-устойчивость, что достигается при 0.5 . Однако 0.5 приводит к сильной немонотонности, ухудшающей качественное поведение численного решения. 86 (4) Глава III. Численная диагностика особенностей точного решения. При 1 получается чисто неявная схема, которую обозначим ROS1. Она совпадает с обратной схемой Эйлера. Эта схема L1 – устойчива и монотонна, что обеспечивает гораздо лучшее качественное поведение численного решения. Однако ее точность O невысока, что препятствует ее широкому применению. Существует [Rosenbrock H.H., 1963] одна комплексная схема (CROS) из семейства (4) с 1 i 2 . Она была предложена в основополагающей работе [Rosenbrock H.H., 1963], но до сих пор остаётся мало известной, и даже в классической монографии [Хайрер Э. и др, 1990], [Хайрер Э., Ваннер Г., 1996] отсутствует , L2 упоминание о ней. Эта схема обладает уникальными свойствами: точность O 2 – устойчивость [Калиткин Н.Н., Кузьмина Л.В.], монотонность на линейных задачах, высокая надежность и пригодна для расчета задач с сильной жесткостью. Именно эта схема успешно используется членами нашей научной группы на протяжении многих лет для расчетов самых разнообразных задач, включая системы уравнений в частных производных [Калиткин Н.Н., Кузьмина Л.В.], [Гужев Д.С., Калиткин Н.Н.], [Гужев Д.С., Калиткин Н.Н.], [Н.Н. Калиткин и др., 2005] и др. Комплексный параметр входит только в СЛАУ (что не вызывает затруднений), а сами функции остаются функциями вещественного аргумента. §2. Схема CROS для задач с сингулярностью. Для систем дифференциальных уравнений возможны случаи особенностей одной, нескольких или всех компонент решения. Логический анализ в этих случаях за частую весьма громоздкий, поэтому сначала для простоты рассмотрим случай автономной задачи для одного обыкновенного дифференциального уравнения. 1. Степенная особенность. Пусть вблизи точки t функция имеет особенность u t* t . При 0 это разрыв второго рода u t . При 1 0 это корневая особенность и u t . Тогда вблизи особенности u t удовлетворяет дифференциальному уравнению: 1 1 du u F u dt (5) с начальным условием u 0 t* 0 . Применительно к (5) семейство одностадийных схем Розенброка выглядит следующим образом u11 uˆ u Re k Re 1 1 u1 (6) При использовании схемы CROS с 1 i 2 , (6) принимает вид uˆ u u 11 1 0.5 1 u1 1 0.5 1 u 0.5 1 u 1 2 87 1 2 . (7) Глава III. Численная диагностика особенностей точного решения. Из вида (7) следуют несколько легко доказываемых утверждений. Утверждение 1. Существует значение u 2 1 (8) положение равновесия, при котором численное решение схемы CROS не меняется при переходе на следующий временной слой û : û u . Утверждение 2 (свойство притяжения). При u u приращение функции uˆ u 0 и, наоборот, при u u приращение функции uˆ u 0 . Т.е. при любом значении u на текущем временном слое, следующий шаг схема CROS делает по направлению к положению равновесия u 2 1 . Выясним условия устойчивости этого положения равновесия схемы CROS. Пусть на очередном временном слое численное решение u u 1 , то есть его u составляет . На следующем временном слое uˆ u 1 ˆ , т.е. отличие составит ̂ . Положение равновесия u будет устойчиво, относительное отличие от если ̂ . <-1 1,5 >1 1,0 0<<1 0,5 -1<<0 0,0 -0,5 -0,9 -0,6 -0,3 0,0 0,3 0,6 0,9 Рис. 1. Зоны устойчивости положения равновесия u . 88 Глава III. Численная диагностика особенностей точного решения. Из (7) следует, что 1 1 2 11 ˆ . 1 1 2 2 1 1 1 1 1 (9) На рис. 1 показана величина ˆ , . Области серого цвета на рисунке показывают зоны, в которых (9) осуществляет сжимающее отображение. Видно, что при 1 численное решение u стремится к своему предельному значению u монотонно. При 0 1 вблизи u возможна немонотонность (смена знака ), но каждое следующее значение û лежит ближе к u , чем предыдущее ( ̂ ). 1 0 вблизи положения равновесия u расположены зоны «неустойчивости» (белая и черная области на рис. 1), когда û может оказаться дальше от u , чем u ( ̂ ). Численное решение стабилизируется в полосе вокруг u , При ширина которой равна расстоянию до зоны «устойчивости» (области серого цвета на рис. 1). Границы этой полосы, вообще говоря, не симметричны относительно u . При 0.5 0 амплитуда колебаний численного решения u вокруг положения равновесия не превосходит u . ˆ 1 1,5 ˆ 1 1,0 0 ˆ 1 1 ˆ 0 0,5 0,0 -0,5 -0,9 -0,6 -0,3 0,0 0,3 0,6 0,9 Рис. 2. Относительное уклонение численного решения от положения равновесия временном слое. 89 ˆ , на новом Глава III. Численная диагностика особенностей точного решения. Рассмотрим ˆ , относительное уклонение û от u . Оно приведено на Хорошо видно, что при 1 0.5 всегда существует ситуация, когда ˆ 1 (черная зона на рис. 2). При этом û отрицательно, и дальнейшие вычисления правой части в (5) невозможны (возникает многозначная функция). рис.2. При 1 0.5 ширина полосы, в которой стабилизируется численно решение, такова, что û принимает отрицательные значения, что неадекватно с точки зрения точного решения uexact t 0 и приводит к возникновению многозначной функции в правой части (5). Этот случай требует осторожности при написании программ (об этом будет сказано в разделе, посвященном написанию программ). Таким образом, Утверждение 3. При особенности точного решения ОДУ типа «полюса» 0 численное решение схемы CROS стремится к пределу u . При особенности типа корня 1 0 численное решение схемы CROS стабилизируется в полосе вокруг положения равновесия u . 2. Логарифмическая особенность. Пусть вблизи точки t точное решение имеет не степенную, а логарифмическую особенность u сингулярности функция удовлетворяет ОДУ ln t t . Тогда вблизи du eu F u dt (10) с начальным условием u 0 ln t . Применительно к этому уравнению схема CROS дает uˆ u 1 0.5eu u , e u 2 u 2 1 0.5 e 0.5 e откуда следует Утверждение 4. Существует положение равновесия u ln 2 ln , (11) при котором численное решение схемы CROS не меняется при переходе на следующий временной слой. В случае логарифмической особенности так «притяжения» положения равновесия схемы CROS: 90 же справедливо свойство Глава III. Численная диагностика особенностей точного решения. Утверждение 5. При u u приращение функции uˆ u 0 и, наоборот, при u u приращение функции uˆ u 0 . Рассуждая аналогично случаю степенной особенности, можно сформулировать Утверждение 6. В случае логарифмической особенности положение равновесия u ln 2 ln схемы CROS асимптотически устойчиво. 3. Экспоненциальный рост. Если при стремлении к точке t слева точное решение расчет экспоненциально u exp1 t t . Тогда вблизи сингулярности функция удовлетворяет ОДУ du 2 u ln u F u dt (12) с начальным условием u 0 exp1 t* . Применительно к этому уравнению схема CROS дает 1 0.5 ln 2 u 2ln u uˆ u 2 u ln u 2 1 0.5 ln 2 u 2ln u 0.5 ln 2 u 2ln u 2 , откуда следует Утверждение 7. Существует положение равновесия u exp 2 1 1 , при котором численное решение схемы CROS не меняется при переходе на следующий временной слой. В силу монотонности Fu свойством «притяжения»: положение равновесия и в этом случае обладает Утверждение 8. При u u приращение функции uˆ u 0 и, наоборот, при u u приращение функции uˆ u 0 . Рассуждая аналогично случаю степенной особенности, можно сформулировать Утверждение 9. В случае экспоненциальной особенности положение равновесия u exp 2 1 1 схемы CROS асимптотически устойчиво. 91 (13) Глава III. Численная диагностика особенностей точного решения. 4. Результаты расчетов задач с сингулярностью. Для подтверждения полученных выше теоретических результатов проведем результаты тестовых расчетов. Во всех расчетах была выбрана равномерная сетка по времени. Случай использования квазиравномерных сеток будет проиллюстрирован ниже. Качественное поведение численного решения вблизи сингулярности существенно отличается для явных (ERK) и неявных (ROS) схем. Для степенной особенности (5) типа полюса 0 все схемы семейства ERK дают монотонно возрастающее решение. Рост численного решения тем стремительнее, чем выше порядок точности схемы. Вскоре после прохождения точки t , в которой точное решение имеет полюс, наступает переполнение в расчетах и дальнейший счет невозможен. Такое качественное поведение решения неприятно, потому что пользователю трудно разобрать истинную причину переполнения. На рис. 3 показаны результаты расчетов задачи (5) с начальным условием u 0 1 по схемам ERK и ROS для 1 и t 1 . В приведенном расчете шаг сетки 0.0002 . Штриховыми линиями показаны u 0 и асимптота точного решения t t . Хорошо видно, что кривые численного решения для всех схем ERK пересекают асимптоту точного решения. 14000 ERK4 EXACT ERK1 12000 ERK2 10000 8000 u(t) 6000 CROS 4000 2000 0 ROS1 -2000 0,995 1,000 1,005 t Рис. 3. Численное решение задачи явными и неявными схемами вблизи особенности типа полюса. Для неявных схем картина другая. Сначала решение схемы ROS1 растет, но еще до полюса оно срывается в область отрицательных значений. Вычисления правой части (5) 92 Глава III. Численная диагностика особенностей точного решения. при этом не вызывает затруднений лишь для 1 , иначе возникает возведение отрицательного числа в дробную степень. При расчетах схемой CROS численное решение монотонно растет до полюса и стабилизируется на постоянном значении после его прохождения. Высота «полочки» тем выше, чем мельче шаг сетки. В случае использования CROS переполнения не наступает и как будет показано ниже возможно не только установить момент сингулярности точного решения, но и диагностировать тип сингулярности по зависимости u . Аналогичное качественное поведение дают ERK и ROS схемы вблизи логарифмической особенности: решение по схеме CROS стабилизируется (не монотонно) на уровне u , для ROS1 вблизи особенности характерна смена знака численного решения, расчет по схемам ERK приводит к переполнению вскоре после t . Численное решение для ERK и ROS схем вблизи корневой особенности показано на рис. 4. Результаты расчета приведены для 0.3 и t 1 . Штриховая линия асимптота точного решения t t . В приведенном расчете шаг сетки 0.0005 . Численное решение по явным схемам ERK пересекают асимптоту при u 0 и практически сразу за особенностью t расчет срывается в область отрицательных значений. Численное решение схемы CROS стабилизируется в полосе вокруг u , границы полосы не симметричны относительно положения равновесия u . Численное решение схемы ROS1 срывается в область отрицательных значений и дальнейшие вычисления не возможны. Иногда этому срыву предшествуют резкие скачки решения в области положительных значений, что также не соответствует качественному поведению точного решения. 93 Глава III. Численная диагностика особенностей точного решения. u(t) 0,16 0,14 0,12 0,10 0,08 ROS1 CROS 0,06 0,04 ERK2 EXACT ERK1 0,02 ERK4 0,00 0,997 0,998 0,999 1,000 1,001 1,002 1,003 1,004 t Рис. 4. Численное решение явными и неявными схемами вблизи корневой особенности 0.3 . При корневой особенности со степенью 1 0.5 численное решение схем ERK и ROS1 монотонно убывает и срывается область отрицательных значений. При использовании схемы CROS также возникают отрицательные значения численного решения, но до этого решение успевает сделать несколько колебаний вокруг положения равновесия u 0 ; число этих колебаний тем больше, чем мельче шаг сетки. Это и позволяет на практике определять зависимость u , которое и используется для диагностики . 94 Глава III. Численная диагностика особенностей точного решения. u(t) 0.75 uexact=(1 - t) 0,2 CROS 0,0 ROS1 ERK4 ERK1 ERK2 -0,2 0,8 1,2 1,0 1,4 t Рис. 5. Численное решение явными и неявными схемами вблизи корневой особенности при 0.75 . Во многом от того, как написана программа вычисления правой части (5), будет зависеть картина решения. Например, при использовании языка Fortran попытка присвоить действительной величине F u значение многозначной комплексной функции приводить к «зависанию» программы. Имеет смысл прекращать расчет при первом же возникновении подобной ситуации. Да и точное решение задачи в этой области уже не существует. Именно результат такой организации вычислений приведен на рис. 5. При использовании в расчетах среды MatLab картина решения несколько иная. В этом математическом пакете преобразование типов переменных происходит без ведома 1 1 пользователя. Если на очередном шаге возникает u t 0 , то F u u принимает комплексное значение (по умолчанию выбирается главная ветвь многозначной функции). Так как при вычислении û в (4) используется Rek , то û остается величиной действительной и расчет продолжается, выдавая совершенно неадекватный с точки зрения точного решения задачи (5) результат u t 0 . Причем на вид решение гладкое и ни что не наводит пользователя на мысль, что точное решение задачи разрушается. 95 Глава III. Численная диагностика особенностей точного решения. На рис. 5 приведены результаты расчета схемой CROS задачи (5) в среде Fortran для 0.75 и t 1 . Штриховыми линиями показаны u 0 и асимптота точного решения t t . В приведенном расчете шаг сетки 0.2 . 5. Эффективный порядок точности. В главе I описан алгоритм расчетов с контролем точности при последовательном сгущении сетки. Применительно к задаче интегрирования ОДУ этот алгоритм выглядит следующим образом. Будем проводить t ,0 n N . N расчеты на семействах вложенных сеток n Для простоты сетки возьмем равномерными. По результатам расчетов на двух сетках с числом узлов N и rN погрешность численного решения RrN t в совпадающих узлах t этих сеток может быть вычислена по формуле RrN t u rN t u N t o r 1 p N , p (14) здесь p теоретический порядок точности схемы. 2 По результатам расчетов на трех соседних сетках N , rN , r N можно вычислить эффективный порядок точности схемы prN eff t При сгущении сетки ln RN t ln RrN t . ln r (15) pN eff p для функций, имеющих необходимое число N непрерывных ограниченных производных. Оценка (14) для таких функций асимптотически точна при N . Например, схема CROS реализует свой теоретический порядок точности для непрерывно дифференцируемых функций с ограниченной второй производной. Если само решение либо его производная обращаются в бесконечность, то, как следует из утверждений 19, существует положение равновесия численного решения схемы CROS u . Используя величину u для определения эффективного порядка точности схемы CROS при t t* по формуле (15), получим Утверждение 10. u t t* t p eff при При наличии в узлах t t* сингулярности точного решения типа эффективный порядок точности схемы CROS N 1 0 . Замечание. Случай 1 соответствует «нулю» решения, причем решение стремится к нулю пропорционально степени u t t* t . Все сказанное выше относительно степенной особенности верно и в этом случае. Утверждение 10 для 96 Глава III. Численная диагностика особенностей точного решения. 1 позволяет диагностировать «кратность нуля». Эффективный порядок точности схемы CROS в нуле t* и всех последующих контрольных точках будет так же равен , что может оказаться «лучше» теоретического значения p 2 . Утверждение 11. При в наличии сингулярности точного решения типа t t* узлах погрешность схемы CROS u t ln t* t ln r N t p o N p , а p eff 0 при r 1 N 1 0 . Утверждение 12. При экспоненциальном росте точного решения u t exp 1 t* t в узлах t t* эффективный порядок точности схемы CROS p eff при N 1 0 . eff Таким образом, проводя расчеты с контролем точности и вычисляя p по (15), мы почти бесплатно получаем возможность диагностировать момент разрушения решения t* , а величина p eff в точках t t* однозначно определяет асимптотику заранее неизвестного точного решения при t t* 0 . u(t) 0,10 0.45 uexact=(1-t) 0,08 u* 0,06 0,04 0,02 0,00 1,0 1,2 1,4 t Рис. 6. В случае особенности типа корня, численное решение схемы CROS стабилизируется в полосе вокруг u , ширина которой не превосходит u . 97 Глава III. Численная диагностика особенностей точного решения. Положение равновесия. Предложенный алгоритм диагностики типа сингулярности основан на контроле за величиной u . Если численное решение стремится к этому положение равновесия монотонно, то в качестве приближенного значения u можно брать любое значение u t , t t* . Но, как было показано выше, положение равновесия схемы CROS не всегда достигается монотонно или даже численное решение стабилизируется в полосе вокруг u . В этих случаях для определения u полезно использовать свойство притяжения, согласно которому u лежит ниже самого низкого локального максимума, но выше самого высокого локального минимума. Алгоритм выбора u в достаточно сложном случае иллюстрирует рис. 6. Если численное решение стабилизируется в некоторой полосе вокруг u , то значение u можно выразить формулой u* min{max loc (u(t ))} max{min loc (u(t ))} . 2 (16) Значения min{max loc (u (t ))},max{min loc (u (t ))} в (16) берутся по тем, точкам, где p eff существенно отличается от теоретического значения 2 (что свидетельствует о разрушении решения). Стоит заметить, что в случае 1 0.5 , как это было показано выше, решение делает лишь несколько колебаний вокруг u , затем принимает отрицательное значение и счёт разваливается. При этом методика определения u остаётся той же, но точность становится несколько хуже. Тем ни менее, мы гарантированно сможем определить тип особенности, но значение получим с относительно невысокой точностью. Для более точного определения значения следует делать мельче шаг сетки. 6. Алгоритм диагностики сингулярности. На основе утверждений 112 построим алгоритм диагностики типа сингулярности заранее неизвестного точного решении задачи Коши для ОДУ при расчетах схемой CROS на вложенных сгущающихся сетках. Будем вести расчет, используя семейство равномерных или квазиравномерных сеток tn . При сгущении в целое число раз r узлы стартовой сетки являются узлами всех более густых сеток, в этих точках и будем контролировать погрешность численного решения, используя асимптотически точную оценку (14). Пусть проведен расчет на 0 k K сетках с числом узлов N k r N 0 . Число узлов стартовой сетки выбирается разумным и не очень большим. Во всех N K 1 r K 1N 0 узлах последней сетки N K можно оценить погрешность RN K t , в k N K 2 r K 2 N 0 узлах самой подробной сетки известен эффективный порядок точности pNeffK t . Эти N K 2 r K 2 N 0 точки назовем контрольными, в них мы сможем гарантировать точность найденного решения. 98 Глава III. Численная диагностика особенностей точного решения. Пусть поставлена задача найти решение (3) с абсолютной погрешностью не хуже eff заданного . В утверждениях 1012 речь идет о предельном значении p t при N . Для оценки этого предельного значения используем «предысторию» eff вычисления pNk t на предыдущих сетках 2 k K . Число членов в такой последовательности в разных контрольных точках может быть от 1 до K 2 . Если eff значения pNk t изменяются монотонно с ростом k , то в качестве предельного t pNeff t значения p значения eff k на практике разумно выбирать последнее значение pNK t . Если eff ведут себя немонотонно, то в качестве предела p eff t разумнее взять среднее значение. Погрешность численного расчета не может быть меньше ошибок округления. При достижении этого уровня точности в какой-либо точке расчета погрешность RN k t в ней уже не будет убывать, начиная с некоторого k , ниже уровня R t 10 14 1016 . t может принимать значения далекие от теоретического, их не стоит eff использовать для вычисления предела p t ; в этой точке максимально возможная eff При этом pN k 1 точность уже достигнута. Если в некоторой контрольной точке предельное значение p eff t слабо отличается от теоретического значения p t 2 (на практике мы обычно считаем малыми отличия до 20%), то в данной контрольной точке дважды непрерывно дифференцируемо и оценка погрешности (14) асимптотически точна. eff Если в некоторой контрольной точке предельное значение p eff t отличается от теоретического значения p 2 , но оказалось лучше, чем теоретическое, это означает, что в данной точке имеет место вырождение разложение погрешности по обратным степеням N не содержит главного слагаемого O N p . Это может случится, например, в тех точках, где решение имеет нуль порядка выше, чем 2 (см. Замечание к Утверждению 10). В этой ситуации решение в контрольной точке избыточно гладкое, оценка погрешности (14) не асимптотически точна, но избыточна. Асимптотически точной в этой контрольной точке будет оценка погрешности по Эйткену (см. гл. I) RN K t u NK t u N t o K 1 r p eff t 1 Np eff . Если во всех контрольных точках предельное значение p eff t указывает на гладкость функции и RN K t , то требуемая точность достигнута, и расчет на сгущающихся сетках прекращается. Если, начиная с какой-либо контрольной точки t* теоретический порядок точности не реализуется, то это говорит о нарушение гладкости. 99 Глава III. Численная диагностика особенностей точного решения. Если p eff t* 1, то неограниченна u t . * p eff t* 1, то имеет место сингулярность: неограниченность самого решения или его первой производной в точке t* . Далее согласно доказанным выше Если утверждениям p eff наступает стабилизация численного решения. Для вычисления t , t t* нужно использовать значение u* . Процедура определения u* описана в п. 5. Если предельное значение p eff t 0,1 , t t* , можно констатировать, что точное решение задачи имеет особенность типа корня u t причем предельное значение дает степень корня p При u t p eff t 0, t t* t t значению p eff точное eff решение t t , 1 0 , . имеет разрыв второго рода , 0 , и также можно определить степень по предельному . t , t t* , то рост решения в точке t* экспоненциальный u t exp1 t* t ; если же p eff t 0, t t* , то асимптотика решения в точке t* логарифмическая u t ln t* t . Если p eff eff Если же не удается установить предельное значение lim pN N t , t t* , то можно лишь констатировать разрушение точного решения. Такая ситуация вероятно возможно, но крайне редко; в многочисленных тестовых испытаниях программы она ни разу не возникла. В качестве результата работы программы, реализующей описанный алгоритм, пользователь получает набор значений численного решения задачи в узлах сетки с числом узлов N K 2 (это максимально подробная сетка, на которой возможно произвести расчет всех величин, необходимых для диагностики сингулярности). Каждое численное значение снабжено гарантированной оценкой на величину погрешности, с которой оно вычислено. Программа определяет момент разрушения точного решения с точностью до шага сетки tn , 0 n N K 2 и диагностирует асимптотику заранее неизвестного точного решения при t t* 0 . Демонстрационная программа, реализующая описанный алгоритм, была написана и протестирована аспирантом ИММ РАН П.В. Корякиным. §3. Системы ОДУ. 1. Автономизация. Выше был подробно обоснован метод диагностики сингулярности точного решения задачи Коши для одного автономного ОДУ. Неавтономную задачу (3) произвольной размерности u t u1 t , u2 t ,..., uJ t можно привести к автономной форме, следующим простым приемом. Введем новую 100 Глава III. Численная диагностика особенностей точного решения. неизвестную функцию u J 1 t . Уравнение и начальное условие для новой функции тривиальны: du J 1 1; u J 1 0 0. dt (17) Заменяя в правой части (3) t на u J , получаем автономную систему на единицу большей, чем (3), размерности. du F u ; u 0 u0 , dt (18) где u u1 , u2 ,..., u J 1 , F F1 , F2 ,..., FJ ,1 . При этом объем вычислений по схеме CROS возрастает незначительно. Этот прием получил название автономизация. Особенно заметны выгоды автономизации на дифференциально-алгебраических задачах (этому вопросу посвящена V глава). Применительно к автономизованой задаче (18) схема CROS выглядит следующим образом uˆ u Re k ; E 1 i 2 F u k F u . (19) Задача Коши даже для одного ОДУ в результате автономизации превращается в задачу Коши для системы. Поэтому диагностику сингулярности для систем ОДУ и неавтономных задач имеет смысл рассматривать совместно. Далее будем считать, что задача уже приведена к автономной форме (18) и будем применять схему CROS в виде (19), опуская знак «тильда». 2. Вычислительный эксперимент. Рассмотрим задачу Коши для системы автономных ОДУ du F u ; u 0 u0 . dt (20) Здесь u t , F u вектор функции одинаковой размерности. Пусть точное решение системы (20) существует до момента времени t t* , а в момент времени t* одна из компонент решения (20) (или его первая производная) обращается в бесконечность. Как поведет себя при этом численное решение (20) по схеме CROS (19)? Пример 2. Рассмотрим задачу Коши для неавтономного уравнения du u 1 ; u 0 0 , dt 1 t 1 t 2 101 (21) Глава III. Численная диагностика особенностей точного решения. точное решение которой u t ln 1 t 1 t при t 1 0 имеет разрыв второго рода. Применяя прием автономизации к (21), приходим к системе du1 u 1 1 ; dt 1 u2 1 u2 2 (22) du2 =1; u1 0 u2 0 0. dt Проведем расчетов системы (22) по схеме CROS на последовательности равномерных сеток N k 100,200,...,3200 . u1(t) 800 p exact 400 20000 eff 2.5 400 2.0 800 1.5 200 1.0 200 0.5 0 100 100 0.0 -0.5 -100000 -1.0 -1.5 -150000 0.990 0.995 1.000 1.005 0.98 1.010 0.99 задачи (22). u1 t 1.01 t t Рис. 7. Компонента 1.00 численного решения Рис. 8. Эффективный порядок точности при расчете компоненты u1 t задачи (22) На рис. 7, 8 показаны численное решение для компоненты u1 t и эффективный порядок точности в узлах сеток N 100,200,400,800 . На рис. 7 жирной линией показано точное решение. Видно, что до момента сингулярности численное решение монотонно растет, как и точное; эффективный порядок точности близко к теоретическому значению 2.. Подходя к моменту сингулярности t* 1 , нарушается монотонность компоненты u1 t численного решения (приращение на новом временном слое противоположно по знаку приращению на предыдущем слое). Далее данным численного расчета уже доверять нельзя, на это указывает нарушение eff равенства p 2 . Целесообразно остановить расчет именно в этой точке. На рис. 8 хорошо видно, что эффективный порядок точности, посчитанный по последнему 102 Глава III. Численная диагностика особенностей точного решения. достоверному значению численного решения, близок к 1, указывая на асимптотику точного решения. Как видно из (22)компонента u2 t не зависит от u1 t , поэтому разрушение первой компоненты (22) не влияет на вторую, она продолжает монотонно возрастать, погрешность ее расчета на протяжении всего времени счета находится на уровне ошибок округления. Попытка рассчитать вплоть до момента t 1 неавтономную задачу (21) без приема автономизации приведет к переполнению при использовании любой схемы, так как при t 1 невозможно вычислить правую часть (21). 6 u1(t) u2(t) 184 184 5 92 92 100 4 46 46 3 2 0 0.8 0.9 1.0 0.8 1.1 0.9 1.0 1.1 t t б) а) Рис. 9. Численное решение задачи Коши для системы (23), штриховая линия – асимптота точного решения. eff eff p 2(t) 2 p 1(t) 2.0 184 184 1.5 1 92 92 1.0 46 46 0 0.5 0.0 -1 0.8 0.9 t 1.0 1.1 0.8 0.9 1.0 1.1 t Рис. 10. Эффективный порядок точности схемы CROS для компонент численного решения системы (23) 103 Глава III. Численная диагностика особенностей точного решения. Пример 3. Рассмотрим следующую задачу Коши du1 du2 u1eu ; u1; dt dt u1 0 1; u2 0 0. 2 (23) Точное решение (23) есть u1 t 1 1 t ; u2 t ln 1 t . Обе компоненты точного решение задачи (23) имеют особенности в точке t* 1 . Результаты расчетов на трех равномерных сетках N 46,92,184 по схеме CROS показаны на рис. 9 (а,б). Видно, что стабилизация численного решения схемы CROS, характерная для случая разрушающегося решения одного уравнения, наблюдается только для второй компоненты решения. Первая компонента уже не выходит на «полочку». Эффективный порядок точности, вычисленный в узлах сеток N 46,92,184 , показан на рис. 10. Даже для первой компоненты, для которой нет стабилизации численного решения, существует точка t вблизи особенности, эффективный порядок eff точности в которой p1 t 1 диагностирует асимптотику точного решения N u1 t 1 1 t . Заметим, что именно в этой точке t нарушается монотонность компоненты u1 t численного решения. Для второй компоненты есть стабилизация численного решения и эффективный порядок точности в любой контрольной точке за особенностью диагностирует логарифмическую особенность точного решения u2 t ln 1 t . Пример 4. Точное решение задачи Коши du1 u12 ; dt u1 0 1; du2 u2 1 u12 ; dt u2 0 0 есть u1 1 1 t ; u2 exp 1 1 t 1 1 . Численное решение этой задачи схемой CROS на сетках N 46,92,184 показано на рис. 11. Первая компонента решения стабилизируется на постоянном для каждого N уровне, вторая компонента стремительно (масштаб по вертикальной оси логарифмический) растет при t 1 0 . После прохождения момента сингулярности численное решение u2 t меняется весьма хаотично. Эффективный порядок точности численного схемы CROS для задачи (24) показан eff на рис. 12. В точках гладкости решения p 2 . При подходе к моменту сингулярности t* 1 нарушается монотонность численного решения ( u1 t выходит 104 (24) Глава III. Численная диагностика особенностей точного решения. на постоянный уровень, для u2 t стремительный рост сменяется убыванием). На графике p1eff t при этом стабилизируется на постоянном уровне p eff 1 , диагностируя тип особенности компоненты u1 t . Для p2 t при t t* нет стабильного значения, что указывает на разрушение точного решения. Если eff исследовать поведение p2 t , где t момент нарушения монотонности компоненты eff u2 t численного решения, то p2eff t , что согласно результатам, полученным N в предыдущем параграфе соответствует экспоненциальному росту точного решения u2 t exp 1 t* t . 184 u1(t) u2(t) 150 184 100000 100 92 92 10000 46 50 46 1000 0 0.8 0.9 1.0 1.1 100 t 0.8 0.9 1.0 t 1.1 Рис. 11. Численное решение задачи Коши для системы (24), штриховая линия – асимптота точного решения. p eff 1 eff 2 p 184 2 0 46 -5 1 92 -10 46 0 92 -15 0.8 184 -20 -1 0.9 1.0 1.1 t 0.8 0.9 1.0 t Рис. 12. Эффективный порядок точности схемы CROS для компонент численного решения системы (24) 105 1.1 Глава III. Численная диагностика особенностей точного решения. Пример 5. Обе компоненты решения задачи Коши du1 du u1u12 q ; 2 qu2u12 ; dt dt u1 0 u2 0 1 (25) имеют особенность степенного типа u1 1 t ; u2 1 t . Рассмотрим случай q 1.5, q 0.25 : компонента u1 t в точке t* 1 имеет особенность типа «полюса», а u2 t корневую особенность. u1(t) u2(t) 900 15000 0.3 10000 225 450 5000 450 0.2 225 900 0 0.97 0.98 0.99 1.00 1.01 1.02 1.03 0.97 0.98 0.99 1.00 1.01 1.02 1.03 t t Рис. 13. Численное решение задачи Коши для системы (25) штриховая линия – асимптота точного решения. eff eff p 2(t) 2 p 1(t) 900 2.0 900 1 225 1.5 450 450 0 1.0 -1 0.5 225 -2 0.99 1.00 t 1.01 0.0 0.99 1.00 1.01 t Рис. 14. Эффективный порядок точности схемы CROS для компонент численного решения системы (25) 106 Глава III. Численная диагностика особенностей точного решения. Результаты расчетов задачи (25) приведены на рис. 13 и 14. Снова слева от особенности численное решение монотонно (как и точное). Вблизи особенности для первой компоненты нарушается монотонность, для второй – происходит монотонный выход на стационарное значение (модуль приращения численного решения при переходе на следующий временной слой при этом много меньше модуля самого eff решения û2 u2 u2 ). На графиках p t для обоих компонент существует точка, eff в которой предельное значение lim pN с хорошей точностью диагностирует степени и q. N Приведенные примеры показывают, что в многомерном случае, положение равновесия для численного решения схемы CROS, вообще говоря, не существует. Но на каждой сетке существует хотя бы одна точка t вблизи особенности, эффективный eff порядок точности в которой p t позволяет диагностировать тип сингулярности. 3. Диагностика сингулярности для систем ОДУ. Пусть точное решение задачи (20) достаточно гладкое при t t* и одна из его компонент (для определенности u1 t ) имеет сингулярность в точке t t* : либо само решение монотонно при t t* 0 , монотонно нарастает и u1 t* ; либо само решение остается конечным, но его производная u1 t* . В обоих случаях слева вблизи особенности точное решение задачи монотонно. До момента t t* точное решение гладкое, поэтому при проведении расчетов на сгущающихся сетках в контрольных точках t t* эффективный порядок точности eff вычисления всех компонент решения (20) pN t 2 . Вблизи N t* до определенного момента t численное решение (20) по схеме CROS, монотонно как и точное. Результаты проведенных расчетов показывают, что вблизи особенности точного решения существует точка t , где численное решение схемы CROS либо теряет монотонность, либо, переставая стремительно изменяться, монотонно выходит на «полочку». В любом из этих случаев численное решение уже даже качественно не передает точное решение, поэтому эффективный порядок точности вычисления eff разрушающейся компоненты u1 pN t 2. N С другой стороны до момента сингулярности нет причин для отклонения эффективного порядка точности от теоретического, так как решение задачи при t t* достаточно гладкое. Это наводит на предположение о близости момента t и момента сингулярности точного решения t* . Определим t «момент разрушения численного решения схемы CROS». При этом происходит либо смена знака очередного приращения û1 u1 , либо само это приращение мало û1 u1 u1 (монотонный выход на полочку). Найдем момент t из условия uˆ1 u1 0 . Переход на новый временной слой по схеме CROS удобно представить следующей формулой: 107 Глава III. Численная диагностика особенностей точного решения. uˆ u Re k E 12i F u k F u (26) Домножая уравнение для k справа и слева на матрицу комплексно сопряженную матрице СЛАУ, получаем систему с действительной матрицей: E 1i 2 F u E 12i F u k E 12i F u F u . Условие uˆ1 u1 0 равносильно Re k1 0 : Re k1 E 12 F u F u 1 0 . Расписывая покомпонентно произведение матрицы на столбец, получим 1 J 1 2 F1 u1 F1 12 F1 u j Fj 0 . (27) j 2 du1 d 2u1 J F1 Заметив, что F1 , а Fj , получим, что (27) равносильно dt dt 2 j 1 u j du1 d 2u1 0. dt 2 dt 2 t (28) Примечательно, что в это уравнение входит только зависимость u1 t , другие компоненты решения (20) в (28) не входят. Пусть вблизи особой точки асимптотика решения u1 t получаем C t* t 1 C t* t , то из (28) 2 C 1 t* t . 2 Откуда для t 108 Глава III. Численная диагностика особенностей точного решения. t * t 1 . 2 (29) Из (29) видно, что при сгущении сетки 0 и момент t действительно отличается от моменту сингулярности t* на величину порядка шага сетки. Причем, это отличие тем больше, чем больше порядок полюса точного решения. Численное решение схемы CROS в области гладкости t t* близко к точному, поэтому значение u* , при котором происходит «разрушение численного решения» для компоненты u1 можно приближенно найти, используя асимптотику точного решения: u 2 1 . (30) Заметим, что (30) имеет тот же вид, что и положения равновесия схемы CROS для одного ОДУ (8)! Эффективный порядок точности схемы CROS для компоненты u1 , вычисленный в точке t по значению u* , дает peff t . (31) Тем самым снова возможно определить степень . Аналогично u1 t ln t* t для логарифмической асимптотики точного решения и экспоненциального роста u1 t exp 1 t* t из условия (28) получаем соответственно 2 2 . t* t и t* t 2 2 (32) В обоих случаях при 0 выполнено t t* . Во втором условии (32) стоит использовать знак «+». Для величины u* , при котором разрушается численное решение схемы CROS, получаем для логарифмической особенности: u* ln 2 ln , совпадающее с (11), и для экспоненциально растущего точного решения: 109 (33) Глава III. Численная диагностика особенностей точного решения. 2 u* exp , 2 2 (34) после тождественных преобразований совпадающее с (13). eff Таким образом, p , вычисленный по величине u* , диагностирует тип сингулярности так же, как и в одномерном случае. Алгоритм диагностики уже несколько более сложен, так как решение, вообще говоря, не стабилизируется вблизи u* , и нужно определять момент t . По результатам расчетов на последовательности сгущающихся вложенных k 0,1,..., K , в узлах сетки K 2 известны значения численного решения, оценка Ричардсона для погрешности и эффективный порядок точности. Проанализируем эти данные и найдем момент t . Последовательно перебирая точки tn 1 n N K 2 , найдем точку t n , удовлетворяющую одновременно следующим 2 условиям: 1. p tn 1 (меньшее отличие p от двойки говорит лишь об отсутствие второй непрерывной производной решения), eff eff 2. Fu uˆ . uˆ1 u1 t uˆ1 u1 t n n 1 uˆ1 u1 0 , либо tn u1 t , либо F uˆ или n На данной сетке после момента tn t численное решение уже не адекватно точному, и расчет при t t вести бессмысленно. Значение численного решения, при котором наступает его разрушении u t u* . При численной диагностике n u u* t t , тогда по значению p eff t , вычисленному в любом узле после разрушения решения t t , можно диагностировать сингулярности удобно положить тип сингулярности. В результате работы программы, реализующей описанный алгоритм, пользователь получает численное решение в узлах tn t сетки K 2 , гарантированную оценку погрешности, приближенное значение момента сингулярности t* t и асимптотику точного решение при t t* 0 . При неудачном расположении узлов сетки возможна ситуация, когда члены eff последовательности pN k , вычисленной по величине u* , не будут иметь большой разброс (больше среднего значения). В этом случае можно констатировать разрушение решения, но тип особенности определить не удается. Если все-таки необходимо диагностировать тип особенности, то можно пытаться варьировать расположение узлов сетки, добиваясь попадания узла сетки в близкую окрестность истинного момента особенности t* . В этом случае, как показывает опыт расчетов, диагностика работает надежно. 110 Глава III. Численная диагностика особенностей точного решения. §4. Разрывы производных. 1. Рекуррентное уточнение. Как описано в Главе I для достаточно гладких решений погрешность численных методов разлагается в сумму по обратным степеням числа узлов сетки R ck N k (35) k p Число слагаемых в сумме определяется гладкостью решения. Главный член p погрешности R O N определяет порядок точности метода. Не совпадение эффективного и теоретического порядков точности схемы свидетельствует о 2 недостаточной гладкости функции. Например, схемам точности O , для реализации своего теоретического порядка точности на задачах (3) необходима непрерывная вторая производная точного решения. Учет асимптотически точной оценки погрешности (14) в качестве поправки u rN t urN t RrN t равносилен исключению главного члена в разложении (35) ошибки по обратным степеням N . Эффективный порядок точности при этом возрастает на 1 (а для симметрично написанных схем даже на 2). Для схемы CROS, например, первое уточнение дает точность O N 3 при наличии непрерывной u t . Грамотная организация расчетов с гарантированной точностью на вложенных сгущающихся сетках должна осуществляться с контролем и погрешности, и эффективного порядка точности. По тому, как ведет себя эффективный порядок точности при увеличении числа узлов, можно судить о степени гладкости решения. Если очередное уточнение не улучшает порядка точности, то можно констатировать отсутствие необходимого числа непрерывных производных. 2. Пример расчета. Разрывы даже высоких производных точного решения можно установить, используя рекуррентное уточнение. Если эффективный порядок точности eff один раз уточенного решения схемы CROS p 3 , то u t непрерывна. В этом случае можно в качестве результата расчета выдавать пользователю уточненное решение. Требуемый уровень точности при этом достигается при гораздо меньшем числе узлов сетки N , что способствует написанию экономичных алгоритмов. Если eff эффективный порядок точности один раз уточенного решения схемы CROS p 3 , 111 Глава III. Численная диагностика особенностей точного решения. то u t неограниченна. Для диагностики разрывов более высоких производных требуется большее число уточнений. Место положение особенности определяется с точностью шага стартовой сетки: чем точнее его нужно определить, тем гуще нужно выбирать стартовую сетку. Можно также усложнить логику программы: при каждом сгущении сетки рассматривать предыдущую сетку как стартовую Проиллюстрируем данный алгоритм результатами расчетов следующей задачи Коши: u , du F u 1 1 dt u , 0 u 1, u 1; u 0 u0 , 0 u0 1, t 0 (36) Точное решение задачи (36) сначала гладко: u t u0e , 0 t t0 ln u0 . В точке t t 0 имеется конечный скачок u t . При t0 t t* точное решение задачи (36) имеет вид u t const t* t . Если 0 , то u t* . Если 1 0 , то u (t* ) конечно, но u t* . Для t t* точное решение задачи (36) не существует. Таким образом, тестовое решение имеет две разные по типу особенности. Если особенность типа разрыва высокой производной являлась бы узлом сетки, то ни одна схема этого не почувствовала бы, так как область интегрирования ДУ просто разбивается на две подобласти, в каждой из которых гладкость точного решения не нарушается. Поэтому была выбрана равномерная начальная сетка с шагом 2 9 и числом шагов N 7 . При этом последний узел сетки лежит за полюсом. Сгущение сетки проводилось в r 3 раза, очевидно, узлы начальной сетки являются узлами всех более густых сеток, в этих точках и контролировалась погрешность. При таком расположении узлов точки t 0 и t* , не являлись узлами сетки ни при каком N . Выбранные параметры стартовой сетки и N наиболее просты для понимания и наглядны. На практике для надежной диагностики разрывов высоких производных целесообразно выбирать шаг стартовой сетки иррациональным числом, тогда при сгущении в целое число раз r вероятность попадания точки нарушения гладкости в узел сетки практически равна 0. rN На рис. 15 показана R асимптотически точная оценка погрешности в зависимости от числа узлов сетки N в двойном логарифмическом масштабе. Данные приведены для точек t 4 9 (до всех особенностей), t 6 9 (после разрыва второй производной точного решения) и t 14 9 (за полюсом). Графики асимптотически близки к прямым, угол наклона которых соответствует эффективному порядку точности численного решения в данной точке. Расчет по ERK4 выходит на ошибки 4 округления при N 10 , так что далее погрешность уже не уменьшается. 112 Глава III. Численная диагностика особенностей точного решения. rN lgR 8 6 4 CROS ROS1 ERK1 ERK2 ERK4 2 0 -2 -4 -6 -8 -10 -12 -14 -16 -18 1 2 3 4 5 6 Рис. 15. Зависимость погрешности от числа узлов сетки. Сплошная линия lgN t 4 9 , штрихи – t 6 9 , пунктир – t 14 9 . В табл. 1 приведен эффективный порядок точности рассмотренных схем в трех контрольных точках t 4 9 , t 6 9 и t 14 9 . Числа p стабилизируются при N 150 . До сингулярности эффективный порядок точности равен теоретическому. За полюсом t* эффективный порядок точности схемы CROS согласно Утверждению 10 в точности диагностирует порядок полюса. Эффективный порядок точности схемы ROS1 за полюсом хаотически меняется в широких пределах; в практике вычислений с контролем точности это означает, что доверять результатам такого расчета не следует. Для явных схем ERK вычислить эффективный порядок точности за особенностью типа полюса практически невозможно, т.к. при больших N быстро наступает переполнение в расчетах; (то же относится к корневой особенности). eff lgN 1.8 2.28 2.75 3.23 3.71 4.18 4.66 5.14 5.62 4/9 1.16 1.05 1.02 1.01 1.00 1.00 1.00 1.00 1.00 Табл. 1. Эффективный порядок точности в контрольных точках. ROS1 CROS ERK1 ERK2 6/9 14/9 4/9 6/9 14/9 4/9 6/9 14/9 4/9 6/9 14/9 1.43 -1.04 2.11 2.31 -1.00 0.97 0.94 -1.43 1.95 1.95 -14.86 1.00 2.12 2.04 1.31 -1.00 0.98 0.95 -4.93 1.97 2.05 1.05 -2.50 2.01 2.65 -1.00 0.98 0.95 1.99 1.96 1.00 -4.82 2.00 1.99 -1.00 0.99 0.99 2.00 2.01 1.00 0.08 2.00 1.98 -1.00 0.99 0.99 2.00 2.00 1.00 0.26 2.00 1.99 -1.00 1.00 1.00 2.00 2.00 1.00 0.62 2.00 1.98 -1.00 1.00 1.00 2.00 2.00 1.00 -0.98 2.00 1.99 -1.00 1.00 1.00 2.00 2.00 1.00 -5.30 2.00 1.96 -1.00 1.00 1.00 2.00 2.00 - 4/9 3.89 3.96 3.99 4.01 3.51 - ERK4 6/9 2.01 1.97 2.01 2.00 2.00 2.00 2.00 2.00 2.02 14/9 - Всем упомянутым схемам, кроме ERK4, для реализации своего теоретического порядка точности достаточно непрерывной дифференцируемости точного решения и 113 Глава III. Численная диагностика особенностей точного решения. ограниченности его второй производной. Поэтому разрыв u t0 диагностируется лишь схемой ERK4: после точки t 0 эффективный порядок точности ERK4 падает до 2. Однако диагностика разрыва высокой производной точного решения возможна и при использовании схем невысокого порядка точности. Первое рекуррентное уточнение для схем второго порядка точности повышает точность до O N 3 на гладких решениях. После точки t 0 число непрерывных производных у функции уже не достаточно и рекуррентное уточнение не повышает порядка точности. В табл. 2 показан эффективный порядок точности уточенного решения для схем CROS и ERK2. До точки t 0 точность есть O N есть O N 2 3 , в интервале t 0 t t* точность исходной схемы и рекуррентным уточнением её повысить не удается. Табл. 2. Эффективный порядок точности в контрольных точках после первого уточнения. 0 t t0 t0 t t* t t* CROS 3.030.04 ERK2 2.990.04 2.000.06 1.580.63 - -1.000.00 В заключение стоит отметить, что были проведены многочисленные тесты с различным расположением узлов сетки относительно особенности и различными типами сингулярности. Все они показали надежность диагностики разрывов высоких производных и определения типа сингулярности расчетами на сгущающихся сетках на основе Утверждений 1-12. Все сказанное подтверждает преимущества использования схемы CROS не только для жестких, но и для плохообусловленых задач. На основе именно этой схемы целесообразно составлять программы расчетов с асимптотически точной оценкой погрешности и диагностикой сингулярности. Сейчас, напротив, наиболее распространены программы решения ОДУ с автоматическим выбором шага (что по существу является построением адаптивной сетки) [Хайрер Э., Ваннер Г., 1996]. Однако, для таких алгоритмов не найдено способа получения асимптотически точных оценок погрешности. Поэтому они непригодны для диагностики особенности решения и расчетов с гарантированным контролем точности. Пока такую возможность дает только метод сгущения равномерных и квазиравномерных сеток. Основные результаты, изложенные в этой главе, опубликованы в работах [Е.А. Альшина и др. ДАН, 2005], [Е.А. Альшина и др. ЖВМиМФ, 2005]. Метод диагностики сингулярности уже нашел практическое применение в задачах математического моделирования процессов в полупроводниках, где он применяется для определения момента пробоя полупроводника [А.Б. Альшин и др., ФИЗМАТЛИТ, 2006]. 114