mdlProjection

Возмущает решение решателя состояний системы, чтобы лучше удовлетворить инвариантным по времени отношениям решения

Необходимый

Нет

Языки

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-функция моделирует динамическую систему, имеющую инвариант решения, g(X,t), т.е. g является непрерывной, дифференцируемой функцией состояний системы, X, и времени, t, значение которого является постоянным со временем. Тогда

XnXn*+JnT(JnJnT)1Rn

где

  • Xn - идеальный вектор состояния системы на текущем временном шаге решателя

  • Xn* - приблизительный вектор состояния, вычисленный решателем в текущем временном шаге

  • Jn - якобиан инвариантной функции, вычисленный в точке в пространстве состояний, заданной аппроксимационным вектором состояния на текущем временном шаге:

    Jn=gX(Xn*,tn)

  • tn - время в текущем временном шаге

  • Rn - невязка ( различие) между инвариантной функцией, рассчитанная в Xn и Xn* в текущем временном шаге:

    Rn=g(Xn,tn)g(Xn*,tn)

    Примечание

    Значение g(Xn,tn) является тем же самым на каждом временном шаге и известен по определению.

Учитывая непрерывную, дифференцируемую инвариантную функцию для системы, которую моделирует ваша S-функция, эта формула позволяет использовать mdlProjection вашей S-функции метод для вычисления возмущения

JnT(JnJnT)1Rn

численного решения решателя, Xn*, который более близко соответствует идеальному решению, Xn, сохраняя решение S-функции от дрейфа от идеального решения по мере прогрессирования симуляции.

Пример MATLAB

Этот пример иллюстрирует, как метод возмущения, описанный в предыдущем разделе, может удерживать численное решение модели от дрейфа от идеального решения по мере прогрессирования симуляции. Примите во внимание следующую модель, mdlProjectionEx1:

Блок PredPrey ссылается на S-функцию, которая использует уравнения Лоток-Вольтерра:

 predprey_noproj.m

x˙=ax(1y)y˙=cy(1x)

для моделирования динамики популяции хищник-добыча, где x(t) - плотность населения хищников и y(t) - население добычи. Идеальное решение ОДУ хищника-добычи удовлетворяет инвариантной по времени функции

xcecxyaeay=d

где a, c, и d являются постоянными. S-функция принимает a = 1, c = 2, и d = 121.85.

Инвариантный Остаточный блок в этой модели вычисляет невязку между инвариантной функцией, оцененной вдоль идеальной траектории системы через пространство состояний и ее моделируемой траекторией:

Rn=dxncecxnynaeayn

где xnи ynявляются значениями, вычисленными решателем модели для плотностей хищника и популяции жертв, соответственно, на текущем временном шаге. В идеале невязка должна быть нулем на протяжении всей симуляции модели, но симуляция модели показывает, что невязка на самом деле значительно отстает от нуля:

Теперь рассмотрим следующую модель, mdlProjectionEx2:

Эта модель является такой же, как и предыдущая модель, за исключением того, что ее S-функция, predprey.m, включает в себя mdlProjection метод, который использует подход возмущения, описанный в «Возмущении состояний системы», используя инвариант решения для компенсации численного дрейфа. В результате численное решение более тесно отслеживает идеальное решение по мере прогрессирования симуляции, как продемонстрировано остаточным сигналом, который остается около или в нуле на протяжении всей симуляции:

 predprey.m

См. также

Projection

Введенный в R2006b
Для просмотра документации необходимо авторизоваться на сайте