Пример #1
0
// }}}
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 ;


}
Пример #2
0
Файл: RMT.cpp Проект: Phali/libs
  // }}}
  // }}}
// 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 ;
        }
      }

    }
  }