python3 <<'PY' import math a=0.25; b=1.0/12 def G3(y2,y3): y1=3*y2-2.0/3 if y1<-1e-12 or y1>b+1e-12: return -1 al=2*a+2*b-y1-y2 mu1=a+b-y1; mu2=b+a-y2; nu1=a+b r1=mu1/al; r2=mu2/al; s1=nu1/al; s3=1-s1 if r1<-1e-12 or r2<-1e-12 or s1<-1e-12 or s3<-1e-12: return -1 A=al*(math.sqrt(a*r1*s1)+math.sqrt(b*r1*s3)+math.sqrt(b*r2*s1)+math.sqrt(a*r2*s3)) beta=a+b-y3 B=math.sqrt(beta)*(b+math.sqrt(a*(a-y3))) gam=y1+y2+y3 C=math.sqrt(gam)*(math.sqrt(b*y1)+math.sqrt(a*y2)+math.sqrt(a*y3)) return A+B+C best=-1; arg=None N=1000 y2lo=2.0/9; y2hi=0.25 for i in range(N+1): y2=y2lo+(y2hi-y2lo)*i/N for j in range(N+1): y3=a*j/N g=G3(y2,y3) if g>best: best=g; arg=(y2,y3) print("best",best,arg,"y1",3*arg[0]-2/3,"cost",1-best) PY