Найдите точку для обрезки динамической системы
[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 | N/A | Не используемый. |
6 | N/A | Не используемый. |
7 | N/A | Используемый внутренне. |
8 | N/A | Возвращает значение поисковой целевой функции для обрезки (λ в целевом достижении). |
9 | N/A | Не используемый. |
10 | N/A | Возвращается количество итераций раньше находило точку для обрезки. |
11 | N/A | Возвращает количество функциональных оценок градиента. |
12 | 0 | Не используемый. |
13 | 0 | Количество ограничений равенства. |
14 | 100* (Количество переменных) | Максимальное количество вычислений функции, чтобы использовать, чтобы найти точку для обрезки. |
15 | N/A | Не используемый. |
16 | 10–8 | Используемый внутренне. |
17 | 0.1 | Используемый внутренне. |
18 | N/A | Возвращает длину шага. |
[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) для описания этого алгоритма.