Приведенный конкретный пример переменных решения, оцените все переменные условия в системе LMIs
evalsys = evallmi(lmisys,decvars)
evallmi
оценивает все ограничения LMI для конкретного экземпляра decvars
вектора переменных решения. Вспомните, что decvars
полностью определяет значения матричных переменных X 1..., XK. “Оценка” состоит из замены всех условий, включающих X 1..., XK их матричным значением. Вывод evalsys
является системой LMI, содержащей только постоянные условия.
Функциональный evallmi
полезен для валидации решателей LMI вывод. Вектор, возвращенный этими решателями, может питаться непосредственно evallmi
, чтобы оценить все переменные условия. Матричные значения левых и правых сторон каждого LMI затем возвращены showlmi
.
evallmi
предназначается, чтобы работать с выводом решателей LMI. Оценивать весь LMIs для конкретных экземпляров матричных переменных X 1..., XK, сначала сформируйте соответствующий вектор решения x с mat2dec
и затем вызовите evallmi
с x, как введено.
Рассмотрите проблему выполнимости нахождения X> 0 таким образом что
AT XA – X + I <0
где
Эта система LMI задана:
setlmis([]) X = lmivar(1,[2 1]) % full symmetric X lmiterm([1 1 1 X],A',A) % LMI #1: A'*X*A lmiterm([1 1 1 X],-1,1) % LMI #1: -X lmiterm([1 1 1 0],1) % LMI #1: I lmiterm([-2 1 1 X],1,1) % LMI #2: X lmis = getlmis
Чтобы вычислить решение xfeas
, вызовите feasp
[tmin,xfeas] = feasp(lmis)
Результат
tmin = -4.7117e+00 xfeas' = 1.1029e+02 -1.1519e+01 1.1942e+02
Ограничения LMI поэтому выполнимы начиная с tmin
<0. Решение X, соответствующий выполнимому вектору решения xfeas
, было бы дано X = dec2mat(lmis,xfeas,X)
.
Чтобы проверять, что xfeas
действительно выполним, оцените все ограничения LMI путем ввода
evals = evallmi(lmis,xfeas)
Левыми и правыми сторонами первого и второго LMIs затем дают
[lhs1,rhs1] = showlmi(evals,1) [lhs2,rhs2] = showlmi(evals,2)
и тест
eig(lhs1-rhs1) ans = -8.2229e+01 -5.8163e+01
подтверждает, что первое ограничение LMI удовлетворено xfeas
.