Я пытаюсь понять функцию передачи Simulink (непрерывная).В документации для передаточного функционального блока это указывает, что он имеет прямую характеристику прохода, когда числитель и знаменатель имеют одинаковую длину.
Прямая характеристика прохода, согласно документация , указывает, что выход управляется непосредственно входом (а не переменными состояния).
Я не понимаю, как можно реализовать функцию передачи, числитель и знаменатель которой имеютта же степень (больше нуля) без использования переменных состояния или предыдущих значений ввода / вывода для вычисления связанных производных.
Справочная информация
Вот линия мысли, которая привела меня к этомувопрос:
Я хотел бы реализовать код C ++, который представляет линейную систему с передаточной функцией.Для этой реализации я буду использовать вход x(t)
и вычислю выход y(t)
.Допустим, передаточная функция этой системы равна G(s)
.Я могу написать это как Y(s) = G(s) * X(s)
.
Более того, я скажу, что G(s) = numerator(s) / denominator(s)
, где numerator(s)
- это многочлен от переменной области Лапласа s
степени M и коэффициенты c_{M}, c_{M-1}, ..., c_{1}, ..., c_{0}
.Знаменатель - это еще один многочлен, но степени N
и коэффициентов d_{N}, ..., d_{0}
.
. Чтобы решить эту систему, я переписываю ее как denominator(s) * Y(s) = numerator(s) * X(s)
.Используя свойства преобразования Лапласа и предполагая, что начальные условия равны нулю для всех производных, я получаю
d_{N}*y^{N} + d_{N-1}*y^{N-1} + ... + d_{0}*y = c_{M}*x^{M} + c_{M-1}*x^{M-1} + ... + c_{0}*x
Где y^{k}
- k-производная y(t)
и аналогично для x
.
Я решаю это уравнение с помощью числового интегратора (скажем, для простоты эйлера), который позволяет мне вычислять y
и его производные с использованием N-1
переменных состояния.Для k-производных x
я приблизительно аппроксимирую его, используя последние k+1
значения входа (например, x^{1} = (x(t2) - x(t1)) / (t2-t1)
.
Короче говоря, мне нужно отслеживать N-1
переменных состояния дляY
и M+1
предыдущие значения x
. Затем я вспомнил, что simulink делает это без какого-либо предыдущего значения, когда M==N
. Как это возможно?