In[]:=
findMin[hvec_]:=Clear[c];d=Length[hvec];cvec=Array[c,d];poscons=Thread[cvec>=0];cons=poscons~Join~{Tr[cvec]==1};sol=Minimize,And@@cons,cvec;Print["C=",DiagonalMatrix[cvec/.sol[[2]]]//MatrixForm];sol[[1]];h={1,1,1,10};H=DiagonalMatrix[h];Print["H=",H//MatrixForm];Print["k=",findMin[h]]emax[H_]:=Max[Eigenvalues[H]];emin[H_]:=Min[Eigenvalues[H]];k[H_]:=;Print["user1551 bound: ",k[H]]
2
Tr[hvec*cvec]
Tr[hvec*hvec*cvec]
2
emin[H]
emax[H]
H=
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 10 |
C=
39 176 | 0 | 0 | 0 |
0 | 7 16 | 0 | 0 |
0 | 0 | 1 4 | 0 |
0 | 0 | 0 | 1 11 |
k=
40
121
user1551 bound:
1
100
Sanity check with random C’s
Sanity check with random C’s
In[]:=
randomMin[hvec_]:=d=Length[hvec];cvec=RandomVariate[NormalDistribution[],d];cvec=cvec*cvec;cvec=cvecTotal[cvec];;Min[Table[randomMin[h],{10000}]]>40/121.Min[Table[randomMin[h],{10000}]]40/121.
2
Tr[hvec*cvec]
Tr[hvec*hvec*cvec]
Out[]=
True
Out[]=
0.330579
Out[]=
0.330579