xdone Creative Commons License 2011.08.07 0 0 422

Az EPR-probléma egyik, modulációs megoldása:

 

A polarizátorok a Malus-törvény szerint engedik át a fényt, de jelen van egy moduláció, amit két közeli frekvenciájú hullám kelt. Ennek az burkolója szorzódik a Malus értékkel.

 

 valoszinuseg=sqr(cos(polarizator1-foton_polarizacio)*modamp1);

 

 

http://en.wikipedia.org/wiki/Polarizer

 

 

A modamp a két forgó hullámvektor modulációjának a burkolója.

Az eredmény 22 fokra 2.97, ami bőven jó. Ennél a szögértéknél sértik a Bell egyenlőtlenségeket a kisérletek.

 

És a moduláció is. A két oldal független, tehát klasszikus eloszlást számol a program.

 

 

tesztszog: 0, modulacio: 1.84117, kvantumfizika: 2.00002
tesztszog: 2, modulacio: 1.86134, kvantumfizika: 2.01533
tesztszog: 4, modulacio: 1.89647, kvantumfizika: 2.05798
tesztszog: 6, modulacio: 2.02935, kvantumfizika: 2.12618
tesztszog: 8, modulacio: 2.1324, kvantumfizika: 2.21184
tesztszog: 10, modulacio: 2.33257, kvantumfizika: 2.31344
tesztszog: 12, modulacio: 2.57762, kvantumfizika: 2.43092
tesztszog: 14, modulacio: 2.80614, kvantumfizika: 2.54366
tesztszog: 16, modulacio: 2.94834, kvantumfizika: 2.64659
tesztszog: 18, modulacio: 3.07892, kvantumfizika: 2.73725
tesztszog: 20, modulacio: 3.04488, kvantumfizika: 2.79418
tesztszog: 22, modulacio: 2.97815, kvantumfizika: 2.82606
tesztszog: 24, modulacio: 2.7958, kvantumfizika: 2.81676
tesztszog: 26, modulacio: 2.69214, kvantumfizika: 2.76263
tesztszog: 28, modulacio: 2.47125, kvantumfizika: 2.65808
tesztszog: 30, modulacio: 2.25672, kvantumfizika: 2.50501
tesztszog: 32, modulacio: 1.91933, kvantumfizika: 2.29487
tesztszog: 34, modulacio: 1.6886, kvantumfizika: 2.03643
tesztszog: 36, modulacio: 1.33774, kvantumfizika: 1.73813
tesztszog: 38, modulacio: 0.912208, kvantumfizika: 1.3984

 

 


#include <iostream>
#include <math.h>

using namespace std;



double radian=M_PI/180.0;
int szamlalo[16];

double sqr(double n) {return n*n;}
inline double veletlen() {return fmod((double)rand()/65500.0,1.0);}



double Ef(int s1,int s2,int s3,int s4)
{
double szamlalo_base2=(szamlalo[s1]+szamlalo[s2]+szamlalo[s3]+szamlalo[s4]);
if(szamlalo_base2==0) return 0;

return (double)(szamlalo[s1]+szamlalo[s2]-szamlalo[s3]-szamlalo[s4])/szamlalo_base2;
}

int csatorna_a=0;
int csatorna_a_=0;
int csatorna_a2=0;
int csatorna_a2_=0;
int csatorna_b=0;
int csatorna_b_=0;
int csatorna_b2=0;
int csatorna_b2_=0;

void ellenorzes_szamlalo()
{
if(csatorna_a) if(csatorna_b) szamlalo[0]++; //++
if(csatorna_a_) if(csatorna_b_) szamlalo[1]++; //--
if(csatorna_a) if(csatorna_b_) szamlalo[2]++; //+-
if(csatorna_a_) if(csatorna_b) szamlalo[3]++; //-+

if(csatorna_a) if(csatorna_b2) szamlalo[4]++; //++
if(csatorna_a_) if(csatorna_b2_) szamlalo[5]++; //--
if(csatorna_a) if(csatorna_b2_) szamlalo[6]++; //+-
if(csatorna_a_) if(csatorna_b2) szamlalo[7]++; //-+

if(csatorna_a2) if(csatorna_b) szamlalo[8]++; //++
if(csatorna_a2_) if(csatorna_b_) szamlalo[9]++; //--
if(csatorna_a2) if(csatorna_b_) szamlalo[10]++; //+-
if(csatorna_a2_) if(csatorna_b) szamlalo[11]++; //-+

if(csatorna_a2) if(csatorna_b2) szamlalo[12]++; //++
if(csatorna_a2_) if(csatorna_b2_) szamlalo[13]++; //--
if(csatorna_a2) if(csatorna_b2_) szamlalo[14]++; //+-
if(csatorna_a2_)if(csatorna_b2) szamlalo[15]++; //-+
}



