trim

Найдите точку для обрезки динамической системы

Синтаксис

[x,u,y,dx] = trim('sys')
[x,u,y,dx] = trim('sys',x0,u0,y0)
[x,u,y,dx] = trim('sys',x0,u0,y0,ix,iu,iy)
[x,u,y,dx] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx)
[x,u,y,dx,options] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx,options)
[x,u,y,dx,options] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx,options,t)

Описание

Точка для обрезки, также известная как точку равновесия, является точкой в пространстве параметров динамической системы, в которой система находится в устойчивом состоянии. Например, точка для обрезки самолета является установкой своих средств управления, которая заставляет самолет лететь прямо и выравниваться. Математически, точка для обрезки является точкой, где производные системы состояния равняются нулю. trim начинает с начальной точки и поисковых запросов, с помощью последовательного алгоритма квадратичного программирования, пока это не находит самую близкую точку для обрезки. Необходимо предоставить начальную точку неявно или явным образом. Если trim не может найти точку для обрезки, она возвращает точку, с которой сталкиваются в ее поиске, где производные состояния являются самыми близкими, чтобы обнулить в смысле минимакса; то есть, это возвращает точку, которая минимизирует максимальное отклонение от нуля производных. trim может найти точки для обрезки, которые соответствуют определенному входу, выводят или утверждают условия, и он может найти точки, где система изменяется заданным способом, то есть, точки, где производные системы состояния равняются определенным ненулевым значениям.

[x,u,y,dx] = trim('sys') находит точку равновесия модели 'sys', самый близкий к начальному состоянию системы, x0. А именно, trim находит точку равновесия, которая минимизирует максимальное абсолютное значение [x-x0,u,y]. Если trim не может найти точку равновесия около начального состояния системы, это возвращает точку, в которой система является самой близкой к равновесию. А именно, это возвращает точку, которая минимизирует abs(dx) где dx представляет производную системы. Можно получить x0 использование этой команды.

[sizes,x0,xstr] = sys([],[],[],0)

[x,u,y,dx] = trim('sys',x0,u0,y0) находит точку для обрезки самой близкой к x0, u0y0 , то есть, точка, которая минимизирует максимальное значение

abs([x-x0; u-u0; y-y0])

[x,u,y,dx] = trim('sys',x0,u0,y0,ix,iu,iy) находит точку для обрезки самой близкой к x0, u0y0 это удовлетворяет заданному набору состояния, входа и/или выходных условий. Целочисленные векторы ixiu , и iy выберите значения в x0, u0, и y0 этому нужно удовлетворить. Если trim не может найти точку равновесия, которая удовлетворяет заданному набору условий точно, он возвращает самую близкую точку, которая удовлетворяет условиям, а именно,

abs([x(ix)-x0(ix); u(iu)-u0(iu); y(iy)-y0(iy)])

[x,u,y,dx] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx) находит, что определенные неравновесные точки, то есть, указывают, в котором производные системы состояния имеют некоторое заданное ненулевое значение. Здесь, dx0 задает производные значения состояния в начальной точке поиска и idx выбирает значения в dx0 то, что поиск должен удовлетворить точно.

[x,u,y,dx,options] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx,options) задает массив параметров оптимизации что trim передачи в оптимизационную функцию, которую это использует, чтобы найти точки для обрезки. Оптимизационная функция, в свою очередь, использует этот массив, чтобы управлять процессом оптимизации и возвратить информацию о процессе. trim возвращает options массив в конце поискового процесса. Путем представления базового процесса оптимизации таким образом, trim позволяет вам контролировать и подстраивать поиск точек для обрезки.

Следующая таблица описывает, как каждый элемент влияет на поиск точки для обрезки. Элементы массива 1, 2, 3, 4, и 10 особенно полезны для нахождения точек для обрезки.

Нет.Значение по умолчаниюОписание
10Задает параметры отображения. 0 не задает отображения; 1 задает табличный выход;-1 подавляет предупреждающие сообщения.
210–4Точность вычисленная точка для обрезки должна достигнуть, чтобы отключить поиск.
310–4Точность поисковая целевая функция для обрезки должна достигнуть, чтобы отключить поиск.
410–6Точность производные состояния должна достигнуть, чтобы отключить поиск.
5N/AНе используемый.
6N/AНе используемый.
7N/AИспользуемый внутренне.
8N/AВозвращает значение поисковой целевой функции для обрезки (λ в целевом достижении).
9N/AНе используемый.
10N/AВозвращается количество итераций раньше находило точку для обрезки.
11N/AВозвращает количество функциональных оценок градиента.
120Не используемый.
130Количество ограничений равенства.
14100* (Количество переменных)Максимальное количество вычислений функции, чтобы использовать, чтобы найти точку для обрезки.
15N/AНе используемый.
1610–8Используемый внутренне.
170.1Используемый внутренне.
18N/AВозвращает длину шага.

[x,u,y,dx,options] = trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx,options,t) устанавливает время на t если система зависит вовремя.

Примечание

Если вы фиксируете какое-либо состояние, значения ввода или вывода, trim использует незаданные свободные переменные, чтобы вывести решение, которое удовлетворяет этим ограничениям.

Примеры

Полагайте, что линейная система в пространстве состояний смоделировала использование блока State-Space

x˙=Ax+Buy=Cx+Du

A, B, C, и матрицы D, чтобы войти в командной строке или в диалоговом окне параметров блоков are:.

A = [-0.09 -0.01;  1   0];
B = [ 0    -7;     0  -2];
C = [ 0     2;     1  -5];
D = [-3     0;     1   0];

Пример 1

Найти точку равновесия в этой модели под названием sysИспользование:

[x,u,y,dx,options] = trim('sys')
x =
   0
   0
u =
   0
   0
y =
   0
   0
dx =
   0
   0

Количество проделанных итераций:

options(10)
ans =
      7

Пример 2

Найти точку равновесия около x = [1;1], u = [1;1], войти

x0 = [1;1];
u0 = [1;1];
[x,u,y,dx,options] = trim('sys', x0, u0);
x =
    1.0e-13 *
   -0.5160
   -0.5169
u =
    0.3333
    0.0000
y =
   -1.0000
    0.3333
dx =
    1.0e-12 *
    0.1979
    0.0035

Количество проделанных итераций

options(10)
ans = 
      25

Пример 3

Найти точку равновесия с выходными параметрами зафиксированной к 1Использование:

y = [1;1];
iy = [1;2];
[x,u,y,dx] = trim('sys', [], [], y, [], [], iy)
x =
    0.0009
   -0.3075
u =
   -0.5383
    0.0004
y =
    1.0000
    1.0000
dx =
    1.0e-15 *
   -0.0170
    0.1483

Пример 4

Чтобы найти точку равновесия с выходными параметрами зафиксированной к 1 и набор производных к 0 и 1, использовать

y = [1;1];
iy = [1;2];
dx = [0;1];
idx = [1;2];
[x,u,y,dx,options] = trim('sys',[],[],y,[],[],iy,dx,idx)
x =
    0.9752
   -0.0827
u =
   -0.3884
   -0.0124
y =
    1.0000
    1.0000
dx =
    0.0000
    1.0000

Количество проделанных итераций

options(10)
ans = 
      13

Ограничения

Точка для обрезки найдена trim запуск с любой данной начальной точки является только локальным значением. Другой, более подходящие точки для обрезки могут существовать. Таким образом, если вы хотите найти самую подходящую точку для обрезки для конкретного приложения, важно попробовать много исходных предположений за xU, и y.

Алгоритмы

trim использует последовательный алгоритм квадратичного программирования, чтобы найти точки для обрезки. Смотрите Последовательное квадратичное программирование (SQP) (Optimization Toolbox) для описания этого алгоритма.

Представлено до R2006a