File:OAM vs angle states animation.gif
Z projektu Wikimedia Commons
Skočit na navigaci
Skočit na vyhledávání
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)
Informace o souboru
Strukturovaná data
Popisky
Popis[editovat]
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[editovat]
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[editovat]
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[%]*)*)
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, 20:35 | 1 197 × 843 (3,26 MB) | JozumBjada (diskuse | příspěvky) | more frames, minor visual changes | |
10. 1. 2022, 20:17 | 2 391 × 1 682 (2,2 MB) | JozumBjada (diskuse | příspěvky) | Cross-wiki upload from cs.wikipedia.org |
Tento soubor nemůžete přepsat.
Využití souboru
Na Commons na soubor odkazuje tato stránka:
Globální využití souboru
Tento soubor využívají následující wiki:
- Využití na cs.wikipedia.org
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 |
---|