%function [f,y] = varsketchpad(N) function [f,y] = varsketchpad(N,v,tau,delta) % minimize P{|X| > delta*N} % given that the pdf > tau % and var[X] > v global X X2 del1 ix v0 X = -N:1:N; X2 = X.^2; del1 = delta*N ix = find(abs(X)>=del1) v = v0 xdim = length(X); LB = zeros(xdim,1)+1e-9; %UB = LB + 1; UB = LB + tau; Aeq = []; % normalization Aeq(1,:) = ones(1,xdim); Beq(1,1) = 1; % zero mean Aeq(2,:) = X; Beq(2,1) = 0; f = ones(xdim,1)/xdim; if any(f>tau) fprintf('tau = %1.5f is too small; must be at least %1.5f \n\n',tau,f(1)); return end f = f + rand(size(f))*1e-5; f = f/sum(f); %[f,y] = fmincon(@myobj,f,[],[],Aeq,Beq,LB,UB,@mycon); [f,y] = fmincon(@myobj,f,[],[],Aeq,Beq,LB,UB); v = X2*f return % maximum variance [f,y] = linprog(-X(:).^2,[],[],Aeq,Beq,LB,UB); y = -y; return function y = myobj(f) global ix y = sum(f(ix)); return function [C, Ceq] = mycon(f) global X2 v0 C = v0-X2*f; Ceq = 0; return