idnlarx/linearize

Линеаризуйте нелинейную модель 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 модель.

    Когда продукт Control System 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)

Переходной процесс является установившимся значением 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'])

Алгоритмы

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

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

где X (t) является вектором состояния, u (t) является входом, и y (t) является выход. A и B являются постоянными матрицами. u˜(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