-
Notifications
You must be signed in to change notification settings - Fork 2
ProbeDirectionalScan
ProbeDirectionalScan
is an implementation of a semi-naive scanning procedure that tends to give a good first impression of the locations of local energy minima. It always starts at the origin for all axes and then moves along one axis for specified amount of steps of specified size, then resetting after having finished the scan of one axis and starts anew from the origin. Both positive and negative directions along an axis are scanned simultaneously. The value that is being checked is the smallest eigenvalue ("ground energy") of the operator that was initialized with ProbeInit
.
It is likely instructive to look at the examples provided in order to get an understanding of what the directional scans visualize, since despite their naive nature they provide a powerful first order tool to manually select a starting point for the actual scanning procedure, allowing the skipping of the computationally extremely costly computation of the global energy minimum and other potential pitfalls such as disconnected geometries which might require multiple collections of scans.
ProbeDirectionalScan
outputs a plot of its data automatically unless ShowAutoPlot
is set to False
. In any case, the plot of the data can always be regained again later using ProbeShowDirectionalPlot[]
and customized plots can be created by obtaining the scan data directly using ProbeGetDirectionalData[]
.
ProbeDirectionalScan
has one non-optional argument:
Argument | Description |
---|---|
size_of_each_step |
Sets how large each step will be. Lower step size means higher precision scans but higher computational cost. Start at a relatively high stepsize and gradually decrease it until you see structure to not waste computational time. The stepsize has to be a positive real number - if a non-positive or non-real number is entered, the program will take its absolute value as the actual stepsize. Examples: ProbeDirectionalScan[0.5] ,ProbeDirectionalScan[1,StepNumber->50] ,ProbeDirectionalScan[0.01,StepNumber->1000,ShowAutoPlot->False] . |
ProbeDirectionalScan
admits the following options:
Options | Description |
---|---|
StepNumber |
Set how many steps of length determined by input stepsize are taken in each direction. If a non-natural number is entered, the program takes its absolute value and then its ceiling function to arrive at a natural number. Detault: StepNumber->100 Example: StepNumber->500
|
ShowAutoPlot |
If set to True this will automatically print a ListPlot of the directional scan data. Regardless of this setting, this autoplot can be printed again using the the ProbeShowDirectionalPlot[] command. More customized plots should be created using the ProbeGetDirectionalData[] command.Detault: True Example: ProbeDirectionalScan[0.5,StepNumber->100,ShowAutoPlot->False]
|
ReplacePoints |
If set to True the scanning algorithm replaces each new point by its corresponding location expectation value in each step. Use with caution: This makes an interpretation of the scan significantly more difficult, since the results will no longer lie directly along the standard unit axes. On the directional scans, unlike on the actual full scan, this option is only recommended if you feel like you know excatly what you are doing. Also, this comes at a significant computational cost and will thus take longer to complete than if set to False. Default: False Example: ReplacePoints->True
|
<< BProbeM`
(* initialization *)
t = PauliMatrix[{1,2,3}];
ProbeInit[t];
ProbeDirectionalScan[0.2];
(* Since we did not disable ShowAutoPlot, this prints the automatic plot. *)
Since the fuzzy 2-sphere exhibits exceptional rotational symmetry the scans of all 3 axes will overlap. Note the form of the scan: at the radius of the 2-sphere we see clear minima in each direction. We can also see already that the sphere is hollow!
<< BProbeM`
(* Generate 5x20x20 random GUE matrices *)
RandoMatrices = ConstantArray[0, {5}];
For[i = 1, i <= 5, i++,
RandoMatrices[[i]] = RandomVariate[GaussianUnitaryMatrixDistribution[20]];
];
ProbeInit[RandoMatrices,StartingPoint->ConstantArray[0, {5}]];
ProbeDirectionalScan[0.1,StepNumber->150,ShowAutoPlot->False];
(* Since we disabled ShowAutoPlot, this will execute without any output. *)
ProbeShowDirectionalPlot[];
(* This will print the automatic ListPlot which we chose to skip above. *)
Since the matrices are Gaussian they will not exhibit strong rotational symmetry. The 5 scans will thus not overlap. We will not see any relevant minima here aside from the one around the origin, because the matrices are Gaussian and simply stated contain no semi-classical geometry.
<< BProbeM`
(* Generate 5x20x20 random GUE matrices, but stretch the first of them by factor 10 *)
RandoMatrices = ConstantArray[0, 5];
For[i = 1, i <= 5, i++,
RandoMatrices[[i]] = RandomVariate[GaussianUnitaryMatrixDistribution[20]];
];
RandoMatrices[[1]]=10*RandoMatrices[[1]];
ProbeInit[RandoMatrices,StartingPoint->{0,0,0,0,0}];
ProbeDirectionalScan[0.1,StepNumber->150,ShowAutoPlot->False];
(* Since we disabled ShowAutoPlot, this will execute without any output. *)
ProbeShowDirectionalPlot[];
(* This will print automatic directional scan ListPlot which we chose to skip above. *)
Since the matrices are Gaussian they will not exhibit strong rotational symmetry, the 5 scans will thus not overlap. Take note of how the scan in the direction corresponding to the stretched matrix changes compared to the unstretched case above! We will not see any relevant minima here aside from the one around the origin, because the matrices are Gaussian and simply stated contain no semi-classical geometry. However, we can clearly observe that the point cloud around the origin is stretched in the direction that was scaled.
ProbeScan
(opts, ex)
ProbeReset
(opts, ex)
ProbeGetPoints
(ex)
ProbeGetTangetspaces
(ex)
ProbeDirectionalScan
(args, opts, ex)
ProbeGetDirectionalData
(ex)
ProbeShowDirectionalPlot
(ex)
ProbeGetOperator
(ex)
ProbeGetGroundstateEnergy
(args, ex)
ProbeGetEnergies
(args, ex)
ProbeGetGroundstate
(args, ex)
ProbeGetGroundstates
(args, ex)
ProbeGetExpectedLocation
(args, ex)
MatrixRepSU2
(args, ex)
MatrixRepSU3
(args, ex)