wyniki z symulacji fantastyki EPR-Bell

0
f=fa-fb	 C(a,b) 	 cos(f)  	 C-cosf 	err(cos(f/2)^2)
   0 	-1.0000  	-1.0000  	 0.0000  	 0.0000
 7.5 	-0.9919  	-0.9914  	-0.0004  	 0.0002
  15 	-0.9670  	-0.9659  	-0.0011  	 0.0005
22.5 	-0.9249  	-0.9239  	-0.0010  	 0.0005
  30 	-0.8673  	-0.8660  	-0.0013  	 0.0006
37.5 	-0.7941  	-0.7934  	-0.0007  	 0.0004
  45 	-0.7073  	-0.7071  	-0.0002  	 0.0001
52.5 	-0.6088  	-0.6088  	 0.0000  	 0.0000
  60 	-0.5010  	-0.5000  	-0.0010  	 0.0005
67.5 	-0.3831  	-0.3827  	-0.0004  	 0.0002
  75 	-0.2589  	-0.2588  	 0.0000  	 0.0000
82.5 	-0.1303  	-0.1305  	 0.0002  	-0.0001
  90 	-0.0001  	 0.0000  	-0.0001  	 0.0001
97.5 	 0.1307  	 0.1305  	 0.0002  	-0.0001
 105 	 0.2596  	 0.2588  	 0.0008  	-0.0004
112.5 	 0.3832  	 0.3827  	 0.0005  	-0.0003
 120 	 0.5006  	 0.5000  	 0.0006  	-0.0003
127.5 	 0.6093  	 0.6088  	 0.0005  	-0.0002
 135 	 0.7077  	 0.7071  	 0.0006  	-0.0003
142.5 	 0.7940  	 0.7934  	 0.0007  	-0.0003
 150 	 0.8673  	 0.8660  	 0.0013  	-0.0007
157.5 	 0.9248  	 0.9239  	 0.0010  	-0.0005
 165 	 0.9670  	 0.9659  	 0.0010  	-0.0005
172.5 	 0.9919  	 0.9914  	 0.0004  	-0.0002
 180 	1.0000  	 1.0000  	 0.0000  	 0.0000

max|C-cosf| = 0.0013042

jak widać błąd w praktyce niewykrywalny ~ 0.1%

Kod dla miłośników fantastyki naukowej.

#define N (1024*1024*8) // liczba pomiarów na jeden kąt
#define K 24 // liczba kątów
//	float Corr(float fa, float fb)  // |cosf| >= f(t) -> Z = sgn(cosf);
   
   float crmax = 0; // maksymalny błąd

   for(int k = 0; k <= K; k++)
   {
      float fa = 0, fb = rad(180.0 *k/K);
      int sumeq = 0, sumdiff = 0; // liczniki zgodnych i niezgodnych 'spinów'/wyników

      for(int i = N; --i >= 0; )
       {
      // tworzymy dwie zmienne lokalne: f i q (wedle teorii Einsteina są one konieczne)
         float f = rndf()*(2*M_PI), // losowy kąt - 0..2pi
               q = rndf(); // rndf daje losową od 0 do 1
// testowanie koincydencji, czyli zgodnych par pomiarów (dowolna funkcja, która spełnia warunki lokalności)
               q = phi*(2/sqrt(1 + 3*q)-1) + (1-phi)*0.5*(1-q); // phi = 0.618...

       int a = 0, b = 0;

// test na stanowisku A:
       float c = cos(f-fa); 
       if( fabs(c) >= q ) a = (c > 0) ? 1 : -1;

// test na stanowisku B:
       c = cos(f-fb);
       if( fabs(c) >= q ) b = (c > 0) ? 1 : -1;

// wyznaczenie koincydencji z obu pomiarów
       if( a && b )
         if( a == b ) sumeq++; else sumdiff++;
      }

// --------- drukujemy wyniki ----------
     int n = sumeq+sumdiff; // sumaryczna liczba koincydencji
     float cr = (double)(-sumeq+sumdiff)/n, cs = -cos(fa-fb),
           c2 = (double)(sumeq)/n - sqr(cos(0.5*(fa-fb)));
     s += sprintf(s, "%4g \t%.4f  \t%.4f  \t%.4f  \t%.4f\r\n", 180.0*k/K, cr, cs, cr-cs, c2);
// można użyć: writeln, itp.

     if( (cr=fabs(cr-cs)) > crmax ) crmax = cr;
     if( k == K ) s += sprintf(s, "max|C-cosf| = %g", crmax);
   }

// wyniki można zapisać albo wywalić na ekran, np. tak:
   TFileIO f; f.createnew("epr.txt");
   f.write(bigstr, strlen(bigstr));

tak się produkuje efekty nielokalne z fizyki kwantowej... w domowym pececie. :)

https://en.wikipedia.org/wiki/Bell%27s_theorem

0

nowsza wersja:

   0 	-1.0000  	-1.0000  	0.00000  	0.00000  	0.796
 7.5 	-0.9917  	-0.9914  	-0.00025  	0.00013  	0.758
  15 	-0.9666  	-0.9659  	-0.00069  	0.00035  	0.725
22.5 	-0.9247  	-0.9239  	-0.00082  	0.00041  	0.697
  30 	-0.8667  	-0.8660  	-0.00068  	0.00034  	0.675
37.5 	-0.7934  	-0.7934  	-0.00006  	0.00003  	0.656
  45 	-0.7071  	-0.7071  	-0.00004  	0.00002  	0.640
52.5 	-0.6088  	-0.6088  	-0.00003  	0.00002  	0.627
  60 	-0.4999  	-0.5000  	0.00009  	-0.00004  	0.618
67.5 	-0.3826  	-0.3827  	0.00006  	-0.00003  	0.609
  75 	-0.2583  	-0.2588  	0.00051  	-0.00026  	0.604
82.5 	-0.1309  	-0.1305  	-0.00033  	0.00016  	0.600
  90 	-0.0004  	0.0000  	-0.00041  	0.00020  	0.599
97.5 	0.1303  	0.1305  	-0.00021  	0.00010  	0.600
 105 	0.2590  	0.2588  	0.00015  	-0.00008  	0.603
112.5 	0.3825  	0.3827  	-0.00023  	0.00011  	0.609
 120 	0.5000  	0.5000  	-0.00003  	0.00001  	0.617
127.5 	0.6087  	0.6088  	-0.00008  	0.00004  	0.627
 135 	0.7068  	0.7071  	-0.00026  	0.00013  	0.640
142.5 	0.7938  	0.7934  	0.00040  	-0.00020  	0.656
 150 	0.8668  	0.8660  	0.00081  	-0.00041  	0.675
157.5 	0.9247  	0.9239  	0.00084  	-0.00042  	0.698
 165 	0.9666  	0.9659  	0.00066  	-0.00033  	0.725
172.5 	0.9917  	0.9914  	0.00025  	-0.00013  	0.758
 180 	1.0000  	1.0000  	0.00000  	0.00000  	0.796

max|C-cosf| = 0.000841884

błędy poniżej 0.001

1 użytkowników online, w tym zalogowanych: 0, gości: 1