Keresés

Részletes keresés

m0kus Creative Commons License 2015.01.10 0 0 1034

A PDF-ben található harang-görbe eredete ebben az esetben ismeretlen. De a probléma szemszögéből most lényegtelen. A radír visszaállítja az interferencia mintát, de csak akkor, ha ez a sor működik:

if(eraser_on) photon_pol_b=eraser_alpha;//backwark causality

 

Ezzel elérhető, hogy a Ds oldali QWP-re határozott polarizálságú fény jusson, így nem fog kialakulni cirkuláris polarizáltság, így lesz interferencia. 

 

Nyilván ha csak egyféle polarizáltságú lenne a QWP előtt a fény, akkor ez kimérhető lenne. A valóságban ez nem kimutatható, de ez a probléma egyszerűen megoldható azzal, hogy egyszer az egyik foton jön erre, másszor meg az erre merőleges polaritású. így már nem észrevehető fix polarizáltság, mégis helyes az eredmény.

Előzmény: m0kus (1032)
m0kus Creative Commons License 2015.01.10 0 0 1033

Az interferencia-zaj kiesett a +dphase segítségével. Ez eltolja a hullámot, hogy ne mindig ugyan olyan fázisban induljon a QWP-ről. Ez okozta a képeken a zajt.

 

 

A quarterwaveplate függvény részletesebben. Adott két tengely, a gyors és a lassú. A lassú irányú komponense a hullámnak el fog tolódni 90 fokkal. (a fázisa). Ekkor a hullám forogni fog, ha addig polarizált volt. Ha a fény polarizációs iránya egybe esik a gyors tengellyel, akkor nincs lassú komponens, így nincs ami eltolódjon.

 

A gyors tengely:

    add_amp(&axis_fast,qwp,1.0,1.0);

A lassú:
    add_amp(&axis_slow,qwp+90.0/radian,1.0,1.0);

A bejövő fény, phase a polari
    add_amp(&input_wave,phase,1.0,1.0);

 

Ennek a két tengelyre eső komponense:
    double amp_fast=dot(&axis_fast,&input_wave);
    double amp_slow=dot(&axis_slow,&input_wave);
    

A két tengely irányú új hullám:
    amp_fast=cos(dist+dphase)*amp_fast;
    amp_slow=sin(dist+dphase)*amp_slow;//-+90 phase shift

A sin() hullám az ugyan az mint a cos(), de 90 fokkal el van tolva a fázisa.

    

És ezek összege:
    v->x += (axis_fast.x*amp_fast + axis_slow.x*amp_slow)*ax;
    v->y += (axis_fast.y*amp_fast + axis_slow.y*amp_slow)*ay;

 

m0kus Creative Commons License 2015.01.10 0 0 1032


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <X11/Xlib.h>


Display *dpy;
Window win;
GC gc;
double radian=(180.0/M_PI);


void pixel(int x,int y,int color)
{
    XSetForeground(dpy,gc,color);
    XDrawPoint(dpy, win, gc, x,y);
}
void line(int x1,int y1,int x2,int y2,int color)
{
    XSetForeground(dpy,gc,color);
    XDrawLine(dpy, win, gc, x1,y1,x2,y2);
}
double sqr(double n) // x^2
{
    return n*n;
}
double doublerand() //random szam  0.0-tol 1.0-ig
{
    return (double)(rand()%10000)/10000.0;
}



struct vec2d
{
    double x,y;
    
    vec2d() {x=0;y=0;}
};
void add_amp(vec2d *v,double phase,double ax,double ay)
{
    v->x += sin(phase)*ax;
    v->y += cos(phase)*ay;
};
void add_polarizer(vec2d *v,double phase)
{
    v->x *= sin(phase);
    v->y *= cos(phase);
};
double dot(vec2d *v1,vec2d *v2)
{
    return v1->x*v2->x + v1->y*v2->y;
}
void add_quarterwaveplate(vec2d *v,double phase,double dist,double qwp,double ax,double ay,double dphase)
{
    vec2d axis_fast,axis_slow,input_wave;
    
    add_amp(&axis_fast,qwp,1.0,1.0);
    add_amp(&axis_slow,qwp+90.0/radian,1.0,1.0);
    add_amp(&input_wave,phase,1.0,1.0);

    double amp_fast=dot(&axis_fast,&input_wave);
    double amp_slow=dot(&axis_slow,&input_wave);
    
    amp_fast=cos(dist+dphase)*amp_fast;
    amp_slow=sin(dist+dphase)*amp_slow;//-+90 phase shift
    
    v->x += (axis_fast.x*amp_fast + axis_slow.x*amp_slow)*ax;
    v->y += (axis_fast.y*amp_fast + axis_slow.y*amp_slow)*ay;
};
double probalbility(vec2d *v)
{
    return (sqr(v->x) + sqr(v->y));
}


int main()
{
    dpy = XOpenDisplay(0);
    win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0,0, 800, 550, 0,0,0);
    
    XSelectInput(dpy, win, StructureNotifyMask);
    XMapWindow(dpy, win);
    gc = XCreateGC(dpy, win, 0, 0);
    
    for(;;) { XEvent e; XNextEvent(dpy, &e); if (e.type == MapNotify) break; }



    for(int x=0;x<400;x++)    
    {
        pixel(x,500,0x008800);
        pixel(x,300,0x008800);
        pixel(x,100,0x008800);
    }
    
    

    for(int ds_x=0;ds_x<400;ds_x++)//Ds position  -+4mm    
    {
        int photon_counter=0;
        int maxphoton=400;
        int maxwide=10;

        int qwplate_on=1;
        int eraser_on=1;
        double eraser_alpha=45.0/radian;
//        double eraser_alpha=-45.0/radian;
        
        for(int p=0;p<maxphoton;p++)// max number of photon
        {
            double dphase=M_PI*2*doublerand();
#if 1
            double photon_pol_a=M_PI*2*doublerand();
            double photon_pol_b=photon_pol_a+M_PI/2;
#else            
            double photon_pol_a=0; //polarized lightsource
            if(doublerand()>0.5) photon_pol_a=M_PI/2;
            double photon_pol_b=photon_pol_a+M_PI/2;
            if(doublerand()>0.5) photon_pol_b=photon_pol_a-M_PI/2;
#endif


            double ds_distance=1250.0-420.0;//mm  125-42 cm
            double dp_distance=980.0; //98 cm
            double wavelength=702.2e-6;//mm      e-9m
            double k=2.0*M_PI/wavelength;
            vec2d amp_dp,amp_ds;

            if(eraser_on) photon_pol_b=eraser_alpha;//backwark causality


            double hole_dist=0.2;//0.2
            double hole_wide=0.2;//200 micrometer wide   
            double ds_pos=4.0*(double)(ds_x-200)/200.0;//+-4mm     Ds position

            for(int w=0;w<maxwide;w++)//slit wide
            {
                int vary=rand()%2;
                double hole1x=hole_dist/2.0 + hole_wide*(double)w/maxwide;//hole
                double hole2x=-hole_dist/2.0 - hole_wide*(double)w/maxwide;
                double dist1=sqrt(sqr(ds_pos - hole1x) + sqr(ds_distance));
                double dist2=sqrt(sqr(ds_pos - hole2x) + sqr(ds_distance));    


                if(qwplate_on)
                {
                    add_amp(&amp_dp,photon_pol_a ,0.5,0.5);
                    add_amp(&amp_dp,photon_pol_a ,0.5,0.5);

                    add_quarterwaveplate(&amp_ds,photon_pol_b , dist1*k,-45.0/radian,0.5, 0.5,dphase);
                    add_quarterwaveplate(&amp_ds,photon_pol_b , dist2*k, 45.0/radian,0.5, 0.5,dphase);
                }
                else
                {
                    add_amp(&amp_dp,photon_pol_a ,0.5,0.5);
                    add_amp(&amp_dp,photon_pol_a ,0.5,0.5);
                    add_amp(&amp_ds,photon_pol_b +dist1*k ,0.5,0.5);
                    add_amp(&amp_ds,photon_pol_b +dist2*k ,0.5,0.5);
                }
            }
            if(eraser_on) add_polarizer(&amp_dp,eraser_alpha);// polarizer before Dp
            
            amp_dp.x/=maxwide;//normalized
            amp_dp.y/=maxwide;
            amp_ds.x/=maxwide;
            amp_ds.y/=maxwide;


            if((probalbility(&amp_dp))>doublerand())
            if((probalbility(&amp_ds))>doublerand())
                photon_counter+=1;
        }

        pixel(ds_x,500-photon_counter,0xffff00);
    }

/*
        double dist1=0.0;
        for(int p=0;p<1000;p++)//quarterwaveplate
        {
            vec2d amp_dp,amp_ds;
            add_quarterwaveplate(&amp_ds,0.0/radian , dist1*M_PI/100.0,45.0/radian,0.5, 0.5);

            line(200,200,200+200.0*amp_ds.x,200+200.0*amp_ds.y,0x00ff00);
            dist1+=5.0;
            
            XFlush(dpy);
            getchar();
        }
*/
    XFlush(dpy);
    getchar();
        
    return 0;
}

m0kus Creative Commons License 2015.01.10 0 0 1031

add_quarterwaveplate()

 

A kisérletezőknek azért leírom, hogy ez a függvény csak lineárisan polarizált bemenettel helyes. De ebben az esetben nem is kell más.

Előzmény: m0kus (1029)
m0kus Creative Commons License 2015.01.10 0 0 1030

http://hyperphysics.phy-astr.gsu.edu/hbase/phyopt/quarwv.html

 

Namost a lambda 4-es lemez mostmár  helyesen működik, de az ábráról hiányzik az 1/3 zaj búrkológőrbéje, amire ráül az interferencia. Ezen még dolgozom.

 

De igy már van értelme az időbeli visszahatásnak, hiszen nem mindegy, hogy milyen az iránya a lineárisan polarizált fénynek, ami ráesik a QWP-re. Ha betesszük a radírt a Dp ágba, akkor a Ds ágban (néha?) a QWP-re a radir polarizátornak megfelelő irányú fény esik, vagy arra merőleges felváltva.

m0kus Creative Commons License 2015.01.10 0 0 1029



#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <X11/Xlib.h>


Display *dpy;
Window win;
GC gc;
double radian=(180.0/M_PI);


void pixel(int x,int y,int color)
{
    XSetForeground(dpy,gc,color);
    XDrawPoint(dpy, win, gc, x,y);
}
void line(int x1,int y1,int x2,int y2,int color)
{
    XSetForeground(dpy,gc,color);
    XDrawLine(dpy, win, gc, x1,y1,x2,y2);
}
double sqr(double n) // x^2
{
    return n*n;
}
double doublerand() //random szam  0.0-tol 1.0-ig
{
    return (double)(rand()%10000)/10000.0;
}



struct vec2d
{
    double x,y;
    
    vec2d() {x=0;y=0;}
};
void add_amp(vec2d *v,double phase,double ax,double ay)
{
    v->x += sin(phase)*ax;
    v->y += cos(phase)*ay;
};
void add_polarizer(vec2d *v,double phase)
{
    v->x *= sin(phase);
    v->y *= cos(phase);
};
double dot(vec2d *v1,vec2d *v2)
{
    return v1->x*v2->x + v1->y*v2->y;
}
void add_quarterwaveplate(vec2d *v,double phase,double dist,double qwp,double ax,double ay)
{
    vec2d axis_fast,axis_slow,input_wave;
    
    add_amp(&axis_fast,qwp,1.0,1.0);
    add_amp(&axis_slow,qwp+90.0/radian,1.0,1.0);
    add_amp(&input_wave,phase,1.0,1.0);

    double amp_fast=dot(&axis_fast,&input_wave);
    double amp_slow=dot(&axis_slow,&input_wave);
    
    amp_fast=cos(dist)*amp_fast;
    amp_slow=sin(dist)*amp_slow;//-+90 phase shift
    
    v->x += (axis_fast.x*amp_fast + axis_slow.x*amp_slow)*ax;
    v->y += (axis_fast.y*amp_fast + axis_slow.y*amp_slow)*ay;
};
double probalbility(vec2d *v)
{
    return (sqr(v->x) + sqr(v->y));
}


int main()
{
    dpy = XOpenDisplay(0);
    win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0,0, 800, 550, 0,0,0);
    
    XSelectInput(dpy, win, StructureNotifyMask);
    XMapWindow(dpy, win);
    gc = XCreateGC(dpy, win, 0, 0);
    
    for(;;) { XEvent e; XNextEvent(dpy, &e); if (e.type == MapNotify) break; }



    for(int x=0;x<400;x++)    
    {
        pixel(x,500,0x008800);
        pixel(x,300,0x008800);
        pixel(x,100,0x008800);
    }
    
    

    for(int ds_x=0;ds_x<400;ds_x++)//Ds position  -+4mm    
    {
        int photon_counter=0;
        int maxphoton=400;
        int maxwide=10;

        int qwplate_on=1;
        int eraser_on=1;
        double eraser_alpha=45.0/radian;
        
        for(int p=0;p<maxphoton;p++)// max number of photon
        {
#if 0
            double phase_a=M_PI*2*doublerand();
            double phase_b=phase_a+M_PI/2;
#else            
            double phase_a=0; //polarized lightsource
            if(doublerand()>0.5) phase_a=M_PI/2;
            double phase_b=phase_a+M_PI/2;
            if(doublerand()>0.5) phase_b=phase_a-M_PI/2;
#endif


            double ds_distance=1250.0-420.0;//mm  125-42 cm
            double dp_distance=980.0; //98 cm
            double wavelength=702.2e-6;//mm      e-9m
            double k=2.0*M_PI/wavelength;
            vec2d amp_dp,amp_ds;



            ds_distance+=0.0;
            double hole_dist=0.2;//0.2
            double hole_wide=0.2;//200 micrometer wide   

            double ds_pos=4.0*(double)(ds_x-200)/200.0;//+-4mm     Ds position

            for(int w=0;w<maxwide;w++)//slit wide
            {
                double hole1x=hole_dist/2.0 + hole_wide*(double)w/maxwide;//hole
                double hole2x=-hole_dist/2.0 - hole_wide*(double)w/maxwide;
                double dist1=sqrt(sqr(ds_pos - hole1x) + sqr(ds_distance));
                double dist2=sqrt(sqr(ds_pos - hole2x) + sqr(ds_distance));            


                add_amp(&amp_dp,phase_b ,0.5,0.5);
                add_amp(&amp_dp,phase_b ,0.5,0.5);

                if(qwplate_on)
                {
                    if(eraser_on) phase_a=eraser_alpha;
                    add_quarterwaveplate(&amp_ds,phase_a , dist1*k,-45.0/radian,0.5, 0.5);
                    add_quarterwaveplate(&amp_ds,phase_a , dist2*k, 45.0/radian,0.5, 0.5);
                }
                else
                {
                    add_amp(&amp_ds,phase_a +dist1*k ,0.5,0.5);
                    add_amp(&amp_ds,phase_a +dist2*k ,0.5,0.5);
                }
            }
            if(eraser_on) add_polarizer(&amp_dp,eraser_alpha);// polarizer before Dp

            
            amp_dp.x/=maxwide;//normalized
            amp_dp.y/=maxwide;
            amp_ds.x/=maxwide;
            amp_ds.y/=maxwide;


            if((probalbility(&amp_dp))>doublerand())
            if((probalbility(&amp_ds))>doublerand())
                photon_counter+=1;
        }

        pixel(ds_x,500-photon_counter,0xffff00);
    }

/*
        double dist1=0.0;
        for(int p=0;p<1000;p++)//quarterwaveplate
        {
            vec2d amp_dp,amp_ds;
            add_quarterwaveplate(&amp_ds,0.0/radian , dist1*M_PI/100.0,45.0/radian,0.5, 0.5);

            line(200,200,200+200.0*amp_ds.x,200+200.0*amp_ds.y,0x00ff00);
            dist1+=5.0;
            
            XFlush(dpy);
            getchar();
        }
*/
    XFlush(dpy);
    getchar();
        
    return 0;
}

m0kus Creative Commons License 2015.01.09 0 0 1028

Felesleges vitatkozni, minden attól függ, hogy mit definiálsz előbb. Ha a geometiát veszet alapnak, akkor a fény pályája azért görbül.

Ha pedig a fénysebesség változását veszed támpontúl, akkor rá tudol építeni egy görbült téridőt.

Előzmény: őszszakál (1026)
m0kus Creative Commons License 2015.01.09 0 0 1027

A quarter wave plate-et rendesen kell szamolni, ez az egyszerűsített modell így nem fog tökéletes eredményt adni.

Előzmény: m0kus (1023)
őszszakál Creative Commons License 2015.01.09 0 0 1026

Nem Eukleidészi térben, vagyis a görbült terekben haladó fénysugár az ott egyenesnek számító geodetikuson halad.

jogértelmező Creative Commons License 2015.01.08 0 0 1025

"Ezt a mondatot nem értem: "A fénysugarak ugyanis csak akkor görbülhetnek el, ha a fényterjedés sebessége más és más a különböző helyeken." "

 

Én viszont "értem" -  kisiskolás koromban hallottakra támaszkodva.

Nevezetesen: Ha a fénysugarak olyan helyeken vonulnak át vákuumban, amely helyeken a  törésmutató értéke helyről-helyre változó - úgy terjedésük irányát  legpontosabban meghatározni az általános relativitáselmélet ismeretében lehet.

Előzmény: protag0ras (1015)
jogértelmező Creative Commons License 2015.01.08 0 0 1024

" Novobátzky megjegyzését sem gondolom hogy rá lehetne húzni a "titokzatos távolhatásra", "

 

Novobátzky Károly szerintem megpróbálta eloszlatni azt a tévhitet,  amely szerint  a fizika nem ismer c-nél nagyobb sebességet.

Előzmény: protag0ras (1015)
m0kus Creative Commons License 2015.01.08 0 0 1023

Az alap ábra mostmár szinte hajszálpontos és két hiba javítva. És négy subquark ban.

 

ds_distance2=420

double dist2b=sqrt(sqr(0 - hole2x) + sqr(ds_distance2));

 

Ellenben még mindig problémás a megoldás. De nyilván helyes az út, hiszen a a Dp oldalon egy fél foton visszafele halad, akkor ismeri a másik oldali történéseket (a kialakult fázist). Márpedig ez a kulcs.

 

 

m0kus Creative Commons License 2015.01.07 0 0 1022

double dist2b=sqrt(sqr(ds_pos - hole2x) + sqr(ds_distance2)); 

 

Van még bőven apró hiba, de sorba kiesnek majd. ds_pos nem lehet ebben a sorban, ide a BBO-ra eső szélesség kell majd, ami 0,5mm.

Előzmény: m0kus (1006)
m0kus Creative Commons License 2015.01.07 0 0 1021

A kisérlet a fél foton bizonyítéka.

Számomra, mert arra aztán várhatunk, hogy ezt bárki beismerje,.

 

Ez a világ nem úgy működik, mint Einstein korában.

Előzmény: protag0ras (1016)
m0kus Creative Commons License 2015.01.07 0 0 1020

"miért van interferencia."   ha csak egy résen megy át?

 

Közben rájöttem, hogy a fél foton az időben visszafele haladóval interferál.

Előzmény: m0kus (1007)
m0kus Creative Commons License 2015.01.07 0 0 1019

Szóval nem találtam 4 félfotonos megoldást.

De mégis van. Hol? Pont itt ebben az 1006-os megoldásban.

 

Ugyanis lehet, hogy az időben "visszafele" induló fél foton nem számít a detektáláskor. Ebben az esetben a 4 félfoton egyenlete pont ilyen, mint ezé a kettőe.

Előzmény: m0kus (1006)
m0kus Creative Commons License 2015.01.07 0 0 1018

Mit akarok kihozni?

Nos az terjesztik, hogy a kisérlet SEMMIFÉLE módszerrel nem szimulálható.

Én meg leszimuláltam a lehetetlent. Majdhogy nem pontos interferencia mintát ad a program.

Én nem akarok semmit, csak tudom merre van az igazság.

Előzmény: protag0ras (1016)
m0kus Creative Commons License 2015.01.07 0 0 1017

Nem, a relativitás szerint a fénysebesség mindig c, így nem azért görbülnek el a fénysugarak, mert változik a c, hanem a téridő görbülete miatt.

 

Szerintem meg a kettő ugyan az. De ez a megközelítés annyira nem elfogadott, hogy a wikiről még a sebesség képletét is leszedették.

Persze ettől még nem lesz igazuk.

Előzmény: protag0ras (1015)
protag0ras Creative Commons License 2015.01.07 0 0 1016

Nem akarom azt a látszatot kelteni, hogy értem, hogy mit akarsz kihozni ebből a félfoton elméletből. Csupán van egy olyan gyanúm, hogy ezzel bizonyos kétrés kísérleteket ha meg is lehet magyarázni, akkor is problémák adódnak a háromrés, vagy többrés kísérletekkel. Innen kezdve bukta az egész. Nem?

Előzmény: m0kus (1013)
protag0ras Creative Commons License 2015.01.06 0 0 1015

Köszönöm!

 

Mit jelent az, hogy "Einstein könyve"? A spec és ált rel?

 

Ezt a mondatot nem értem: "A fénysugarak ugyanis csak akkor görbülhetnek el, ha a fényterjedés sebessége más és más a különböző helyeken."

 

Csak mert mintha nem erről szólna az áltrel, hanem pont arról, hogy elgörbülhetnek. Na persze most mit értünk elgörbülés alatt? Úgy veszem, hogy a gravitáció okozta "fényelhajlást", ami valójában egy geodetikus...

 

Tulajdonképpen teljesen mindegy. Viszont ami nem mindegy: ez az idézet Einsteintől nem mond semmi olyasmit, hogy a fénynél gyorsabb hatást bármilyen módon elfogadhatónak tartott volna Einstein. Csak annyit jelent, hogy nem állandó (lehet mondjuk lassabb). Novobátzky megjegyzését sem gondolom hogy rá lehetne húzni a "titokzatos távolhatásra", egész más jellegű ez a fajta c-nél nagyobb sebesség. Mert ugyebár onnan indultunk, hogy mit gondolhatott Einstein a fénysebességről, de persze a kvantumfizikai távolhatás kontextusában...

 

Őszintén be kell vallanom, hogy nem vagyok meggyőzve ;-)

Előzmény: jogértelmező (1014)
jogértelmező Creative Commons License 2015.01.06 0 0 1014

Igen. Idézet Einstein könyve 22. fejezetéből:

* ... az általános relativitáselmélet szerint a vákuumban terjedő fény sebességének állandóságáról szóló már annyiszor említett törvény, amely egyike a speciális relativitáselmélet két alapvető feltevésének, nem tarthat igényt korlátlan érvényességre. (33) A fénysugarak ugyanis csak akkor görbülhetnek el, ha a fényterjedés sebessége más és más a különböző helyeken. ...*

 

Ez értelmezhető volna úgy is, hogy bár az általános relativitásban c-nél kisebb sebességű EM hullámok is megjelennek, de c továbbra is felső sebességhatárnak minősül - ám Dr. Novobátzky Károly Einstein fenti első mondatához e megjegyzést  fűzte:

* 33. Az általános relativitáselméletben, ahol bármilyen koordinátarendszert felhasználhatunk, az sem érvényes, hogy a testek nem mozoghatnak c-nél nagyobb sebességgel. Pl. a Földet használva vonatkoztatási rendszerül, azt tapasztaljuk, hogy a legtávolabbi ködök is egy nap alatt megkerülik a Földet. Ezt az óriási kört pedig csak úgy írhatják le 24 óra alatt, ha a c fénysebességnél gyorsabban
mozognak. Csak inerciarendszerben nem észlelhetünk c-nél nagyobb sebességet. *

Előzmény: protag0ras (1004)
m0kus Creative Commons License 2015.01.06 0 0 1013

Az  első "hiba" azt mutatja, hogy itt egyetlen úton haladó fotonról vagy félfotonról van szó. Ugye ha dist1 akkor a másik dist1b, a fázis a radírtól függ előre és hátra az időben.

 

Eldönthető hogy fél vagy egész a foton?

Igen, fél.

Egész fotonokkal számolva ismét teljesen rossz az interferencia kép.

 

Előzmény: m0kus (1007)
m0kus Creative Commons License 2015.01.06 0 0 1012

Négy sehogy nem jó-

A legutolsó beírt megoldás jelenleg az egyetlen ami helyes interferenciát ad.

Előzmény: m0kus (1011)
m0kus Creative Commons License 2015.01.06 0 0 1011

Vagyis négy subquark kellene?

Előzmény: m0kus (1008)
m0kus Creative Commons License 2015.01.06 0 0 1010

Az ember azt hinné, hogy a dp_distance2-höz csak úgy beírtam valamit.

Nem. Ha az adott elrendezésnél megváltoztatom a távolságot, az interferencia minta drasztikusan megváltozik. Nem lehet ott akármilyen szám.

 

m0kus Creative Commons License 2015.01.06 0 0 1009

dp_distance*k -nek nem kellene ott lennie.

Valami még mindig nem stimmel.

m0kus Creative Commons License 2015.01.06 0 0 1008

Nos ez nem a fluxus kondenzátor, hanem a BBO kristályon kettéváló foton két subquarkjának a téridő ábrája. Ebben az esetben a forrásból csak az egyik félfoton indul ki, a másik visszaverődit az időben.

m0kus Creative Commons License 2015.01.06 0 0 1007

Nos volt és van még mindig néhány probléma.

Az egyik az hogy betettem a radír polarizátort mindkét ágba. Érdekes módon nem okozott nagy hibát.

 

Ellenben marad két probléma.

Az egyik egy hiba, de csak így jó az eredmény.

hole_side==0 esetben ha az Dp ágban dist1b van akkor Ds oldalon dist2-nek kellene lennie, hiszen úgy szólt a feladat, hogy a két foton ellenkező résen halat át. De a program azonos réssel helyes. Innek kezdve már az is érthetetlen, hogy miért van interferencia.

A masik  a ds_distance2=420.0+980.0; sor.

Ennek nincs értelme.

 

Ki lehetne találni dolgokat, mondjuk hogy a fél foton a réseltől visszamegy a forrásik, majd visszaverődve az időben elmegy a radírig. Erre utalna a +M_PI, ami 180 fokos fáziseltolódást jelent, ami tükröződéseknél lép fel.

m0kus Creative Commons License 2015.01.06 0 0 1006



#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <X11/Xlib.h>


Display *dpy;
Window win;
GC gc;
double radian=(180.0/M_PI);


void pixel(int x,int y,int color)
{
    XSetForeground(dpy,gc,color);
    XDrawPoint(dpy, win, gc, x,y);
}
double sqr(double n) // x^2
{
    return n*n;
}
double doublerand() //random szam  0.0-tol 1.0-ig
{
    return (double)(rand()%10000)/10000.0;
}



struct vec2d
{
    double x,y;
};
void add_amp(vec2d *v,double phase,double a1,double a2)
{
    v->x += sin(phase)*a1;
    v->y += cos(phase)*a2;
};
void add_polarizer(vec2d *v,double phase)
{
    v->x *= cos(phase);
    v->y *= sin(phase);
};
double probalbility(vec2d *v)
{
    return (sqr(v->x) + sqr(v->y));
}


int main()
{
    dpy = XOpenDisplay(0);
    win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0,0, 800, 550, 0,0,0);
    
    XSelectInput(dpy, win, StructureNotifyMask);
    XMapWindow(dpy, win);
    gc = XCreateGC(dpy, win, 0, 0);
    
    for(;;) { XEvent e; XNextEvent(dpy, &e); if (e.type == MapNotify) break; }



    for(int x=0;x<400;x++)    
    {
        pixel(x,500,0x008800);
        pixel(x,300,0x008800);
        pixel(x,100,0x008800);
    }
    
    

    for(int ds_x=0;ds_x<400;ds_x++)//Ds position  -+4mm    
    {
        int photon_counter=0;
        int maxphoton=550;
        int maxwide=20;
        
        for(int p=0;p<maxphoton;p++)// max number of photon
        {
            double phase_a=M_PI*2*doublerand();
            double ds_distance=1250.0-420.0;//mm  125-42 cm
            double ds_distance2=420.0+980.0;//mm  visszafele a restol BBO-ig
            double dp_distance=980.0; //98 cm
            double wavelength=702.2e-6;//mm      e-9m
            double k=2.0*M_PI/wavelength;
            vec2d amp_dp,amp_ds;
            amp_dp.x=0;
            amp_dp.y=0;
            amp_ds.x=0;
            amp_ds.y=0;



            ds_distance+=0.0;
            double hole_dist=0.2;//0.2
            double hole_wide=0.2;//200 micrometer wide   
            int hole_side=(rand()%1000)/500;//vagy a) vagy b) mert a masik Dp fele megy

            double ds_pos=4.0*(double)(ds_x-200)/200.0;//+-4mm     Ds position

            for(int w=0;w<maxwide;w++)//slit wide
            {
            double hole1x=hole_dist/2.0 + hole_wide*(double)w/maxwide;//hole
            double dist1=sqrt(sqr(ds_pos - hole1x) + sqr(ds_distance));
            double dist1b=sqrt(sqr(ds_pos - hole1x) + sqr(ds_distance2));//backward
            double hole2x=-hole_dist/2.0 - hole_wide*(double)w/maxwide;
            double dist2=sqrt(sqr(ds_pos - hole2x) + sqr(ds_distance));            
            double dist2b=sqrt(sqr(ds_pos - hole2x) + sqr(ds_distance2));            


            double rot_direction=1.0;// +-1
//Dp side
            dp_distance+=0.0;//hatrebb?
            //ha Ds normaliranyu, ez forditott
            if(hole_side==0) add_amp(&amp_dp,    phase_a + dp_distance*k + dist1b*k + M_PI,0.5, 0.5*rot_direction);
            if(hole_side==1) add_amp(&amp_dp,    phase_a + dp_distance*k + dist2b*k + M_PI,0.5, 0.5);//normal            
//Ds side            
            if(hole_side==0) add_amp(&amp_ds,    phase_a + dist1*k ,0.5, 0.5);// normal
            if(hole_side==1) add_amp(&amp_ds,    phase_a + dist2*k ,0.5, 0.5*rot_direction);// forditott forgasi irany
            }
//            add_polarizer(&amp_dp,(0*45)/radian);//0 1 2*45 polarizator Dp elott
            amp_ds.x+=amp_dp.x;
            amp_ds.y+=amp_dp.y;

            amp_ds.x/=maxwide;//normalizalas
            amp_ds.y/=maxwide;
        
            if((probalbility(&amp_ds))>doublerand())//mindig csak egy foton van
                photon_counter+=1;
        }
        pixel(ds_x,500-photon_counter,0xffff00);
    }

    XFlush(dpy);
    getchar();
        
    return 0;
}

m0kus Creative Commons License 2015.01.06 0 0 1005

Igen.

A 2.on a az első helyzet, de megjelöltük a fotonokat, eltünt az interferencia kép.

 

Előzmény: protag0ras (1002)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!