パラメータ依存線形システム
とパラメータの変動範囲
が与えられたとき,この変動範囲内で連立 PDLMI
を満足する が存在するかどうかを調べる,ロバスト安定解析問題を考える.
この問題を二乗和 (SOS) を利用して解くには,連立 PDLMI を
すなわち,
と書き換え, が行列二乗和多項式となるような,行列二乗和多項式 が存在するかどうかを調べればよい.ただし, は微小な正数である.
行列二乗和多項式 を生成する手順は以下のとおりである.行列二乗和多項式は
という形式である( は PDLMI の左辺のサイズ, はクロネッカー積).まず,
zk = mololist(th,1)
とすることで,
を生成する(mololist の入力引数 1 を 2 に変更すれば,
となる).つぎに,
Sk = qf_polynominal(zk,n)
とすることで,
を決定変数とした を生成する.
>> sos_pds
-------------------------------------------------------------------------
YALMIP SOS module started...
-------------------------------------------------------------------------
Detected 198 parametric variables and 2 independent variables.
Detected 0 linear inequalities, 0 equality constraints and 0 LMIs.
Using kernel representation (options.sos.model=1).
Initially 3 monomials in R^2
Newton polytope (0 LPs).........Keeping 3 monomials (0.0468sec)
Finding symmetries..............Found no symmetries (0.0312sec)
Initially 3 monomials in R^2
Newton polytope (0 LPs).........Keeping 3 monomials (0sec)
Finding symmetries..............Found no symmetries (0sec)
Initially 3 monomials in R^2
Newton polytope (0 LPs).........Keeping 3 monomials (0sec)
Finding symmetries..............Found no symmetries (0sec)
Initially 3 monomials in R^2
Newton polytope (0 LPs).........Keeping 3 monomials (0sec)
Finding symmetries..............Found no symmetries (0sec)
Initially 6 monomials in R^2
Newton polytope (0 LPs).........Keeping 6 monomials (0sec)
Finding symmetries..............Found no symmetries (0sec)
Initially 6 monomials in R^2
Newton polytope (0 LPs).........Keeping 6 monomials (0sec)
Finding symmetries..............Found no symmetries (0sec)
SeDuMi 1.3 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.
Alg = 2: xz-corrector, theta = 0.250, beta = 0.500
Put 198 free variables in a quadratic cone
eqs m = 324, order n = 75, dim = 1172, blocks = 8
nnz(A) = 1194 + 0, nnz(ADA) = 104976, nnz(L) = 52650
it : b*y gap delta rate t/tP* t/tD* feas cg cg prec
0 : 4.53E-001 0.000
1 : 6.98E-007 2.61E-001 0.000 0.5756 0.9000 0.9000 1.00 1 1 2.8E+000
2 : 1.33E-006 1.14E-001 0.000 0.4379 0.9000 0.9000 1.00 1 1 1.2E+000
3 : 1.47E-006 4.17E-002 0.000 0.3650 0.9000 0.9000 1.00 1 1 4.4E-001
4 : 9.09E-007 1.50E-002 0.000 0.3601 0.9000 0.9000 1.00 1 1 1.6E-001
5 : 2.75E-007 4.34E-003 0.000 0.2892 0.9000 0.9000 1.00 1 1 4.6E-002
6 : 1.65E-008 2.32E-004 0.000 0.0534 0.9900 0.9900 1.00 1 1 2.5E-003
7 : 5.24E-012 8.19E-008 0.000 0.0004 0.9999 0.9999 1.00 1 1 8.7E-007
8 : 1.11E-015 2.04E-011 0.000 0.0002 0.9999 0.9999 1.00 1 1 2.0E-010
iter seconds digits c*x b*y
8 1.0 5.0 0.0000000000e+000 1.1140967750e-015
|Ax-b| = 3.3e-010, [Ay-c]_+ = 2.9E-011, |x|= 3.1e+001, |y|= 1.6e-008
Detailed timing (sec)
Pre IPM Post
2.990E-001 8.450E-001 8.500E-002
Max-norms: ||b||=3.364932e-007, ||c|| = 0,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 11.2221.
sol =
yalmiptime: 2.7980
solvertime: 1.3120
info: 'No problems detected (SeDuMi-1.3)'
problem: 0
dimacs: [3.3433e-010 0 0 3.6309e-011 -1.1141e-015 -1.1125e-015]
monos =
[9x3 sdpvar] [9x3 sdpvar] [9x3 sdpvar] [9x3 sdpvar] [18x3 sdpvar] [18x3 sdpvar]
Q =
[9x9 double] [9x9 double] [9x9 double] [9x9 double] [18x18 double] [18x18 double]
>> min(eig(Q{1})) %%% Qa1 の最小固有値
ans =
0.1333
>> min(eig(Q{2})) %%% Qa2 の最小固有値
ans =
0.1305
>> min(eig(Q{3})) %%% Qb1 の最小固有値
ans =
0.1239
>> min(eig(Q{4})) %%% Qb2 の最小固有値
ans =
0.0979
>> min(eig(Q{5})) %%% Qa0 の最小固有値
ans =
0.0613
>> min(eig(Q{6})) %%% Qb0 の最小固有値
ans =
0.0478