Встревожьте решение решателя состояний системы лучше удовлетворить независимым от времени отношениям решения
Нет
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
, это использует уравнения Lotka-Volterra
к динамике популяции жертв хищника модели, где плотность населения хищников и плотность населения добычи. Идеальное решение ОДУ добычи хищника удовлетворяет независимой от времени функции
где , , и константы. S-функция принимает a = 1
, c = 2
, и d = 121.85
.
Блок Invariant Residual в этой модели вычисляет невязку между инвариантной функцией, выполненной вдоль идеальной траектории системы через пространство состояний и его симулированной траекторией:
где и значения, вычисленные решателем модели для хищника и плотности популяции жертв, соответственно, на шаге текущего времени. Идеально, невязка должна быть нулем в течение симуляции модели, но симуляция модели показывает, что невязка на самом деле значительно отклоняется от нуля:
Теперь рассмотрите следующую модель, mdlProjectionEx2:
Эта модель совпадает с предыдущей моделью, за исключением того, что ее S-функция, predprey.m
, включает mdlProjection
метод, который использует подход возмущения, обрисованный в общих чертах в Беспокойстве состояний Системы Используя Инвариант Решения, чтобы компенсировать числовой дрейф. В результате числовое решение более тесно отслеживает идеальное решение, в то время как симуляция прогрессирует, как продемонстрировано остаточным сигналом, который остается рядом или в нуле в течение симуляции: