Найдите точку для обрезки динамической системы
[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
, u0
, y0
, то есть, точке, которая минимизирует максимальное значение
abs([x-x0; u-u0; y-y0])
[x,u,y,dx] = trim('
находит точку для обрезки самой близкой к sys
',x0,u0,y0,ix,iu,iy)x0
, u0
, y0
, который удовлетворяет заданный набор состояния, входа и/или выходных условий. Целочисленный ix
векторов, iu
и 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 особенно полезны для нахождения точек для обрезки.
Нет. | Значение по умолчанию | Описание |
---|---|---|
1 | 0 | Задает параметры экрана. 0 не задает отображения; 1 задает табличный вывод;-1 подавляет предупреждающие сообщения. |
2 | 10–4 | Точность вычисленная точка для обрезки должна достигнуть, чтобы отключить поиск. |
3 | 10–4 | Точность поисковая целевая функция для обрезки должна достигнуть, чтобы отключить поиск. |
4 | 10–6 | Точность производные состояния должна достигнуть, чтобы отключить поиск. |
5 | Нет данных | Не используемый. |
6 | Нет данных | Не используемый. |
7 | Нет данных | Используемый внутренне. |
8 | Нет данных | Возвращает значение поисковой целевой функции для обрезки (λ в целевом достижении). |
9 | Нет данных | Не используемый. |
10 | Нет данных | Возвращается количество итераций раньше находило точку для обрезки. |
11 | Нет данных | Возвращает количество функциональных оценок градиента. |
12 | 0 | Не используемый. |
13 | 0 | Количество ограничений равенства. |
14 | 100* (Количество переменных) | Максимальное количество функциональных оценок, чтобы использовать, чтобы найти точку для обрезки. |
15 | Нет данных | Не используемый. |
16 | 10–8 | Используемый внутренне. |
17 | 0.1 | Используемый внутренне. |
18 | Нет данных | Возвращает длину шага. |
[x,u,y,dx,options] = trim('
устанавливает время на sys
',x0,u0,y0,ix,iu,iy,dx0,idx,options,t)t
, если система зависит вовремя.
Если вы фиксируете какое-либо состояние, значения ввода или вывода, trim
использует незаданные свободные переменные, чтобы вывести решение, которое удовлетворяет эти ограничения.
Полагайте, что линейная система пространства состояний смоделировала использование блока State-Space
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];
Чтобы найти точку равновесия в этой модели под названием sys
, используйте:
[x,u,y,dx,options] = trim('sys') x = 0 0 u = 0 0 y = 0 0 dx = 0 0
Количество проделанных итераций:
options(10) ans = 7
Чтобы найти точку равновесия около 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
Чтобы найти точку равновесия с выходными параметрами зафиксированной к 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
Чтобы найти точку равновесия с выходными параметрами зафиксированной к 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
, начинающим с любой данной начальной точки, является только локальным значением. Другой, более подходящие точки для обрезки могут существовать. Таким образом, если вы хотите найти самую подходящую точку для обрезки для конкретного приложения, важно попробовать много исходных предположений за x
, u
и y
.
trim
использует последовательный алгоритм квадратичного программирования, чтобы найти точки для обрезки. Смотрите Последовательное квадратичное программирование (SQP) (Optimization Toolbox) для описания этого алгоритма.