exponenta event banner

idnlarx/линеаризация

Линеаризация нелинейной модели ARX

Синтаксис

SYS = linearize(NLSYS,U0,X0)

Описание

SYS = linearize(NLSYS,U0,X0) линеаризация нелинейной модели ARX относительно указанной рабочей точки U0 и X0. Линеаризация основана на линеаризации касательных. Дополнительные сведения об определении состояний для idnlarx модели, см. Определение состояний idnlarx.

Входные аргументы

  • NLSYS: idnlarx модель.

  • U0Матрица, содержащая постоянные входные значения для модели.

  • X0: Значения состояния модели. Состояния нелинейной модели ARX определяются отсчетами входных и выходных переменных с временной задержкой. Дополнительные сведения о состояниях нелинейных моделей ARX см. в разделе getDelayInfo справочная страница.

Примечание

Оценить U0 и X0 из спецификаций рабочей точки, используйте findop команда.

Выходные аргументы

  • SYS является idss модель.

    При установке продукта Toolbox™ системы управления SYS является объектом LTI.

Примеры

свернуть все

Линеаризация нелинейной модели ARX вокруг рабочей точки, соответствующей имитационному снимку, в определенное время.

Загрузить данные образца.

load iddata2

Оценка нелинейной модели ARX по выборочным данным.

nlsys = nlarx(z2,[4 3 10],'tree','custom',...
  {'sin(y1(t-2)*u1(t))+y1(t-2)*u1(t)+u1(t).*u1(t-13)',...
   'y1(t-5)*y1(t-5)*y1(t-1)'},'nlr',[1:5, 7 9]);

Постройте график отклика модели для ввода шага.

step(nlsys, 20)

Figure contains an axes. The axes with title From: u1 To: y1 contains an object of type line. This object represents nlsys.

Отклик шага представляет собой установившееся значение 0.8383 в T = 20 секунд.

Вычислить рабочую точку, соответствующую T = 20.

stepinput = iddata([],[zeros(10,1);ones(200,1)],nlsys.Ts);
[x,u] = findop(nlsys,'snapshot',20,stepinput);

Линеаризация модели относительно рабочей точки, соответствующей снимку модели в T = 20.

sys = linearize(nlsys,u,x);

Проверьте линейную модель.

Применить небольшое возмущение delta_u на стационарный вход нелинейной модели nlsys. Если линейная аппроксимация точна, должны совпадать:

  • Реакция нелинейной модели y_nl на вход, который является суммой уровня равновесия и возмущения delta_u .

  • Сумма откликов линейной модели на входной сигнал возмущения delta_u и уровень выходного равновесия.

Генерация сигнала шага возмущения из 200 выборок с амплитудой 0,1.

delta_u = [zeros(10,1); 0.1*ones(190,1)];

Для нелинейной системы с входом установившегося режима 1 и выходом установившегося режима 0,8383 вычислите отклик установившегося режима y_nl к возмущенному входу u_nl . Использовать значения состояния равновесия x вычислено ранее как начальные условия.

u_nl = 1 + delta_u;
y_nl = sim(nlsys,u_nl,x);

Вычислите отклик линейной модели на входное возмущение и добавьте его к уровню выходного равновесия.

y_lin = 0.8383 + lsim(sys,delta_u);

Сравните отклик нелинейных и линейных моделей.

time = [0:0.1:19.9]';
plot(time,y_nl,time,y_lin)
legend('Nonlinear response','Linear response about op. pt.')
title(['Nonlinear and linear model response for small step input'])

Figure contains an axes. The axes with title Nonlinear and linear model response for small step input contains 2 objects of type line. These objects represent Nonlinear response, Linear response about op. pt..

Алгоритмы

Следующие уравнения управляют динамикой idnlarx модель:

X (t + 1) = AX (t) +Bu˜ (t) y (t) = f (X, u)

где X (t) - вектор состояния, u (t) - входной, а y (t) - выходной. A и B - постоянные матрицы. (t) представляет собой [y (t), u (t)] T.

Выход в рабочей точке задается

y * = f (X *, u *)

где X * и u * - вектор состояния и вход в рабочей точке.

Линейная аппроксимация отклика модели выглядит следующим образом:

ΔX (t + 1) = (A + B1fX) ΔX (t) + (B1fu + B2) Δu (t) Δy (t) = fXΔX (t) + fuΔu (t)

где

  • ΔX (t) = X (t) X * (t)

  • Δu (t) = u (t) u * (t)

  • Δy (t) = y (t) y * (t)

  • BU˜=[B1,B2] [YU] = B1Y + B2U

  • fX=∂∂Xf (X, U) | X *, U *

  • fU=∂∂Uf (X, U) | X *, U *

Примечание

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

Представлен в R2014b