Точный момент переключения из одного состояния в другое можно определить достижением точного равенства в условиях переключения. Однако при численном интегрировании условия переключения проверяются не в каждый момент времени, а дискретно, то есть с каким - то шагом интегрирования. Поэтому добиться точного равенства в условиях переключения практически невозможно. Для уменьшения ошибки определения момента переключения и, соответственно, ошибки определения начальных условий для следующего состояния можно уменьшить шаг интегрирования. Однако, это приводит к возрастанию времени расчёта и возрастанию погрешности округления.
В данной работе использован следующий подход. Пусть условие переключения выглядит следующим образом:
Р £ 0,
где Р - это критерий переключения;
Пусть на к - ом шаге интегрирования Рк > 0, а на к +1 - ом шаге Рк < 0. В этом случае очевидно, что точный момент переключения находится между рассматриваемыми моментами времени tк и tк+1:
tк = k × h (3.1.)
|
|
tк+1 = (k + 1) × h (3.2.)
где h - это шаг интегрирования.
Предположим, что параметр Р изменяется линейно (рис.3.1), из подобия треугольников находим:
t* = tк + mh (3.3.)
где (3.4.)
m - коэффициент деления шага интегрирования.
Аналогично должны быть уменьшены приращения, полученные всеми переменными состояния на к+1 - ом шаге интегрирования:
График определения момента переключения.
|
(3.5.)
- значение i - ой переменной состояния в момент времени tк;
DXi - приращение i - ой переменной состояния на k+1 - ом шаге интегрирования;
- точное значение i - ой переменной состояния в момент переключения.
Используя данный подход, удалось существенно снизить погрешность определения начальных условий, причём время расчёта практически не увеличилось.