Встревожьте решение решателя состояний системы лучше удовлетворить независимые от времени отношения решения
Нет
C, C++
#define MDL_PROJECTION
void mdlProjection(SimStruct *S)
S
SimStruct, представляющий Блок s-function.
Этот метод предназначается для использования с S-функциями, что образцовые динамические системы, состояния которых удовлетворяют независимые от времени отношения, такие как те, которые следуют из массы или энергосбережения или других физических законов. Механизм Simulink® вызывает этот метод на каждом временном шаге после того, как решатель модели вычислил состояния S-функции для того временного шага. Как правило, небольшие ошибки в числовом решении состояний вызывают решения не удаться удовлетворить инварианты решения точно. Ваш метод mdlProjection
может компенсировать ошибки путем беспокойства состояний так, чтобы они более тесно инварианты приближенного решения на шаге текущего времени. В результате числовое решение придерживается более тесно идеального решения, в то время как симуляция прогрессирует, производя более точную полную симуляцию системы, смоделированной вашей S-функцией.
Ваши возмущения метода mdlProjection
системных состояний должны находиться в пределах ошибочных допусков решения, заданных моделью, в которую встраивается S-функция. В противном случае возмущения могут делать недействительным решение решателя. Это до вашего метода mdlProjection
, чтобы гарантировать, что возмущения соответствуют ошибочным допускам, заданным моделью. Смотрите Беспокойство состояний Системы Используя Инвариант Решения для простого метода для беспокойства состояний системы. Следующие статьи описывают более сложные методы возмущения, которые может использовать ваш метод mdlProjection
.
C.W. Механизм, “Поддерживая инварианты решения в числовом решении ОДУ”, журнал на научном и статистическом вычислении, издании 7, № 3, июль 1986.
Л.Ф. Шемпин, “Законы сохранения и Числовое Решение ОДУ I”, Компьютеры и Математика с Приложениями, Изданием 12B, 1986, стр 1287–1296.
Л.Ф. Шемпин, “Законы сохранения и Числовое Решение ОДУ II”, Компьютеры и Математика с Приложениями, Изданием 38, 1999, стр 61–72.
Вот простой, Основанный на ряде Тейлора подход к беспокойству состояний системы. Предположим свои S-модели-функции динамическая система, имеющая инвариант решения, т.е. ., непрерывная, дифференцируемая функция системных состояний, , и время, , чье значение является постоянным со временем. Затем
где
идеальный вектор состояния системы на шаге текущего времени решателя
аппроксимированный вектор состояния, вычисленный решателем на шаге текущего времени
якобиан инвариантной функции, выполненной в точке в пространстве состояний, заданном аппроксимированным вектором состояния на шаге текущего времени:
время на шаге текущего времени
невязка (различие) между инвариантной функцией, выполненной в и на шаге текущего времени:
Значение то же самое на каждом временном шаге и известно по определению.
Учитывая непрерывную, дифференцируемую инвариантную функцию для системы, что ваши S-модели-функции, эта формула позволяет методу mdlProjection
вашей S-функции вычислять возмущение
из числового решения решателя, , это более тесно совпадает с идеальным решением, , мешать решению S-функции дрейфовать от идеального решения как симуляция прогрессирует.
Этот пример иллюстрирует, как метод возмущения, обрисованный в общих чертах в предыдущем разделе, может помешать числовому решению модели дрейфовать от идеального решения, в то время как симуляция прогрессирует. Рассмотрите следующую модель, mdlProjectionEx1:
Блок PredPrey ссылается на S-функцию, predprey_noproj.m
, который использует уравнения Лотки - Вольтерры
к образцовой демографической динамике добычи хищника, где плотность населения хищников и плотность населения добычи. Идеальное решение ОДУ добычи хищника удовлетворяет независимую от времени функцию
где , , и константы. S-функция принимает a = 1
, c = 2
и d = 121.85
.
Блок Invariant Residual в этой модели вычисляет невязку между инвариантной функцией, выполненной вдоль идеальной траектории системы через пространство состояний и его моделируемой траекторией:
где и значения, вычисленные решателем модели для хищника, и охотятся плотность населения, соответственно, на шаге текущего времени. Идеально, невязка должна быть нулем в течение симуляции модели, но симуляция модели показывает, что невязка на самом деле значительно отклоняется от нуля:
Теперь рассмотрите следующую модель, mdlProjectionEx2:
Эта модель совпадает с предыдущей моделью, за исключением того, что ее S-функция, predprey.m
, включает метод mdlProjection
, который использует подход возмущения, обрисованный в общих чертах в Беспокойстве состояний Системы Используя Инвариант Решения, чтобы компенсировать числовой дрейф. В результате числовое решение более тесно отслеживает идеальное решение, в то время как симуляция прогрессирует, как продемонстрировано остаточным сигналом, который остается рядом или в нуле в течение симуляции: