trimpoint

Функция определения стационарной точки динамической системы

Синтаксис:

SolutionFound = trimpoint(A,B,C,D,X0,U0,Y0,DX0,iX,iU,iY,iDX,X,U,Y,DX);
SolutionFound = trimpoint(A,B,C,D,X0,U0,Y0,DX0,iX,iU,iY,iDX,X,U,Y,DX,Tol);

Аргументы:

Имя Тип данных Описание
A, B, C, D matrix Матрицы, описывающие динамическую систему в пространстве состояний
X0, U0, Y0, DX0 array Массивы заданных значений соответствующих переменных системы
iX, iU, iY, iDX intarray Массивы номеров соответствующих переменных системы, для которых найденное решение будет совпадать с соответствующими заданными значениями
X, U, Y, DX array Массивы начальных значений переменных системы. Также являются выходными переменными функции, содержащими найденные значения переменных системы.
Tol double Требуемая точность численного решения. По умолчанию используется точность 1e-6

Описание:

Динамическая система задается в виде:

Количество переменных состояния (NX), входных/управляющих переменных (NU) и выходных переменных (NY) определяется размерами массивов X0, U0, Y0. Аргументы функции должны иметь размеры: A[NX×NX], B[NX×NU], C[NY×NX], D[NY×NU], DX0[NX]. Аргументы iX, iU, iY, iDX могут иметь произвольный размер. Аргументы X, U, Y, DX могут иметь произвольный размер, в ходе выполнения функции их размер будет изменен в соответствии с количеством соответствующих переменных системы. Если размеры массивов начальных значений X, U, Y, DX будут меньше размеров соответствующих переменных системы, то недостающие начальные значения будут приняты равными нулю.

Функция позволяет определить значения одних переменных (X, U, Y, DX) динамической системы при заданных значениях других переменных (X0, U0, Y0, DX0) (при заданных ограничениях). Массивы iX, iU, iY, iDX задают номера переменных системы, для которых найденное решение должно удовлетворять условию вида: X[iX[i]] = X0[iX[i]]. Нумерация элементов массивов начинается с 1. При помощи аргументов X, U, Y, DX возможно задание начальных условий для численного метода поиска решения.

При помощи метода Ньютона относительно X и U решается система уравнений вида (векторы-строки заменяются на векторы-столбцы):

где E – единичные матрицы соответствующих размерностей. При решении учитываются только те элементы массивов X0, U0, Y0, DX0, которые указаны в массивах iX, iU, iY, iDX.

В результате выполнения функции найденные значения переменных состояния будут записаны в аргументы X, U, Y, DX, поэтому эти аргументы требуется задавать как заранее определенные переменные типа array.

trimpoint(A,B,C,D,X0,U0,Y0,DX0,iX,iU,iY,iDX,X,U,Y,DX) – функция позволяет найти решение с точностью по умолчанию 1e-6.

trimpoint(A,B,C,D,X0,U0,Y0,DX0,iX,iU,iY,iDX,X,U,Y,DX,Tol) – функция позволяет найти решение с вручную заданной точностью Tol.

Результат:

Имя Тип данных Описание
SolutionFound boolean Двоичный флаг, указывающий удалось ли найти решение с заданной точностью. Решение не будет найдено, если заданы противоречащие друг другу ограничения или если для достижения заданной точности потребуется слишком большое количество итераций численного метода. Найденные значения переменных системы будут записаны в аргументы X, U, Y, DX

Пример:

Необходимо определить значения переменных состояния таким образом, чтобы вторая выходная переменная имела значение 2, а вектор производных переменных состояния имел значение [0,1]:

//Динамическая система в пространстве состояний
A = [[-0.09,-0.01];[1,0]];
B = [[0,-7];[0,-2]];
C = [[0,2];[1,-5]];
D = [[-3,0];[1,0]];

//Заданные значения переменных системы
X0 = [0,0];
U0 = [0,0];
Y0 = [0,2];
DX0 = [0,1];

//Номера заданных значений переменных системы
iX = [];        //Нет ограничений на X
iU = [];        //Нет ограничений на U
iY = [2];       //Требуется, чтобы Y[2] = Y0[2]
iDX = [1,2];    //Требуется, чтобы DX[1] = DX0[1] и DX[2] = DX0[2]

//Начальные значения и результаты
X = [];
U = [];         //Для расчета будут использованы нулевые начальные условия,
Y = [];         //поскольку в функцию передаются пустые массивы
DX = [];
	 
SolutionFound = trimpoint(A,B,C,D,X0,U0,Y0,DX0,iX,iU,iY,iDX,X,U,Y,DX,1e-3);

В результате выполнения функции переменная SolutionFound примет значение TRUE, поскольку решение удовлетворяет заданной точности 1e-3. Переменные системы примут значения:

X = [0.97487948 , -0.23130724]

U = [-0.13136794 , -0.01223094]

Y = [-0.06851068 , 2.0000478]

DX = [0.00019051 , 0.99934136]

Найденные значения удовлетворяют заданным ограничениям:

Y0[2] = 2 ≈ Y[2] = 2.0000478

DX0[1] = 0 ≈ DX[1] = 0.00019051

DX0[2] = 1 ≈ DX[2] = 0.99934136

Дополнительные материалы:

Нет.