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)

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 являются постоянными матрицами.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