double S2modulacio(double a,double b,double a2,double b2,int op)
{
    int k;

    for(k=0;k<16;k++) szamlalo[k]=0;




    for(k=0;k<500000;k++)//meres
    {
        double foton_polarizacio=veletlen()*M_PI*2;
        double foton_polarizacio2=foton_polarizacio;//veletlen()*M_PI*2;
        double valoszinuseg, valoszinuseg2,polarizator1,polarizator2;
        csatorna_a=0;
        csatorna_a_=0;
        csatorna_a2=0;
        csatorna_a2_=0;
        csatorna_b=0;
        csatorna_b_=0;
        csatorna_b2=0;
        csatorna_b2_=0;

        int o1=0,o2=0;
        polarizator1=a;if(veletlen()<0.5) {polarizator1=a2;o1=1;}
        polarizator2=b;if(veletlen()<0.5) {polarizator2=b2;o2=1;}
       


        double l1=680e-9;
        double l2=725e-9;
        double k1=2.0*M_PI/l1;
        double k2=2.0*M_PI/l2;

        double amp1x,amp1y,amp2x,amp2y,
            modamp1,modamp2,
            tav=10.76574,tav2=11.23;
        double fazis1=veletlen()*M_PI*2;
        
        amp1x = sin(fazis1+tav*k1)*0.5;
        amp1y = cos(fazis1+tav*k1)*0.5;
        amp1x += sin(fazis1+tav*k2)*0.5;
        amp1y += cos(fazis1+tav*k2)*0.5;
        modamp1=amp1x*sin(polarizator1) + amp1y*cos(polarizator1);        
        modamp1*=modamp1;
        
        amp2x = sin(fazis1+tav2*k1)*0.5;
        amp2y = cos(fazis1+tav2*k1)*0.5;
        amp2x += sin(fazis1+tav2*k2)*0.5;
        amp2y += cos(fazis1+tav2*k2)*0.5;
        modamp2=amp2x*sin(polarizator2) + amp2y*cos(polarizator2);        
        modamp2*=modamp2;


        valoszinuseg=sqr(cos(polarizator1-foton_polarizacio)*modamp1);
   
        if(valoszinuseg>veletlen())
        {
                if(o1==0) csatorna_a=1;
                else      csatorna_a2=1;
        }
        else
         {
             polarizator1+=M_PI/2;
             
        modamp1=amp1x*sin(polarizator1) + amp1y*cos(polarizator1);        
        modamp1*=modamp1;
            valoszinuseg=sqr(cos(polarizator1-foton_polarizacio)*modamp1);
           
            if(valoszinuseg>veletlen())
             {
                if(o1==0) csatorna_a_=1;
                else      csatorna_a2_=1;
            }
        }
   
        valoszinuseg=sqr(cos(polarizator2-foton_polarizacio)*modamp2);
       
        if(valoszinuseg>veletlen())
         {
                if(o2==0) csatorna_b=1;
                else      csatorna_b2=1;
        }
        else
         {
             polarizator2+=M_PI/2;
             
        modamp2=amp2x*sin(polarizator2) + amp2y*cos(polarizator2);        
        modamp2*=modamp2;
            valoszinuseg=sqr(cos(polarizator2-foton_polarizacio)*modamp2);
           
            if(valoszinuseg>veletlen())
             {
                if(o2==0) csatorna_b_=1;
                else      csatorna_b2_=1;
            }
        }
        ellenorzes_szamlalo();
    }
    //ab -ab2 a2b a2b2
    double N=0.0;

    N=Ef(0,1,2,3);
    N-=Ef(4,5,6,7);
    N+=Ef(8,9,10,11);
    N+=Ef(12,13,14,15);
   
   
    return N;
}




double S2kvantumfizika(double a,double b,double a2,double b2,int op)
{
    int k;

    for(k=0;k<16;k++) szamlalo[k]=0;




    for(k=0;k<500000;k++)
    {
        double foton_polarizacio=veletlen()*M_PI*2;
        double foton_polarizacio2=foton_polarizacio;
        double valoszinuseg, polarizator1,polarizator2;
        csatorna_a=0;
        csatorna_a_=0;
        csatorna_a2=0;
        csatorna_a2_=0;
        csatorna_b=0;
        csatorna_b_=0;
        csatorna_b2=0;
        csatorna_b2_=0;

        int o1=0,o2=0;
        polarizator1=a;if(veletlen()<0.5) {polarizator1=a2;o1=1;}
        polarizator2=b;if(veletlen()<0.5) {polarizator2=b2;o2=1;}

       
       
            valoszinuseg=sqr(cos(polarizator1-foton_polarizacio));
            if(valoszinuseg>veletlen() )
             {
                    if(o1==0) csatorna_a=1;
                    else      csatorna_a2=1;

                    foton_polarizacio2=polarizator1;//spooky action at distance
            }
            else
             {
                 polarizator1+=M_PI/2;
                
                {
                    if(o1==0) csatorna_a_=1;
                    else      csatorna_a2_=1;

                    foton_polarizacio2=polarizator1;//spooky action at distance
                }
            }
       
       
       
            valoszinuseg=sqr(cos(polarizator2-foton_polarizacio2));
            if(valoszinuseg>veletlen() )
             {
                    if(o2==0) csatorna_b=1;
                    else      csatorna_b2=1;
            }
            else
             {
                {
                    if(o2==0) csatorna_b_=1;
                    else      csatorna_b2_=1;
                }
            }
       
        ellenorzes_szamlalo();
    }
    //ab -ab2 a2b a2b2
    double N=0.0;

    N=Ef(0,1,2,3);
    N-=Ef(4,5,6,7);
    N+=Ef(8,9,10,11);
    N+=Ef(12,13,14,15);


    return N;
}



int main()
{
    for(int i=0;i<40;i+=2)
    {
    double S=0.0,tesztszog=i,a,a2,b,b2;
   
    a=0.0;
    b=tesztszog;
    a2=tesztszog*2.0;
    b2=tesztszog*3.0;
   
    a*=radian;
    b*=radian;
    a2*=radian;
    b2*=radian;


    cout << "tesztszog:" << ' ' << i << ", ";

    S=S2modulacio(a,b,a2,b2 ,0);
    cout << "modulacio:" << ' ' << S << ", ";

    S=S2kvantumfizika(a,b,a2,b2 ,0);
    cout << "kvantumfizika:" << ' ' << S << endl;
}

}

 

 

 

Előzmény: xdone (408)