⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 min_vol_union_ellip.m

📁 斯坦福大学Grant和Boyd教授等开发的凸优化matlab工具箱
💻 M
字号:
% Minimum volume ellipsoid covering union of ellipsoids% Section 8.4.1, Boyd & Vandenberghe "Convex Optimization"% Original version by Lieven Vandenberghe% Updated for CVX by Almir Mutapcic - Jan 2006% (a figure is generated)%% We find a smallest ellipsoid containing m ellipsoids% { x'*A_i*x + 2*b_i'*x + c < 0 }, for i = 1,...,m%% Problem data:% As = {A1, A2, ..., Am}:  cell array of m pos. def. matrices% bs = {b1, b2, ..., bm}:  cell array of m 2-vectors% cs = {c1, c2, ..., cm}:  cell array of m scalars% ellipse dataAs = {}; bs = {}; cs = {};As{1} = [ 0.1355    0.1148;  0.1148    0.4398];As{2} = [ 0.6064   -0.1022; -0.1022    0.7344];As{3} = [ 0.7127   -0.0559; -0.0559    0.9253];As{4} = [ 0.2706   -0.1379; -0.1379    0.2515];As{5} = [ 0.4008   -0.1112; -0.1112    0.2107];bs{1} = [ -0.2042  0.0264]';bs{2} = [  0.8259 -2.1188]';bs{3} = [ -0.0256  1.0591]';bs{4} = [  0.1827 -0.3844]';bs{5} = [  0.3823 -0.8253]';cs{1} = 0.2351;cs{2} = 5.8250;cs{3} = 0.9968;cs{4} = -0.2981;cs{5} = 2.6735;% dimensionsn = 2;m = size(bs,2);    % m ellipsoids given% construct and solve the problem as posed in the bookcvx_begin sdp    variable Asqr(n,n) symmetric    variable btilde(n)    variable t(m)    maximize( det_rootn( Asqr ) )    subject to        t >= 0;        for i = 1:m            [ -(Asqr - t(i)*As{i}), -(btilde - t(i)*bs{i}), zeros(n,n);              -(btilde - t(i)*bs{i})', -(- 1 - t(i)*cs{i}), -btilde';               zeros(n,n), -btilde, Asqr] >= 0;        endcvx_end% convert to ellipsoid parametrization E = { x | || Ax + b || <= 1 }A = sqrtm(Asqr);b = A\btilde;% plot ellipsoids using { x | || A_i x + b_i || <= alpha } parametrizationnoangles = 200;angles   = linspace( 0, 2 * pi, noangles );clffor i=1:m  Ai = sqrtm(As{i}); bi = Ai\bs{i};  alpha = bs{i}'*inv(As{i})*bs{i} - cs{i};  ellipse  = Ai \ [ sqrt(alpha)*cos(angles)-bi(1) ; sqrt(alpha)*sin(angles)-bi(2) ];  plot( ellipse(1,:), ellipse(2,:), 'b-' );  hold onendellipse  = A \ [ cos(angles) - b(1) ; sin(angles) - b(2) ];plot( ellipse(1,:), ellipse(2,:), 'r--' );axis squareaxis offhold off

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -