function nonadsketch(m0,n0) global m n m = m0; n = n0; global Ainf Binf mylinopt global saf raf [Ainf,Binf] = lipab(m,n); myopt = optimset('Diagnostics','off'); myopt = optimset('Display','off'); saf = 1; raf = n; global maxr maxr = 0; while 1 phi = randlip; fmincon(@myobj,phi',Ainf,Binf,[],[],0*phi'+saf,0*phi'+raf); fprintf('maxr ====================================== %1.5f \n', ... maxr); end return function y = myobj(phi) global m n [M,err] = fadd_lsq(phi',m,n); global maxr r = err/n; y = -r; if r > maxr global optF optF = phi; maxr = r; fprintf('maxr ====================================== %1.5f \n', ... maxr); end return function [M,err] = fadd_lsq(phi,m,n) % least-squares additive approx to Lip. func phi global Lmf global myopt if isempty(Lmf) Lmf = getLmf(m,n); else [a,b] = size(Lmf); if ~( (a==m^n) & (b==m*n) ) Lmf = getLmf(m,n); end end H = Lmf'*Lmf; f = - phi*Lmf; x = quadprog(H,f,[],[],[],[],0*f,0*f+n,[],myopt); M = reshape(x,[m n]); err = sum(abs(Lmf*x - phi')); return function phi = randlip global Ainf Binf m n mylinopt global saf raf K = genK(m,n); [x,fval] = linprog(-K,Ainf,Binf,[],[],0*K+saf,0*K+raf,0,mylinopt); phi = x'; return