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],idTreePartition,'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 object. The axes object 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 object. The axes object 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 являются постоянными матрицами. 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