Возмущает решение решателя состояний системы, чтобы лучше удовлетворить инвариантным по времени отношениям решения
Нет
C, C++
#define MDL_PROJECTION
void mdlProjection(SimStruct *S)
S
SimStruct, представляющий блок S-Function.
Этот метод предназначен для использования с S-функциями, которые моделируют динамические системы, состояния которых удовлетворяют инвариантным по времени отношениям, таким как те, которые являются результатом сохранения массы или энергии или других физических законов. Simulink® engine вызывает этот метод в каждый временной шаг после того, как решатель модели вычисляет состояния S-функции для этого временного шага. Обычно небольшие ошибки в численном решении состояний заставляют решения не удовлетворять точно инвариантам решения. Ваши mdlProjection
способ может компенсировать ошибки путем возмущения состояний так, чтобы они более точно аппроксимировали инварианты решения на текущем временном шаге. В результате численное решение более тесно придерживается идеального решения по мере прогрессирования симуляции, создавая более точную общую симуляцию системы, смоделированной вашей S-функцией.
Ваши mdlProjection
возмущения метода состояний системы должны попадать в допуски на ошибки решения, заданные моделью, в которую встроена S-функция. В противном случае возмущения могут сделать решение решателя недействительным. Это зависит от вашего mdlProjection
метод, чтобы убедиться, что возмущения соответствуют допускам ошибок, заданным моделью. Смотрите Возмущение состояний Системы Использование Инварианта Решения для простого метода для возмущения состояний системы. В следующих статьях описываются более сложные методы возмущения, что ваш mdlProjection
метод может использоваться.
C.W. Gear, «Maintaining Solution Invariants in the Numerical Solution of ODE», Journal on Scientific and Statistical Computing, Vol. 7, No. 3, July 1986.
Л.Ф. Шемпина, «Законы сохранения и численное решение ОДУ I», Компьютеры и математика с приложениями, том 12B, 1986, стр. 1287-1296.
Л. Ф. Шемпин, «Законы о сохранении и численное решение ОДУ II», Компьютеры и математика с применениями, том 38, 1999, стр. 61-72.
Вот простой, основанный на серии Тейлора подход к возмущению состояний системы. Предположим, ваша S-функция моделирует динамическую систему, имеющую инвариант решения, , т.е. является непрерывной, дифференцируемой функцией состояний системы, , и времени, , значение которого является постоянным со временем. Тогда
где
- идеальный вектор состояния системы на текущем временном шаге решателя
- приблизительный вектор состояния, вычисленный решателем в текущем временном шаге
- якобиан инвариантной функции, вычисленный в точке в пространстве состояний, заданной аппроксимационным вектором состояния на текущем временном шаге:
- время в текущем временном шаге
- невязка ( различие) между инвариантной функцией, рассчитанная в и в текущем временном шаге:
Примечание
Значение является тем же самым на каждом временном шаге и известен по определению.
Учитывая непрерывную, дифференцируемую инвариантную функцию для системы, которую моделирует ваша S-функция, эта формула позволяет использовать mdlProjection
вашей S-функции метод для вычисления возмущения
численного решения решателя, , который более близко соответствует идеальному решению, , сохраняя решение S-функции от дрейфа от идеального решения по мере прогрессирования симуляции.
Этот пример иллюстрирует, как метод возмущения, описанный в предыдущем разделе, может удерживать численное решение модели от дрейфа от идеального решения по мере прогрессирования симуляции. Примите во внимание следующую модель, mdlProjectionEx1:
Блок PredPrey ссылается на S-функцию, которая использует уравнения Лоток-Вольтерра:
для моделирования динамики популяции хищник-добыча, где - плотность населения хищников и - население добычи. Идеальное решение ОДУ хищника-добычи удовлетворяет инвариантной по времени функции
где , , и являются постоянными. S-функция принимает a = 1
, c = 2
, и d = 121.85
.
Инвариантный Остаточный блок в этой модели вычисляет невязку между инвариантной функцией, оцененной вдоль идеальной траектории системы через пространство состояний и ее моделируемой траекторией:
где и являются значениями, вычисленными решателем модели для плотностей хищника и популяции жертв, соответственно, на текущем временном шаге. В идеале невязка должна быть нулем на протяжении всей симуляции модели, но симуляция модели показывает, что невязка на самом деле значительно отстает от нуля:
Теперь рассмотрим следующую модель, mdlProjectionEx2:
Эта модель является такой же, как и предыдущая модель, за исключением того, что ее S-функция, predprey.m
, включает в себя mdlProjection
метод, который использует подход возмущения, описанный в «Возмущении состояний системы», используя инвариант решения для компенсации численного дрейфа. В результате численное решение более тесно отслеживает идеальное решение по мере прогрессирования симуляции, как продемонстрировано остаточным сигналом, который остается около или в нуле на протяжении всей симуляции: