Функция определения стационарной точки динамической системы
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
Нет.