gx111 2007. szept. 30. 11:53 | válasz | #442
klasszikus EM: -0.197056 QM joslat: 0.123347 naiv modell: -0.016344 modositott naiv modell: -0.174499 http://www.drchinese.com/David/Aspect.pdf Nos az egycsatornás kisérletre felírt Bell-egyenlõséget nem sérti a modell. De a kétcsatornásnál megyõzõen sérti. A hiba oka az lehet, hogy a kék terület miatt nem úgy esnek ki a negatív csatornák, mint ahogy azt Aspect ebben(http://arxiv.org/pdf/quant-ph/0402001) a pdf-ben a 18,oldalon a (31) résznél leírta. De én új egyenlõtlenséget nem tudok felállítani, az a feladat másra vár. double Nab=0; double Na2b=0; double Nab2=0; double Na2b2=0; void N_1(double a,double b,double a2,double b2,int no_polarizer) { Nab=0.0; Na2b=0.0; Nab2=0.0; Na2b2=0.0; for(int i=0;i<50000;i++) { double foton_pair_pol=(double)(rand()%360); int amp; int channel_a=0; int channel_a2=0; int channel_b=0; int channel_b2=0; if(50<rand()%100) { amp=(int)(97.0*pow(cos((double)(a-foton_pair_pol)*radian),2.0)); if(no_polarizer&1) channel_a=1; else if(amp>(rand()%100)) {channel_a=1;if(qm) foton_pair_pol=a;} } else { amp=(int)(97.0*pow(cos((double)(a2-foton_pair_pol)*radian),2.0)); if(no_polarizer&1) channel_a2=1; else if(amp>(rand()%100)) {channel_a2=1;if(qm) foton_pair_pol=a2;} } if(50<rand()%100) { amp=(int)(97.0*pow(cos((double)(b-foton_pair_pol)*radian),2.0)); if(no_polarizer&2) channel_b=1; else if(amp>(rand()%100)) channel_b=1; } else { amp=(int)(97.0*pow(cos((double)(b2-foton_pair_pol)*radian),2.0)); if(no_polarizer&2) channel_b2=1; else if(amp>(rand()%100)) channel_b2=1; } if(channel_a) if(channel_b) Nab+=1.0; //++ if(channel_a) if(channel_b2) Nab2+=1.0; //++ if(channel_a2) if(channel_b) Na2b+=1.0; //++ if(channel_a2) if(channel_b2) Na2b2+=1.0; //++ } } void N_2(double a,double b,double a2,double b2,int no_polarizer) { Nab=0.0; Na2b=0.0; Nab2=0.0; Na2b2=0.0; for(int i=0;i<50000;i++) { double foton_pair_pol=(double)(rand()%360),dif; int channel_a=0; int channel_a2=0; int channel_b=0; int channel_b2=0; if(50<rand()%100) { dif=fabs(a-foton_pair_pol+scatter(scatter_angle)); if(dif>=90.0&&dif<=270.0) dif=abs(180.0-dif); if(dif>=270.0) dif=abs(dif-360.0); if(no_polarizer&1) channel_a=1;//{if(67>rand()%100)? else if(dif<(double)angle_limit) channel_a=1; } else { dif=fabs(a2-foton_pair_pol+scatter(scatter_angle)); if(dif>=90.0&&dif<=270.0) dif=abs(180.0-dif); if(dif>=270.0) dif=abs(dif-360.0); if(no_polarizer&1) channel_a2=1; else if(dif<(double)angle_limit) channel_a2=1; } if(50<rand()%100) { dif=fabs(b-foton_pair_pol+scatter(scatter_angle)); if(dif>=90.0&&dif<=270.0) dif=abs(180.0-dif); if(dif>=270.0) dif=abs(dif-360.0); if(no_polarizer&2) channel_b=1; else if(dif<(double)angle_limit) channel_b=1; } else { dif=fabs(b2-foton_pair_pol+scatter(scatter_angle)); if(dif>=90.0&&dif<=270.0) dif=abs(180.0-dif); if(dif>=270.0) dif=abs(dif-360.0); if(no_polarizer&2) channel_b2=1; else if(dif<(double)angle_limit) channel_b2=1; } if(channel_a) if(channel_b) Nab+=1.0; //++ if(channel_a) if(channel_b2) Nab2+=1.0; //++ if(channel_a2) if(channel_b) Na2b+=1.0; //++ if(channel_a2) if(channel_b2) Na2b2+=1.0; //++ } } int main(int argc, char* argv[]) { double S=0.0,Naooboo,angle=22.5,a,a2,b,b2; //angle=67.5; a=0.0; b=angle; a2=angle*2.0; b2=angle*3.0; //experiments with one channel polarizer , pdf page 18 (31) (33) //1 bit = right polarizer removed //2 bit = left polarizer removed //oo = polarizer removed qm=0; N_1(a,b,a2,b2, 0); S=Nab-Nab2+Na2b+Na2b2; N_1(a,b,a2,b2, 2); S-=(Na2b2);//Na2 boo N_1(a,b,a2,b2, 1); S-=(Na2b); //Naoo b N_1(a,b,a2,b2, 1|2);//Naoo boo Naooboo=Nab; S/=Naooboo; printf("klasszikus EM: %f \n",S); qm=1; N_1(a,b,a2,b2, 0); S=Nab-Nab2+Na2b+Na2b2; N_1(a,b,a2,b2, 2); S-=(Na2b2);//Na2 boo N_1(a,b,a2,b2, 1); S-=(Na2b); //Naoo b N_1(a,b,a2,b2, 1|2);//Naoo boo Naooboo=Nab; S/=Naooboo; printf("QM joslat: %f \n",S); angle_limit=45,scatter_angle=0; N_2(a,b,a2,b2, 0); S=Nab-Nab2+Na2b+Na2b2; N_2(a,b,a2,b2, 2); S-=(Na2b2);//Na2 boo N_2(a,b,a2,b2, 1); S-=(Na2b); //Naoo b N_2(a,b,a2,b2, 1|2);//Naoo boo Naooboo=Nab; S/=Naooboo; printf("naiv modell: %f \n",S); angle_limit=30,scatter_angle=30; N_2(a,b,a2,b2, 0); S=Nab-Nab2+Na2b+Na2b2; N_2(a,b,a2,b2, 2); S-=(Na2b2);//Na2 boo N_2(a,b,a2,b2, 1); S-=(Na2b); //Naoo b N_2(a,b,a2,b2, 1|2);//Naoo boo Naooboo=Nab; S/=Naooboo; printf("modositott naiv modell: %f \n",S); }