function thaboundcheck global m n mrat m=2; n=4; mrat = 0; xdim = m^n; Aeq = ones(1,xdim); Beq = ones(1,1); LB = zeros(xdim,1); LB = LB+1e-9; UB = ones(xdim,1); while 1 P = pnormdim(rand(m^n,1),1); x = P; [x,fv] = fmincon(@myopt,x,[],[],Aeq,Beq,LB,UB); fprintf('mrat = %1.9f \n',mrat); end return function y = myopt(x) global m n mrat P = x; tha = zeros(1,n-1); for i=1:n-1 tha(i) = thai(P,m,n,i); end hhat = zeros(n); for i=1:n-1 for j=i+1:n x = 1; for k=i:j-1 x = x * tha(k); end hhat(i,j) = x; end end [hh,Ht,H0] = gethhn(P,m,n); Hhat = 1+sum(hhat,2)'; Hhat = max(Hhat); if 0 tol = 1e-10; hh = max(hh,tol); hhat = max(hhat,tol); r = 0; for i=1:n-1 for j=i+1:n r = max(r,hh(i,j)/hhat(i,j)); end end end r = H0/Hhat; if r > mrat global mP mrat = r; mP = P; fprintf('mrat = %1.9f \n',mrat); save THA P mrat end y = -r; return