python3 <<'PY' import math a=0.25; b=1.0/12 def F(M,N=40): m11,m12=M[0]; m21,m22=M[1] alpha=m11+m12+m21+m22 if alpha<1e-15: return 0.0 mu1=m11+m12; nu1=m11+m21 best=-1.0 for iq in range(1,N): q=alpha*iq/N; q2=alpha-q lo=max(0.0,q-(alpha-mu1)); hi=min(q,mu1) for ir in range(1,N): r=lo+(hi-lo)*ir/N den=r*(alpha-q)/q-(mu1-r) if abs(den)<1e-14: continue c=(m11*(alpha-q)-(mu1-r)*nu1)/den if c<-1e-8 or c>nu1+1e-8 or c>q+1e-8 or nu1-c>q2+1e-8: continue c=min(max(c,0.0),nu1) r1=r/q; s1=c/q; r2=(mu1-r)/q2; s2=(nu1-c)/q2 val=q*(math.sqrt(max(0,m11*r1*s1))+math.sqrt(max(0,m12*r1*(1-s1)))+math.sqrt(max(0,m21*(1-r1)*s1))+math.sqrt(max(0,m22*(1-r1)*(1-s1))))+q2*(math.sqrt(max(0,m11*r2*s2))+math.sqrt(max(0,m12*r2*(1-s2)))+math.sqrt(max(0,m21*(1-r2)*s2))+math.sqrt(max(0,m22*(1-r2)*(1-s2)))) if val>best: best=val return best def G(y1,y2,y3): M=[[a,b-y1],[b,a-y2]] gam=y1+y2+y3 ct=math.sqrt(gam)*(math.sqrt(max(0,b*y1))+math.sqrt(max(0,a*y2))+math.sqrt(max(0,a*y3))) bt=(a+b-y3)**1.5 return F(M)+ct+bt besty=None; best=-1 N1=5; N2=5; N3=5 for i1 in range(N1+1): y1=b*i1/N1 for i2 in range(N2+1): y2=a*i2/N2 for i3 in range(N3+1): y3=a*i3/N3 g=G(y1,y2,y3) if g>best: best=g; besty=(y1,y2,y3) print("best",best,besty,"1-best",1-best) PY