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

📄 cheb.m

📁 斯坦福大学Grant和Boyd教授等开发的凸优化matlab工具箱
💻 M
字号:
function [cvx_optval,P,q,r,X,lambda] = cheb(A,b,Sigma);% Computes Chebyshev lower bounds on probability vectors%% Calculates a lower bound on the probability that a random vector% x with mean zero and covariance Sigma satisfies A x <= b%% Sigma must be positive definite%% output arguments:% - prob: lower bound on probability% - P,q,r: x'*P*x + 2*q'*x + r is a quadratic function%   that majorizes the 0-1 indicator function of the complement%   of the polyhedron,% - X, lambda:  a discrete distribution with mean zero, covariance%   Sigma and Prob(X not in C)  >= 1-prob%% maximize  1 - Tr Sigma*P - r% s.t.      [ P  q     ]             [ 0      a_i/2 ]%           [ q' r - 1 ] >= tau(i) * [ a_i'/2  -b_i ], i=1,...,m%           taui >= 0%           [ P q  ]%           [ q' r ] >= 0%% variables P in Sn, q in Rn, r in R%[ m, n ] = size( A );cvx_begin sdp    variable P(n,n) symmetric    variables q(n) r tau(m)    dual variables Z{m}    maximize( 1 - trace( Sigma * P ) - r )    subject to        for i = 1 : m,            qadj = q - 0.5 * tau(i) * A(i,:)';            radj = r - 1 + tau(i) * b(i);            [ P, qadj ; qadj', radj ] >= 0 : Z{i};        end        [ P, q ; q', r ] >= 0;        tau >= 0;cvx_endif nargout < 4,    returnendX = [];lambda = [];for i=1:m   Zi = Z{i};   if (abs(Zi(3,3)) > 1e-4)      lambda = [lambda; Zi(3,3)];      X = [X Zi(1:2,3)/Zi(3,3)];   end;end;mu = 1-sum(lambda);if (mu>1e-5)   w = (-X*lambda)/mu;   W = (Sigma - X*diag(lambda)*X')/mu;   [v,d] = eig(W-w*w');   d = diag(d);   s = sum(d>1e-5);   if (d(1) > 1e-5)      X = [X w+sqrt(s)*sqrt(d(1))*v(:,1) ...            w-sqrt(s)*sqrt(d(1))*v(:,1)];      lambda = [lambda; mu/(2*s); mu/(2*s)];   elseif (d(2) > 1e-5)      X = [X w+sqrt(s)*sqrt(d(2))*v(:,2) ...            w-sqrt(s)*sqrt(d(2))*v(:,2)];      lambda = [lambda; mu/(2*s); mu/(2*s)];   else      X = [X w];      lambda = [lambda; mu];   end;end;

⌨️ 快捷键说明

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