Soubor:OAM vs angle states animation.gif
Obsah stránky není podporován v jiných jazycích.
Z Wikipedie, otevřené encyklopedie
Velikost tohoto náhledu: 800 × 563 pixelů. Jiná rozlišení: 320 × 225 pixelů | 640 × 451 pixelů | 1 024 × 721 pixelů | 1 197 × 843 pixelů.
Původní soubor (1 197 × 843 pixelů, velikost souboru: 3,26 MB, MIME typ: image/gif, ve smyčce, 80 snímků, 18 s)
Tento soubor pochází z Wikimedia Commons. Níže jsou zobrazeny informace, které obsahuje jeho tamější stránka s popisem souboru. |
Popis
PopisOAM vs angle states animation.gif |
English: Orbital angular momentum (OAM) and angular position represent complementary variables that satisfy a corresponding uncertainty relation. The lower bound for the product of deviations of the two quantities is state-dependent and in the animation a class is chosen of uncertainty-minimizing states similar to a Gaussian beam. In the upper left corner, an intensity cross section of such states is shown. The probability density of angular position for such states and the associated standard deviation are plotted in the lower left corner. The state can be represented as a superposition of multiple OAM modes with values . The corresponding probabilities are shown in the upper right corner. The lower bound of the uncertainty relation is plotted in the lower right corner. One can see that the wider the OAM distribution gets, the narrower is the angle distribution and the other way round. For more information see: [Sonja Franke-Arnold et al 2004 New J. Phys. 6 103, DOI:10.1088/1367-2630/6/1/103] Čeština: Orbitální moment hybnosti (OAM) a úhlová poloha představují komplementární proměnné, jež vyhovují odpovídajícím relacím neurčitosti. Spodní mez součinu odchylek těchto dvou veličin závisí na konkrétním stavu a v animaci je zvolena třída stavů, jež minimalizují neurčitost a podobají se Gaussovskému svazku. Vlevo nahoře je zobrazen průřez intenzitou takových stavů. Hustota pravděpodobnosti pro úhlovou polohu pro takové stavy spolu s odpovídající směrodatnou odchylkou jsou vykresleny vlevo dole. Stav lze vyjádřit jako superpozici různých OAM módů o hodnotách . Jim odpovídající pravděpodobnosti jsou vyneseny vpravo nahoře. Spodní mez relace neurčitosti je pak vykreslena vpravo dole. Lze snadno nahlédnout, že čím širší je rozdělení pro OAM, tím užší je rozdělení pro úhel a naopak. Pro podrobnosti viz: [Sonja Franke-Arnold et al 2004 New J. Phys. 6 103, DOI:10.1088/1367-2630/6/1/103] |
Datum | |
Zdroj | Vlastní dílo |
Autor | JozumBjada |
Licence
Já, držitel autorských práv k tomuto dílu, ho tímto zveřejňuji za podmínek následující licence:
Tento soubor podléhá licenci Creative Commons Uveďte autora-Zachovejte licenci 4.0 International
- Dílo smíte:
- šířit – kopírovat, distribuovat a sdělovat veřejnosti
- upravovat – pozměňovat, doplňovat, využívat celé nebo částečně v jiných dílech
- Za těchto podmínek:
- uveďte autora – Máte povinnost uvést autorství, poskytnout odkaz na licenci a uvést, pokud jste provedli změny. Toho můžete docílit jakýmkoli rozumným způsobem, avšak ne způsobem naznačujícím, že by poskytovatel licence schvaloval nebo podporoval vás nebo vaše užití díla.
- zachovejte licenci – Pokud tento materiál jakkoliv upravíte, přepracujete nebo použijete ve svém díle, musíte své příspěvky šířit pod stejnou nebo slučitelnou licencí jako originál.
Source code
This animation was created using Wolfram language 12.0.0 for Microsoft Windows (64-bit) (April 6, 2019). The source code follows (formatted as a .wl package file).
(* ::Package:: *)
(* ::Title:: *)
(*Angle vs. OAM*)
(* ::Section:: *)
(*Routines*)
(* ::Subsection::Closed:: *)
(*Functions*)
(* ::Input::Initialization:: *)
beamLG[k_][\[Rho]_,\[Phi]_]:=Sqrt[2/(\[Pi] Abs[k]!)](Sqrt[2]\[Rho])^Abs[k]Exp[-\[Rho]^2]Exp[-I k \[Phi]]
(* ::Input::Initialization:: *)
angleDistrAmpl[\[Phi]_,\[Lambda]_]:=Surd[\[Lambda]/\[Pi],4]/Sqrt[Erf[\[Pi] Sqrt[\[Lambda]]]] Exp[-(\[Lambda]/2)\[Phi]^2]
(* ::Input::Initialization:: *)
oamDistrProb[ld_,\[Lambda]_]:=oamDistrProb[ld,\[Lambda]]=Abs[Surd[\[Lambda] \[Pi],-4]/Erf[\[Pi] Sqrt[\[Lambda]]]]^2 Abs[NIntegrate[Sinc[k \[Pi]]Exp[-(ld+k)^2/(2\[Lambda])],{k,-\[Infinity],\[Infinity]}(*,WorkingPrecision\[Rule]$MachinePrecision*)]]^2
(* ::Input::Initialization:: *)
deltaPhi[\[Lambda]_]:=Sqrt[1-(2Sqrt[\[Pi] \[Lambda]] Exp[-\[Pi]^2 \[Lambda]])/(Erf[\[Pi] Sqrt[\[Lambda]]])]/Sqrt[2\[Lambda]]
(* ::Input::Initialization:: *)
invDeltaPhi=Module[{lambdvals,dphis,angvals,ifun,lambdas},
lambdvals=Range[0.000001,100,.1];
dphis=Transpose[{lambdvals,Quiet[deltaPhi/@lambdvals]}];
ifun=InverseFunction@Interpolation[dphis];
(*FunctionInterpolation returns some artifacts, so Interpolation is used again*)
angvals=Range[0,2,.01];
lambdas=Transpose[{angvals,ifun/@angvals}];
Interpolation[lambdas]
];
(* ::Subsection::Closed:: *)
(*Plot of superpositions*)
(* ::Input::Initialization:: *)
plotOptsSuper={PlotRange->All,ImagePadding->{{50,0}, {0,0}},ImageSize->{Automatic,300},Exclusions->(#1<0&==0&),PlotPoints->50,MaxRecursion->2,PlotRangePadding->None,Frame->False,ColorFunction->"SunsetColors"};
(* ::Input::Initialization:: *)
superpositionFun[\[Lambda]_,x_,y_,halfnum_:50]:=Module[{vals},
vals=Table[oamDistrProb[mode,\[Lambda]],{mode,-halfnum,halfnum}];
If[\[Lambda]<3,vals=Normalize[vals,Total]]; (*necessary due to numerical errors*)
Sum[Sqrt[vals[[mode+halfnum+1]]] beamLG[mode][Sqrt[x^2+y^2],ArcTan[y,x]],{mode,-halfnum,halfnum}]
]
(* ::Input::Initialization:: *)
plotSuperposition[\[Lambda]_,halfnum_:5]:=Module[{plotlim=3.5},DensityPlot[Evaluate[Abs[superpositionFun[\[Lambda],x,y,halfnum]]^2],{x,-plotlim,plotlim},{y,-plotlim,plotlim},RegionFunction->(#1^2+#2^2<=plotlim^2&),Evaluate[Sequence@@plotOptsSuper]]]
(* ::Input::Initialization:: *)
plotGauss[halfnum_:5]:=Module[{plotlim=3.5},DensityPlot[Evaluate[Abs[beamLG[0][Sqrt[x^2+y^2],ArcTan[y,x]]]^2],{x,-plotlim,plotlim},{y,-plotlim,plotlim},RegionFunction->(#1^2+#2^2<=plotlim^2&),Evaluate[Sequence@@plotOptsSuper]]]
(* ::Subsection::Closed:: *)
(*Plots of angle and OAM distributions*)
(* ::Input::Initialization:: *)
plotOpts={Frame->True,Axes->False,PlotStyle->Blue,PlotRangePadding->{0,Scaled[0.05]},ImageSize->{Automatic,300},ImagePadding->{{60,10}, {70,10}},GridLines->{None,Automatic},FrameStyle->Directive[Thickness[0.005]],LabelStyle->Directive[FontFamily->"Times",FontSize->20,FontColor->Black]};
(* ::Input::Initialization:: *)
plotOptsAngle={Filling->Bottom,PlotRange->{All,{0,4}},FrameLabel->{Style["\[Phi]",20],Style["p",20,Italic]},RotateLabel->False,FrameTicks->{{Automatic,None},{{-\[Pi],{-\[Pi]/2,"-\[Pi]/2"},0,{\[Pi]/2,"\[Pi]/2"},\[Pi]},None}}};
(* ::Input::Initialization:: *)
plotOptsOAM={ExtentSize->.8,PlotRange->{All,{0,1}},FrameLabel->{Style["\[ScriptL]",20],Style["p",20,Italic]},RotateLabel->False,FrameTicks->{{Automatic,None},{Automatic,None}}};
(* ::Input::Initialization:: *)
epilogFun[\[CapitalDelta]\[Phi]_]:={AbsoluteThickness[1],{Dashed,InfiniteLine[{0,0},{0,1}]},InfiniteLine[{\[CapitalDelta]\[Phi],0},{0,1}],InfiniteLine[{-\[CapitalDelta]\[Phi],0},{0,1}],Arrowheads[.05(-1)^Boole[\[CapitalDelta]\[Phi]<0.4] {-1,1}],
If[\[CapitalDelta]\[Phi]<0.5,Arrow@Line[{{\[CapitalDelta]\[Phi],1.5},{-\[CapitalDelta]\[Phi],1.5}}],{Arrow@Line[{{\[CapitalDelta]\[Phi],1.5},{0,1.5}}],Arrow@Line[{{0,1.5},{-\[CapitalDelta]\[Phi],1.5}}]}],If[\[CapitalDelta]\[Phi]>0.5,{Text[Style["\[CapitalDelta]\[Phi]",20,FontFamily->"Times"],{-\[CapitalDelta]\[Phi]/2,1.5},{0,-1.5}],Text[Style["\[CapitalDelta]\[Phi]",20,FontFamily->"Times"],{\[CapitalDelta]\[Phi]/2,1.5},{0,-1.5}]},{}](*If[\[CapitalDelta]\[Phi]>0.2,Text[Style["\[CapitalDelta]\[Phi]",20,FontFamily\[Rule]"Times"],{0,1.5},{0,-1}],{}]*)}
plotAngleDistr[\[Lambda]_]:=Plot[Abs[angleDistrAmpl[\[Phi],\[Lambda]]]^2,{\[Phi],-\[Pi],\[Pi]},Evaluate[Sequence@@plotOptsAngle],Evaluate[Sequence@@plotOpts],Epilog->epilogFun[deltaPhi[\[Lambda]]]];
plotAngleDistrGauss:=Plot[1/(2\[Pi]),{\[Phi],-\[Pi],\[Pi]},Evaluate[Sequence@@plotOptsAngle],Evaluate[Sequence@@plotOpts],Epilog->epilogFun[\[Pi]/Sqrt[3]]];
(* ::Input::Initialization:: *)
plotOAMDistr[\[Lambda]_]:=Module[{halfnum=5,vals,valsaux},
vals=Table[oamDistrProb[i,\[Lambda]],{i,-halfnum,halfnum}];
If[\[Lambda]<3,vals=Normalize[vals,Total]]; (*necessary due to numerical errors*)
DiscretePlot[vals[[i+halfnum+1]],{i,-halfnum,halfnum},Evaluate[Sequence@@plotOptsOAM],Evaluate[Sequence@@plotOpts]]
];
plotOAMDistrGauss:=Module[{halfnum=5},DiscretePlot[KroneckerDelta[i,0],{i,-halfnum,halfnum},Evaluate[Sequence@@plotOptsOAM],Evaluate[Sequence@@plotOpts]]];
(* ::Subsection::Closed:: *)
(*Uncertainty relation plot*)
(* ::Input::Initialization:: *)
plotOptsUncert={PlotStyle->Directive[Thickness[0.005],Blue],GridLines->{\[Pi]/8 {1,2,3,4},1/8 {1,2,3,4}},PlotRange->{{0,\[Pi]/Sqrt[3]+.1},{0,.6}},PlotRangePadding->None,FrameLabel->(Style[#,20]&/@{"\[CapitalDelta]\[Phi]","\[CapitalDelta]\[ScriptL]\[CenterDot]\[CapitalDelta]\[Phi]"}),FrameTicks->{{{0,{1/8,""},{.25,"1/4"},{3/8,""},{.5,"1/2"}},None},{{0,{\[Pi]/8,""},{\[Pi]/4,"\[Pi]/4"},{3\[Pi]/8,""},{\[Pi]/2,"\[Pi]/2"}},None}}};
(* ::Input::Initialization:: *)
plotUncertainty[\[CapitalDelta]\[Phi]0_]:=Module[{auxifun},
auxifun[\[CapitalDelta]\[Phi]_]:=Piecewise[{{invDeltaPhi[\[CapitalDelta]\[Phi]]\[CapitalDelta]\[Phi]^2,\[CapitalDelta]\[Phi]>.2}},1/2];
Plot[auxifun[\[CapitalDelta]\[Phi]],{\[CapitalDelta]\[Phi],0,2},PlotRangeClipping->False,Epilog->{Purple,PointSize[0.03],Point[{\[CapitalDelta]\[Phi]0,auxifun[\[CapitalDelta]\[Phi]0]}],Black,Dashed,Line[{{\[Pi]/Sqrt[3],1/2},{\[Pi]/Sqrt[3],-0.07}}],Text[Style["\[Pi]/\!\(\*SqrtBox[\(3\)]\)",20,FontFamily->"Times"],{\[Pi]/Sqrt[3],-0.07},{0,1}]},Evaluate[Sequence@@plotOptsUncert],Evaluate[Sequence@@plotOpts]]
];
(* ::Subsection::Closed:: *)
(*Composite plots*)
(* ::Input::Initialization:: *)
plotOAMAngleLinearDiscreteRphi[\[CapitalDelta]\[Phi]_]:=Grid[{{plotSuperposition[invDeltaPhi[\[CapitalDelta]\[Phi]],30],plotOAMDistr[invDeltaPhi[\[CapitalDelta]\[Phi]]]},{plotAngleDistr[invDeltaPhi[\[CapitalDelta]\[Phi]]],plotUncertainty[\[CapitalDelta]\[Phi]]}},Spacings->Spacer[15],Alignment->Center];
(* ::Input::Initialization:: *)
gaussGr:=Grid[{{plotGauss[30],plotOAMDistrGauss},{plotAngleDistrGauss,plotUncertainty[\[Pi]/Sqrt[3]]}},Spacings->Spacer[15],Alignment->Center]
(* ::Section:: *)
(*Generate animation and export*)
(* ::Input:: *)
(*ranphi=Subdivide[0.1,\[Pi]/Sqrt[3.]-0.1,40-1];*)
(* ::Input:: *)
(*AbsoluteTiming[rangr=ParallelMap[Quiet@*plotOAMAngleLinearDiscreteRphi,ranphi];]*)
(* ::Input:: *)
(*listgr=rangr;*)
(*listgr=Join[listgr,{gaussGr},Rest@Reverse[listgr]];*)
(*durs=Join[{2},Table[.25,Length[rangr]-1],{2},Table[.1,Length[rangr]-1]];*)
(* ::Input:: *)
(*(*Manipulate[listgr[[i]],{i,1,Length[listgr],1}]*)*)
(* ::Input:: *)
(*SetDirectory[NotebookDirectory[]]*)
(*Export["anim.gif",listgr,ImageResolution->100,AnimationRepetitions->Infinity,"DisplayDurations"->durs]*)
(* ::Input:: *)
(*(*SystemOpen[%]*)*)
Položky vyobrazené v tomto souboru
zobrazuje
Nějaká hodnota bez položky na Wikidatech
10. 1. 2022
image/gif
Historie souboru
Kliknutím na datum a čas se zobrazí tehdejší verze souboru.
Datum a čas | Náhled | Rozměry | Uživatel | Komentář | |
---|---|---|---|---|---|
současná | 18. 1. 2022, 22:35 | 1 197 × 843 (3,26 MB) | JozumBjada | more frames, minor visual changes | |
10. 1. 2022, 22:17 | 2 391 × 1 682 (2,2 MB) | JozumBjada | Cross-wiki upload from cs.wikipedia.org |
Využití souboru
Tento soubor používá následující stránka:
Metadata
Tento soubor obsahuje dodatečné informace, poskytnuté zřejmě digitálním fotoaparátem nebo scannerem, kterým byl pořízen. Pokud byl soubor od té doby změněn, některé údaje mohou být neplatné.
Poznámky ze souboru GIF | Created with the Wolfram Language : www.wolfram.com |
---|