Joy's 7-sphere 3D 2-Particle Simulation
Posted: Thu Jul 04, 2019 12:32 pm
Here is the GAViewer code for Joy Christian's 7-sphere with 3D vectors for the two particle simulation that validates the math in the product calculation event by event for,
https://arxiv.org/abs/1806.02392
"Quantum correlations are weaved by the spinors of the Euclidean primitives"
Typical output is,
And then we also have,
mean = 0.013063 + 0.016194*e2^e3 + 0.000806*e3^e1 + 0.020968*e1^e2 + 0.016743*e1^e0 + 0.000431*e2^e0 + -0.008496*e3^e0 + 0.004857*e1^e2^e3^e0
aveA = 0.022000
aveB = -0.022000
.
https://arxiv.org/abs/1806.02392
"Quantum correlations are weaved by the spinors of the Euclidean primitives"
- Code: Select all
//Adaptation of Albert Jan Wonnink's original code based on GAViewer for Joy Christian's S^7 Model of the 2-particle
//Correlations: http://challengingbell.blogspot.com/2015/03/numerical-validation-of-vanishing-of.html
function getRandomLambda()
{
if( rand()>0.5) {return 1;} else {return -1;}
}
function getRandomUnitVector() //uniform random unit vector:
//http://mathworld.wolfram.com/SpherePointPicking.html
{
v=randGaussStd()*e1+randGaussStd()*e2+ randGaussStd()*e3; //3D Vectors
return normalize(v);
}
batch test()
{
set_window_title("3D Test of Joy Christian's Local-Realistic S^7 Model for the 2-particle correlations");
default_model(p3ga);
N=1000; //number of iterations (trials)
I=e1^e2^e3;
s=0;
t=0;
u=0;
for(nn=0;nn<N;nn=nn+1) //perform the experiment N times
{
ar=getRandomUnitVector()/(sqrt(2));
ad=normalize(ar.(e1*e2+e2*e3+e3*e1))/(sqrt(2));
Da=((I ar) + (ad e0));
br=getRandomUnitVector()/(sqrt(2));
bd=normalize(br.(e1*e2+e2*e3+e3*e1))/(sqrt(2));
Db=((I br) + (bd e0));
lambda=getRandomLambda(); //lambda is a fair coin, giving the +1 or -1 choice
A=(-Da)*(lambda*Da); //eq.(188) of https://arxiv.org/abs/1806.02392
B=(lambda*Db)*(Db); //eq.(189) of https://arxiv.org/abs/1806.02392
LA=A/(-Da);
LB=B/(Db); //implements the twist in the Hopf bundle of S^3
q=0;
if(lambda==1) {q=(LA LB);} else {q=(LB LA);}
s=s+q;
print(corrs=scalar(q), "f"); //Output the correlations
p_ar=atan2(scalar(Da/(e3^e1)), scalar(Da/(e2^e3)));
p_br=atan2(scalar(Db/(e3^e1)), scalar(Db/(e2^e3)));
p_ad=atan2(scalar(Da/(e2^e0)), scalar(Da/(e1^e0)));
p_bd=atan2(scalar(Db/(e2^e0)), scalar(Db/(e1^e0)));
t_ar=acos(scalar(sqrt(2)*Da/(e1^e2)));
t_br=acos(scalar(sqrt(2)*Db/(e1^e2)));
t_ad=acos(scalar(sqrt(2)*Da/(e3^e0)));
t_bd=acos(scalar(sqrt(2)*Db/(e3^e0)));
calc128_nr=-(sin(t_ar)*cos(p_ar)*sin(t_br)*cos(p_br)+sin(t_ar)*sin(p_ar)*sin(t_br)*sin(p_br)+cos(t_ar)*cos(t_br))/2;
calc128_nd=-(sin(t_ad)*cos(p_ad)*sin(t_bd)*cos(p_bd)+sin(t_ad)*sin(p_ad)*sin(t_bd)*sin(p_bd)+cos(t_ad)*cos(t_bd))/2;
calc128=calc128_nr+calc128_nd;
print(calc128, "f"); //eq. (128) of https://arxiv.org/abs/1806.02392
t=t+A;
u=u+B;
}
mean=s/N;
print(mean, "f"); //shows the vanishing of the non-scalar part
aveA=t/N;
print(aveA, "f"); //verifies that individual average < A > = 0
aveB=u/N;
print(aveB, "f"); //verifies that individual average < B > = 0
prompt();
}
Typical output is,
- Code: Select all
corrs = 0.798286
calc128 = 0.798286
corrs = 0.332107
calc128 = 0.332107
corrs = 0.637114
calc128 = 0.637114
corrs = -0.069266
calc128 = -0.069266
corrs = 0.700589
calc128 = 0.700589
corrs = -0.149366
calc128 = -0.149366
corrs = 0.221621
calc128 = 0.221621
corrs = -0.474967
calc128 = -0.474967
corrs = 0.381021
calc128 = 0.381021
corrs = 0.944316
calc128 = 0.944316
corrs = -0.764949
calc128 = -0.764949
corrs = -0.835346
calc128 = -0.835346
corrs = 0.730391
calc128 = 0.730391
corrs = -0.097801
calc128 = -0.097801
corrs = -0.077297
calc128 = -0.077297
corrs = -0.698316
calc128 = -0.698316
corrs = 0.611270
calc128 = 0.611270
corrs = -0.007254
calc128 = -0.007254
corrs = 0.346173
calc128 = 0.346173
corrs = 0.034606
calc128 = 0.034606
corrs = -0.949863
calc128 = -0.949863
corrs = 0.548855
calc128 = 0.548855
corrs = -0.994516
calc128 = -0.994516
corrs = 0.866160
calc128 = 0.866160
corrs = 0.367073
calc128 = 0.367073
corrs = 0.638515
calc128 = 0.638515
corrs = 0.676131
calc128 = 0.676131
corrs = 0.611254
calc128 = 0.611254
corrs = -0.542694
calc128 = -0.542694
corrs = 0.370916
calc128 = 0.370916
corrs = 0.498773
calc128 = 0.498773
corrs = -0.501780
calc128 = -0.501780
corrs = 0.911976
calc128 = 0.911976
corrs = 0.864084
calc128 = 0.864084
corrs = 0.017605
calc128 = 0.017605
corrs = 0.233319
calc128 = 0.233319
corrs = 0.713419
calc128 = 0.713419
corrs = -0.346062
calc128 = -0.346062
corrs = -0.709437
calc128 = -0.709437
corrs = -0.584237
calc128 = -0.584237
corrs = 0.006714
calc128 = 0.006714
corrs = -0.267126
calc128 = -0.267126
corrs = -0.628350
calc128 = -0.628350
corrs = 0.359896
calc128 = 0.359896
corrs = 0.259837
calc128 = 0.259837
corrs = -0.985534
calc128 = -0.985534
corrs = -0.239030
calc128 = -0.239030
corrs = 0.820742
calc128 = 0.820742
corrs = -0.539447
calc128 = -0.539447
corrs = -0.836740
calc128 = -0.836740
corrs = -0.892223
calc128 = -0.892223
corrs = -0.566705
calc128 = -0.566705
corrs = -0.121463
calc128 = -0.121463
And then we also have,
mean = 0.013063 + 0.016194*e2^e3 + 0.000806*e3^e1 + 0.020968*e1^e2 + 0.016743*e1^e0 + 0.000431*e2^e0 + -0.008496*e3^e0 + 0.004857*e1^e2^e3^e0
aveA = 0.022000
aveB = -0.022000
.