// }}} void CheckElementsGUE() { // {{{ int dim=40, ElementsEnsemble=1000; #ifdef ASK std::clog << "Inserte dim "; cin >> dim; std::cout <<std::endl ; std::clog << "Inserte ElementsEnsemble "; cin >> ElementsEnsemble; std::cout <<std::endl ; #endif std::clog << "dim="<<dim<<" ElementsEnsemble="<<ElementsEnsemble<<std::endl ; itpp::cmat H; double DiagonalAverage=0, DiagonalSigma=0,OffDiagonalSigma=0; std::complex<double> OffDiagonalAverage=0; for (int iEnsemble=0; iEnsemble<ElementsEnsemble; iEnsemble++) { H=RandomGUE(dim); for(int i=0; i<dim; i++) { DiagonalAverage+=real(H(i,i)); DiagonalSigma+=pow(abs(H(i,i)),2); for(int j=i+1; j<dim; j++) { // OffDiagonalAverage+=H(i,j); OffDiagonalAverage+= H(i,j) ; // OffDiagonalSigma+=pow(abs(real(H(i,j))),2) // +complex(0,1)*pow(abs(imag(H(i,j))),2); OffDiagonalSigma+=pow(abs(H(i,j)),2); } } } DiagonalAverage/=(dim*ElementsEnsemble); DiagonalSigma/=(dim*ElementsEnsemble); OffDiagonalAverage/=(0.5*dim*(dim-1)*ElementsEnsemble); OffDiagonalSigma/=(0.5*dim*(dim-1)*ElementsEnsemble); std::clog << "Aca se muestra que la matriz cumple con las relaciones de"<<std::endl ; std::clog << "\\bar{V_ij} = 0 " <<std::endl ; std::clog << "\\bar{V_ij V_kl} = \\delta_il \\delta_jk " <<std::endl ; std::clog << "\\bar{|V_ij|^2} = 1 " <<std::endl ; std::clog << "tando para elementos diagonales como no diagonales. " <<std::endl ; std::clog << "Como sigue, en orden ,deben ser 0, 1, 0 , 0, 1 " <<std::endl ; std::cout << DiagonalAverage <<std::endl ; std::cout << DiagonalSigma <<std::endl ; std::cout << OffDiagonalAverage.real() <<std::endl ; std::cout << OffDiagonalAverage.imag() <<std::endl ; std::cout << OffDiagonalSigma<<std::endl ; }
// }}} // }}} // Checking things {{{ void PrintElementsGUE(){ // {{{ int dim=4; #ifdef ASK std::clog << "Inserte dim "; cin >> dim; #endif std::clog << "dim="<<dim; itpp::cmat H; for (int n_ensemble=0;n_ensemble<100;n_ensemble++){ H=RandomGUE(dim); for(int i=0;i<dim;i++){ std::cout << real(H(i,i)) << std::endl ; for(int j=i+1;j<dim;j++){ std::cout <<H(j,i)<<std::endl ; } } } }