Управление шагом интегрирования

В процессе интегрирования с переменным шагом необходимо, кроме решения на очередном шаге, вычислять также оценку ошибки, которая используется для управления величиной шага. Для этого применяют две различные формулы интегрирования, дающие на m-м шаге два решения: xm и xm'. Пусть x = xm – вектор переменных, Δx = xm-xm-1 – приращение, δx = xm - xm' – оценка ошибки на последнем шаге. Для управления величиной шага используется нормированная ошибка, вычисляемая по формуле


причем шаг считается удачным, если err ≤ 1. В случае удачного шага принимаем значение xm в качестве нового вектора переменных. В противном случае (при неудачном шаге) шаг отбрасывается, после чего производится пересчет с уменьшенным размером шага. Шаг считается неудачным также и в том случае, когда при вычислении правых частей одна из производных превысила максимально допустимое значение, либо произошло прерывание, вызванное переполнением, делением на ноль, недопустимым значением аргумента и т.п. В таких случаях размер шага уменьшается сразу в 4 раза.

Особенностью SimInTech и аналогичных систем моделирования является то, что вычисление правой части системы ОДУ осуществляется одновременно с расчетом всей модели. При этом некоторые блоки модели рассчитываются только на заключительной стадии удачного шага. К таким блокам относятся дискретные, ключи, а также некоторые логические блоки. Это сделано с целью исключения внутри шага разрывов правой части, которые могут привести к неоправданному уменьшению шага и возникновению «скользящего режима». Поэтому для получения оценки ошибки на m-м шаге нежелательно использовать значение fm=f(tm, xm), как это делается, например, в методе Дорманда-Принса [6].

В большинстве методов, реализованных в SimInTech, используется стандартная процедура управления величиной шага [3], задаваемая формулой


где fac = 0.80.9 – множитель безопасности, α – величина, обратная порядку оценки ошибки, err – нормированная ошибка (1.2).