jk22
- 732
- 25
In the hidden variable model for CHSH, I computed the probabilities for the CHSH operators to have results -4,-2,0,2,4, then the average S.
Using a computer program, I could find the minimum of that function, obtaining S>2 :
giving
Shv=-2.018518 b=0.000000 b1=0.334000 a1=0.166000But there should be an error in the S function.
Using a computer program, I could find the minimum of that function, obtaining S>2 :
C:
#include<stdio.h>
#include<math.h>
double PI=4.0*atan(1.0);
double S(double b, double b1, double a1)
{
double x=a1-b, y=b1-a1;
double ret=-4.0*(1.0-b)*b1*(1.0-x)*(1.0-y);
ret+=-2.0*(1.0-x)*(1.0-y)*(b*b1);
ret+=-2.0*(1.0-b)*(1.0-b1)*(1.0-x)*(1.0-y);
ret+=-2.0*(1.0-b)*b1*x*(1.0-y);
ret+=-2.0*(1.0-b)*b1*(1.0-x)*y;
ret+=2.0*b*b1*x*y;
ret+=2.0*(1.0-b)*b1*x*y;
ret+=2.0*b*(1.0-b1)*x*(1.0-y);
ret+=2.0*b*(1.0-b1)*(1.0-x)*y;
ret+=4.0*b*(1.0-b1)*x*y;
return(ret);
}
int main(void)
{
int sub=500;
int si,sj,sk;
double smax=-5.0, smin=5.0;
double val;
double b,b1,a1;
printf("%lf\n", S(.25, .5, .75));
for(int i=0;i<sub;i++)
for(int j=i;j<sub;j++)
for(int k=j;k<sub;k++)
{
b=(double)i/(double)sub;
a1=(double)j/(double)sub;
b1=(double)k/(double)sub;
val=S(b,b1,a1);
if(val>smax) smax=val;
if(val<smin)
{
smin=val;
si=i;
sj=j;
sk=k;
}
}
printf("Shv=%lf b=%lf b1=%lf a1=%lf\n", smin, (double)si/(double)sub, (double)sk/(double)sub, (double)sj/(double)sub);
b=(double)si/(double)sub*PI;
a1=(double)sj/(double)sub*PI;
b1=(double)sk/(double)sub*PI;
printf("Sqm=%lf\n", -cos(b)+cos(b1)-cos(a1-b)-cos(b1-a1));
}
giving
Shv=-2.018518 b=0.000000 b1=0.334000 a1=0.166000But there should be an error in the S function.