python3 <<'PY' import math def F(M,N=400): m11,m12=M[0]; m21,m22=M[1] alpha=m11+m12+m21+m22 mu1=m11+m12; nu1=m11+m21 best=-1; arg=None for iq in range(1,N): q=alpha*iq/N q2=alpha-q lo=max(0.0,q-(alpha-mu1)) hi=min(q,mu1) if hinu1+1e-9 or c>q+1e-9 or (nu1-c)>q2+1e-9: continue c=min(max(c,0.0),nu1) comps=[] comps.append((q,[r/q,1-r/q],[c/q,1-c/q])) comps.append((q2,[(mu1-r)/q2,1-(mu1-r)/q2],[(nu1-c)/q2,1-(nu1-c)/q2])) val=0 for w,rr,ss in comps: for i in range(2): for j in range(2): val+=w*math.sqrt(M[i][j]*rr[i]*ss[j]) if val>best: best=val; arg=(q,r,c) return best,arg M=[[0.375,0.125],[0.125,0.375]] print(F(M,300)) PY