function ksipsi(m0,n0) global m n randomize m = m0; n = n0; global pstr pstr = mfilename global lstr rstr global Ainf Binf mylinopt mylinopt = optimset('Diagnostics','off'); mylinopt = optimset('Display','off'); [Ainf,Binf] = lipab(m,n); Ain = -ones(1,m^n); Bin = -1e-6; global maxr mind %maxr = 0; mind = 1e10; while 1 x = randn(m^n,1); if sum(x)<0 x = -x; end y = fmincon(@myobj,x,Ain,Bin,[],[],0*x-1e3,0*x+1e6); %y = fminunc(@myobj,x); fprintf('%s: PARAMS: n=%d m=%d \n',pstr,n,m); %fprintf('RAT _________________________ maxr = %1.9f \n',maxr); fprintf('DIF _________________________ mind = %1.9f \n',mind); end return function y = myobj(x) global m n global pstr if sum(x)<0 x = -x; end lhs = Ksi(x); %rhs = Psi(-x,m,n); rhs = npsi(x,m,n); %rhs = sum(pl) %rhs = sum(x); y = lhs - rhs; %r = rhs/(lhs+eps); %y = -r; global maxr mind %if (r > maxr) if (y < mind) global optx optx = x; %maxr = r; mind = y; %if y<-10 % 'bla' %end fprintf('%s: PARAMS: n=%d m=%d \n',pstr,n,m); %fprintf('RAT _________________________ maxr = %1.9f \n',maxr); fprintf('DIF _________________________ mind = %1.9f \n',mind); end return function [y,phi] = Ksi(K) global Ainf Binf m n mylinopt try [phi,y] = linprog(K,Ainf,Binf,[],[],0*K+1,0*K+1e3,0,mylinopt); catch [phi,y] = linprog(K,Ainf,Binf,[],[],0*K+1,0*K+1e2,0,mylinopt); end %phi = phi'; return