可视化和动画

布洛赫球面

class Bloch(fig=None, axes=None, view=None, figsize=None, background=False)[源代码]

用于在布洛赫球上绘制数据的类。有效数据可以是点、向量或Qobj对象。

Attributes:
axesmatplotlib.axes.Axes

用户提供的Matplotlib轴用于布洛赫球动画。

figmatplotlib.figure.Figure

用户提供的Matplotlib Figure实例用于绘制Bloch球体。

font_colorstr, default ‘black’

用于布洛赫球标签的字体颜色。

font_sizeint, default 20

用于布洛赫球标签的字体大小。

frame_alphafloat, default 0.1

设置布洛赫球框架的透明度。

frame_colorstr, default ‘gray’

球体线框的颜色。

frame_widthint, default 1

线框的宽度。

point_colorlist, default [“b”, “r”, “g”, “#CC6600”]

用于布洛赫球点标记的颜色列表,即默认情况下,点0和点4都将为蓝色('b')。

point_markerlist, default [“o”, “s”, “d”, “^”]

要循环使用的点标记形状列表。

point_sizelist, default [25, 32, 35, 45]

点标记大小的列表。注意,并非所有点标记在绘制时看起来大小相同!

sphere_alphafloat, default 0.2

布洛赫球本身的透明度。

sphere_colorstr, default ‘#FFDDDD’

布洛赫球的颜色。

figsizelist, default [7, 7]

布洛赫球图的图形大小。最好两个数字相同;否则你会得到一个看起来像足球的布洛赫球。

vector_colorlist, [“g”, “#CC6600”, “b”, “r”]

要循环使用的向量颜色列表。

vector_widthint, default 5

显示的向量的宽度。

vector_stylestr, default ‘-|>’

向量箭头样式(来自matplotlib的箭头样式)。

vector_mutationint, default 20

向量箭头的宽度。

viewlist, default [-60, 30]

方位角和仰角视角。

xlabellist, default [“$x$”, “”]

分别对应于+x和-x轴的字符串列表。

xlposlist, default [1.1, -1.1]

+x 和 -x 标签的位置分别。

ylabellist, default [“$y$”, “”]

分别对应于+y和-y轴标签的字符串列表。

ylposlist, default [1.2, -1.2]

+y 和 -y 标签的位置分别。

zlabellist, default [‘$\left|0\right>$’, ‘$\left|1\right>$’]

分别对应于+z和-z轴标签的字符串列表。

zlposlist, default [1.2, -1.2]

+z 和 -z 标签的位置分别。

add_annotation(state_or_vector, text, **kwargs)[source]

向布洛赫球添加文本或LaTeX注释,由量子比特状态或向量参数化。

Parameters:
state_or_vectorQobj/array/list/tuple

注释的位置。 一个量子比特的Qobj或一个包含3个元素的向量。

textstr

注释文本。 你可以使用LaTeX,但记得使用原始字符串 例如 r”$langle x rangle$” 或者转义反斜杠 例如 “$\langle x \rangle$”。

kwargs

选项与 mplot3d.axes3d.text 相同,包括: 字体大小、颜色、水平对齐、垂直对齐。

add_arc(start, end, fmt='b', steps=None, **kwargs)[source]

在球体上的两点之间添加一条弧线。默认情况下,弧线设置为蓝色实线曲线。

起点和终点必须在同一个球体上(即具有相同的半径),但不需要在单位球体上。

Parameters:
startQobj or array-like

包含第一个点的笛卡尔坐标的数组,或者可以映射到布洛赫球上或内部的状态向量或密度矩阵。

endQobj or array-like

数组包含第二个点的笛卡尔坐标,或者可以映射到布洛赫球上或内部的状态向量或密度矩阵。

fmtstr, default: “b”

用于渲染弧线的matplotlib格式字符串。

stepsint, default: None

渲染弧线时使用的段数。默认情况下,使用起点和终点之间距离的100倍步数,最少为2步。

**kwargsdict

在渲染此弧线时传递给matplotlib .plot函数的额外参数。

add_line(start, end, fmt='k', **kwargs)[source]

在布洛赫球面上添加连接两点的线段。

线段默认设置为黑色实线。

Parameters:
startQobj or array-like

包含第一个点的笛卡尔坐标的数组,或者可以映射到布洛赫球上或内部的态矢量或密度矩阵。

endQobj or array-like

数组包含第二个点的笛卡尔坐标,或者可以映射到布洛赫球上或内部的状态向量或密度矩阵。

fmtstr, default: “k”

用于渲染线条的matplotlib格式字符串。

**kwargsdict

在渲染此线条时传递给matplotlib .plot函数的额外参数。

add_points(
points,
meth: Literal['s', 'm', 'l'] = 's',
colors=None,
alpha=1.0,
)[source]

将一系列数据点添加到布洛赫球体。

Parameters:
pointsarray_like

数据点的集合。

meth{‘s’, ‘m’, ‘l’}

绘制的点类型,使用'm'表示多色,'l'表示用线连接的点。

colorsarray_like

可选的数组,包含点的颜色。 对于方法 's' 使用单一颜色,对于方法 'm' 使用颜色列表。

alphafloat, default=1.

向量的透明度值。值介于0和1之间。

注释

在QuTiP 4.6中使用meth=l时,线条透明度默认为0.75,并且无法更改。 当在QuTiP 4.7中添加了alpha参数后,对于meth的值,默认值变为alpha=1.0

add_states(
state,
kind: Literal['vector', 'point'] = 'vector',
colors=None,
alpha=1.0,
)[source]

将状态向量 Qobj 添加到布洛赫球体。

Parameters:
stateQobj or array_like

输入状态向量或列表。

kind{‘vector’, ‘point’}

要绘制的对象类型。

colorsarray_like

可选的数组,包含状态的颜色。

alphafloat, default=1.

向量的透明度值。值介于0和1之间。

add_vectors(vectors, colors=None, alpha=1.0)[source]

将向量列表添加到布洛赫球体。

Parameters:
vectorsarray_like

具有单位长度或更小的向量的数组。

colorsarray_like

可选的数组,包含向量的颜色。

alphafloat, default=1.

向量的透明度值。值介于0和1之间。

clear()[source]

将布洛赫球数据集重置为空。

make_sphere()[source]

绘制布洛赫球面和数据集。

render()[source]

在给定的图形和轴上渲染布洛赫球及其数据集。

save(name=None, format='png', dirc=None, dpin=None)[source]

将Bloch球体保存到目录dirc中的format类型的文件中。

Parameters:
namestr

保存图像的名称。必须包括路径和格式。 例如:‘/Users/Me/Desktop/bloch.png’ 这将覆盖‘format’和‘dirc’参数。

formatstr

输出图像的格式。

dircstr

输出图像的目录。默认为当前工作目录。

dpinint

分辨率,单位为每英寸点数。

Returns:
File containing plot of Bloch sphere.
set_label_convention(convention)[source]

根据其中一个惯例设置x、y和z标签。

Parameters:
conventionstring

以下之一:

show()[source]

显示布洛赫球和相应的数据集。

注释

在Jupyter笔记本中使用内联绘图时,笔记本单元格中创建的任何图形都会在单元格执行后显示。因此,如果您自己创建了一个图形并使用它来创建一个Bloch球体,使用b = Bloch(..., fig=fig),然后在同一单元格中调用b.show(),那么图形将会显示两次。如果您确实创建了自己的图形,最简单的解决方案是在创建图形的单元格中不调用.show()

图形和可视化

用于可视化量子动力学模拟结果的函数,量子状态和过程的可视化。

hinton(
rho,
x_basis=None,
y_basis=None,
color_style='scaled',
label_top=True,
*,
cmap=None,
colorbar=True,
fig=None,
ax=None,
)[source]

绘制一个Hinton图来可视化密度矩阵或超算子。

Parameters:
rhoqobj

输入密度矩阵或超算子。

注意

超算子的Hinton图目前仅支持量子比特。

x_basislist of strings, optional

表示输入x轴的刻度标签列表。

y_basislist of strings, optional

表示输入y轴的y刻度标签列表。

color_stylestr, {“scaled”, “threshold”, “phase”}, default: “scaled”

确定如何为每个方块分配颜色:

  • 如果设置为"scaled"(默认值),则通过将相应矩阵元素的绝对值传递到cmap中,并带有实部的符号来选择每种颜色。

  • 如果设置为"threshold",每个方块将绘制为矩阵元素正实部的cmap最大值和负实部的最小值;请注意,这将“threshold”推广到了复数。

  • 如果设置为"phase",则根据相应矩阵元素的角度选择每种颜色。

label_topbool, default: True

如果为True,x轴刻度标签将放置在顶部,否则它们将出现在图表下方。

cmapa matplotlib colormap instance, optional

绘图时使用的颜色映射。

colorbarbool, default: True

是否(True)或不(False)应该附加一个颜色条。

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘制图表时使用的ax上下文。

Returns:
fig, outputtuple

一个包含matplotlib图形和用于生成该图形的轴实例或动画实例的元组。

Raises:
ValueError

输入参数不是量子对象。

示例

>>> import qutip
>>> dm = qutip.rand_dm(4)
>>> fig, ax = qutip.hinton(dm)
>>> fig.show()
>>> qutip.settings.colorblind_safe = True
>>> fig, ax = qutip.hinton(dm, color_style="threshold")
>>> fig.show()
>>> qutip.settings.colorblind_safe = False
>>> fig, ax = qutip.hinton(dm, color_style="phase")
>>> fig.show()
matrix_histogram(
M,
x_basis=None,
y_basis=None,
limits=None,
bar_style='real',
color_limits=None,
color_style='real',
options=None,
*,
cmap=None,
colorbar=True,
fig=None,
ax=None,
)[source]

为矩阵M绘制直方图,并给出x和y轴的标签以及标题。

Parameters:
MMatrix of Qobj

要可视化的矩阵

x_basislist of strings, optional

x轴刻度标签列表

y_basislist of strings, optional

y轴刻度标签列表

limitslist/array with two float numbers, optional

z轴限制 [最小值, 最大值]

bar_stylestr, {“real”, “img”, “abs”, “phase”}, default: “real”
  • 如果设置为"real"(默认值),每个条形图将绘制为相应矩阵元素的实部

  • 如果设置为 "img",每个条形图将绘制为相应矩阵元素的虚部

  • 如果设置为 "abs",每个条形图将绘制为对应矩阵元素的绝对值

  • 如果设置为"phase"(默认值),每个条形图将绘制为相应矩阵元素的角度

color_limitslist/array with two float numbers, optional

颜色条的限制 [最小值, 最大值]

color_stylestr, {“real”, “img”, “abs”, “phase”}, default: “real”

确定如何为每个方块分配颜色:

  • 如果设置为"real"(默认值),则根据相应矩阵元素的实部选择每种颜色。

  • 如果设置为 "img",则每种颜色根据相应矩阵元素的虚部选择。

  • 如果设置为 "abs",则每种颜色根据相应矩阵元素的绝对值选择。

  • 如果设置为"phase",则根据相应矩阵元素的角度选择每种颜色。

cmapa matplotlib colormap instance, optional

绘图时使用的颜色映射。

colorbarbool, default: True

显示颜色条

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘图将被绘制的坐标轴上下文。

optionsdict, optional

一个包含绘图额外选项的字典。 选项的名称(键)和值如下所述:

‘zticks’list of numbers, optional

z轴刻度位置的列表。

‘bars_spacing’float, default: 0.1

条形之间的间距。

‘bars_alpha’float, default: 1.

柱子的透明度,应在0到1之间

‘bars_lw’float, default: 0.5

条形边缘的线宽。

‘bars_edgecolor’color, default: ‘k’

条形边缘的颜色。 示例:'k', (0.1, 0.2, 0.5) 或 '#0f0f0f80'。

‘shade’bool, default: True

是否对柱子的暗面进行阴影处理(True)或不进行阴影处理(False)。 阴影处理是相对于绘图的光源而言的。

‘azim’float, default: -35

方位视角。

‘elev’float, default: 35

仰视角。

‘stick’bool, default: False

更改xlim和ylim,使得靠近XZ和YZ平面的条形图会紧贴这些平面。 如果ax作为参数传递,此选项无效。

‘cbar_pad’float, default: 0.04

原始轴在颜色条和新图像轴之间的部分。 (即3D图形和颜色条之间的填充)。

‘cbar_to_z’bool, default: False

是否将最大和最小z值的颜色设置为颜色条中的最大和最小颜色(True)或不设置(False)。

‘threshold’: float, optional

当较小高度的条形应该透明时的阈值。如果未设置,所有条形将根据颜色映射进行着色。

Returns:
fig, outputtuple

一个包含matplotlib图形和用于生成该图形的轴实例或动画实例的元组。

Raises:
ValueError

输入参数无效。

plot_energy_levels(
H_list,
h_labels=None,
energy_levels=None,
N=0,
*,
fig=None,
ax=None,
)[source]

绘制哈密顿量列表的能级图。包括最多N个能级。对于H_list中的每个元素,绘制累积哈密顿量sum(H_list[0:n])的能级图,其中n是H_list中元素的索引。

Parameters:
H_listList of Qobj

哈密顿量列表。

h_lablesList of string, optional

每个哈密顿量的xticklabels列表

energy_levelsList of string, optional

初始哈密顿量能级左侧的yticklabels列表。

Nint, default: 0

要绘制的能级数量

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘图将被绘制的坐标轴上下文。

Returns:
fig, axtuple

用于生成图形的matplotlib图形和轴实例的元组。

Raises:
ValueError

输入参数无效。

plot_expectation_values(results, ylabels=None, *, fig=None, axes=None)[source]

可视化演化求解器的结果(期望值)。 results 被假定为 Result 的实例,或 Result 实例的列表。

Parameters:
results(list of) Result

由任何QuTiP演化求解器返回的结果对象列表。

ylabelslist of strings, optional

y轴标签。列表的长度应与results相同。

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axes(list of) axes instances, optional

绘图将被绘制的坐标轴上下文。

Returns:
fig, axestuple

用于生成图形的matplotlib图形和轴实例数组的元组。

plot_fock_distribution(
rho,
fock_numbers=None,
color='green',
unit_y_range=True,
*,
fig=None,
ax=None,
)[source]

绘制描述振荡器模式的密度矩阵(或ket)的Fock分布。

Parameters:
rhoQobj

要可视化的状态的密度矩阵(或ket)。

fock_numberslist of strings, optional

表示fock数的x轴刻度标签列表

colorcolor or list of colors, default: “green”

条形面的颜色。

unit_y_rangebool, default: True

设置y轴限制为[0, 1]或不设置

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘图将被绘制的坐标轴上下文。

Returns:
fig, outputtuple

一个包含matplotlib图形和用于生成该图形的轴实例或动画实例的元组。

plot_qubism(
ket,
theme='light',
how='pairs',
grid_iteration=1,
legend_iteration=0,
*,
fig=None,
ax=None,
)[source]

用于多量子位纯态的Qubism图。最适合用于自旋链,特别是具有相同维度的偶数粒子。可以观察到前2k个粒子与其余粒子之间的纠缠。

注意

由于其独特的颜色映射,colorblind_safe 不适用

Parameters:
ketQobj

用于绘图的纯状态。

themestr {‘light’, ‘dark’}, default: ‘light’

设置颜色主题,用于将复数值映射到颜色。 参见:complex_array_to_rgb。

howstr {‘pairs’, ‘pairs_skewed’ or ‘before_after’}, default: ‘pairs’

Qubism 绘图的类型。选项:

  • ‘pairs’ - 典型坐标,

  • ‘pairs_skewed’ - 用于铁磁/反铁磁图,

  • ‘before_after’ - 与Schmidt图相关(另见:plot_schmidt)。

grid_iterationint, default: 1

在图上绘制的辅助线。 显示2*grid_iteration粒子与所有其他粒子的图块。

legend_iterationint or ‘grid_iteration’ or ‘all’, default: 0

显示前2*legend_iteration粒子的标签。选项 ‘grid_iteration’设置与grid_iteration相同的粒子数。选项‘all’为所有粒子创建标签。通常 它应该是0、1、2或可能是3。

figa matplotlib figure instance, optional

绘制图形的画布。

axa matplotlib axis instance, optional

绘制图表的轴上下文。

Returns:
fig, outputtuple

一个包含matplotlib图形和用于生成该图形的轴实例或动画实例的元组。

注释

另请参阅 [1].

参考文献

[1]

J. Rodriguez-Laguna, P. Migdal, M. Ibanez Berganza, M. Lewenstein 和 G. Sierra, Qubism: 多体波函数的自相似可视化, New J. Phys. 14 053028, arXiv:1112.3560 (2012), 开放获取。

plot_schmidt(
ket,
theme='light',
splitting=None,
labels_iteration=(3, 2),
*,
fig=None,
ax=None,
)[source]

与施密特分解相关的绘图方案。 将状态转换为矩阵(A_ij -> A_i^j), 其中行是第一个粒子,列是最后一个。

另请参阅:plot_qubism 使用 how=’before_after’ 来生成类似的图表。

注意

由于其独特的颜色映射,colorblind_safe 不适用

Parameters:
ketQobj

用于绘图的纯状态。

themestr {‘light’, ‘dark’}, default: ‘light’

设置颜色主题,用于将复数值映射到颜色。 参见:complex_array_to_rgb。

splittingint, optional

绘制第一个粒子数量与其余粒子的对比图。 如果未给出,则为(粒子数量 + 1)// 2。

labels_iterationint or pair of ints, default: (3, 2)

要显示为刻度标签的粒子数量,分别对应于第一个(垂直)和最后一个(水平)粒子。

figa matplotlib figure instance, optional

绘制图形的画布。

axa matplotlib axis instance, optional

绘制图表的轴上下文。

Returns:
fig, outputtuple

一个包含matplotlib图形和用于生成该图形的轴实例或动画实例的元组。

plot_spin_distribution(
P,
THETA,
PHI,
projection='2d',
*,
cmap=None,
colorbar=False,
fig=None,
ax=None,
)[source]

绘制自旋分布(以网格数据形式给出)。

Parameters:
Pmatrix

将分布值表示为网格矩阵。

THETAmatrix

用于theta坐标的网格矩阵。其范围在0到pi之间

PHImatrix

phi坐标的网格矩阵。其范围在0到2*pi之间。

projection: str {‘2d’, ‘3d’}, default: ‘2d’

指定自旋分布函数是否要绘制为二维投影,其中单位球的表面映射到单位盘('2d')或表面图('3d')。

cmapa matplotlib cmap instance, optional

颜色映射。

colorbarbool, default: False

是否(True)或不(False)在维格纳函数图上附加一个颜色条。

figa matplotlib figure instance, optional

绘制图形的画布。

axa matplotlib axis instance, optional

绘制图表的轴上下文。

Returns:
fig, outputtuple

一个包含matplotlib图形和用于生成该图形的轴实例或动画实例的元组。

plot_wigner(
rho,
xvec=None,
yvec=None,
method='clenshaw',
projection='2d',
g=1.4142135623730951,
sparse=False,
parfor=False,
*,
cmap=None,
colorbar=False,
fig=None,
ax=None,
)[source]

绘制描述振荡器模式的密度矩阵(或ket)的Wigner函数。

Parameters:
rhoQobj

要可视化的状态的密度矩阵(或ket)。

xvecarray_like, optional

计算Wigner函数的x坐标。

yvecarray_like, optional

用于计算Wigner函数的y坐标。不适用于‘fft’方法。

methodstr {‘clenshaw’, ‘iterative’, ‘laguerre’, ‘fft’}, default: ‘clenshaw’

用于计算维格纳函数的方法。详情请参阅qutip.wigner的文档。

projection: str {‘2d’, ‘3d’}, default: ‘2d’

指定是否将Wigner函数绘制为等高线图(‘2d’)或曲面图(‘3d’)。

gfloat

缩放因子为 a = 0.5 * g * (x + iy),默认 g = sqrt(2)。 详情请参阅 qutip.wigner 的文档。

sparsebool {False, True}

稀疏格式的标志。 有关详细信息,请参阅 qutip.wigner 的文档。

parforbool {False, True}

并行计算的标志。 有关详细信息,请参阅 qutip.wigner 的文档。

cmapa matplotlib cmap instance, optional

颜色映射。

colorbarbool, default: False

是否(True)或否(False)应将颜色条附加到Wigner函数图上。

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘图将被绘制的坐标轴上下文。

Returns:
fig, outputtuple

一个包含matplotlib图形和用于生成该图形的轴实例或动画实例的元组。

plot_wigner_sphere(
wigner,
reflections=False,
*,
cmap=None,
colorbar=True,
fig=None,
ax=None,
)[source]

绘制一个彩色的布洛赫球。

Parameters:
wignera wigner transformation

steps不同的theta和phi处的维格纳变换。

reflectionsbool, default: False

如果球体的反射也应该被绘制出来。

cmapa matplotlib colormap instance, optional

绘图时使用的颜色映射。

colorbarbool, default: True

是否(True)或不(False)应该附加一个颜色条。

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘制图表时使用的ax上下文。

Returns:
fig, outputtuple

一个包含matplotlib图形和用于生成该图形的轴实例或动画实例的元组。

注释

特别感谢Russell P Rundle编写此函数。

sphereplot(values, theta, phi, *, cmap=None, colorbar=True, fig=None, ax=None)[源代码]

在球体上绘制值矩阵

Parameters:
valuesarray

要绘制的数据集

thetafloat

相对于z轴的角度。其范围在0到pi之间

phifloat

在x-y平面中的角度。其范围在0到2*pi之间

cmapa matplotlib colormap instance, optional

绘图时使用的颜色映射。

colorbarbool, default: True

是否(True)或不(False)应该附加一个颜色条。

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘图将被绘制的坐标轴上下文。

Returns:
fig, outputtuple

一个包含matplotlib图形和用于生成该图形的轴实例或动画实例的元组。

用于动画化量子动力学模拟结果的函数,

anim_fock_distribution(
rhos,
fock_numbers=None,
color='green',
unit_y_range=True,
*,
fig=None,
ax=None,
)[source]

描述振荡器模式的密度矩阵(或ket)的Fock分布的动画。

Parameters:
rhosResult or list of Qobj

要可视化的状态的密度矩阵(或ket)。

fock_numberslist of strings, optional

表示fock数的x轴刻度标签列表

colorcolor or list of colors, default: “green”

条形面的颜色。

unit_y_rangebool, default: True

设置y轴限制为[0, 1]或不设置

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘图将被绘制的坐标轴上下文。

Returns:
fig, anituple

用于生成图形的matplotlib图形和动画实例的元组。

anim_hinton(
rhos,
x_basis=None,
y_basis=None,
color_style='scaled',
label_top=True,
*,
cmap=None,
colorbar=True,
fig=None,
ax=None,
)[source]

绘制Hinton图的动画。

Parameters:
rhosResult or list of Qobj

输入密度矩阵或超算子。

注意

超算子的Hinton图目前仅支持量子比特。

x_basislist of strings, optional

表示输入x轴的刻度标签列表。

y_basislist of strings, optional

表示输入y轴的y刻度标签列表。

color_stylestr, {“scaled”, “threshold”, “phase”}, default: “scaled”

确定如何为每个方块分配颜色:

  • 如果设置为"scaled"(默认值),则通过将相应矩阵元素的绝对值传递到cmap中,并带有实部的符号来选择每种颜色。

  • 如果设置为"threshold",每个方块将绘制为矩阵元素正实部的cmap最大值和负实部的最小值;请注意,这将“threshold”推广到了复数。

  • 如果设置为"phase",则根据相应矩阵元素的角度选择每种颜色。

label_topbool, default: True

如果为True,x轴刻度标签将放置在顶部,否则它们将出现在图表下方。

cmapa matplotlib colormap instance, optional

绘图时使用的颜色映射。

colorbarbool, default: True

是否(True)或不(False)应该附加一个颜色条。

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘制图表时使用的ax上下文。

Returns:
fig, anituple

用于生成图形的matplotlib图形和动画实例的元组。

Raises:
ValueError

输入参数不是量子对象。

anim_matrix_histogram(
Ms,
x_basis=None,
y_basis=None,
limits=None,
bar_style='real',
color_limits=None,
color_style='real',
options=None,
*,
cmap=None,
colorbar=True,
fig=None,
ax=None,
)[source]

为矩阵M绘制一个直方图的动画,并带有给定的x和y标签。

Parameters:
Mslist of matrices or Result

要可视化的矩阵

x_basislist of strings, optional

x轴刻度标签列表

y_basislist of strings, optional

y轴刻度标签列表

limitslist/array with two float numbers, optional

z轴限制 [最小值, 最大值]

bar_stylestr, {“real”, “img”, “abs”, “phase”}, default: “real”
  • 如果设置为"real"(默认值),每个条形图将绘制为相应矩阵元素的实部

  • 如果设置为 "img",每个条形图将绘制为相应矩阵元素的虚部

  • 如果设置为 "abs",每个条形图将绘制为对应矩阵元素的绝对值

  • 如果设置为"phase"(默认值),每个条形图将绘制为相应矩阵元素的角度

color_limitslist/array with two float numbers, optional

颜色条的限制 [最小值, 最大值]

color_stylestr, {“real”, “img”, “abs”, “phase”}, default: “real”

确定如何为每个方块分配颜色:

  • 如果设置为"real"(默认值),则根据相应矩阵元素的实部选择每种颜色。

  • 如果设置为 "img",则每种颜色根据相应矩阵元素的虚部选择。

  • 如果设置为 "abs",则每种颜色根据相应矩阵元素的绝对值选择。

  • 如果设置为"phase",则根据相应矩阵元素的角度选择每种颜色。

cmapa matplotlib colormap instance, optional

绘图时使用的颜色映射。

colorbarbool, default: True

显示颜色条

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘图将被绘制的坐标轴上下文。

optionsdict, optional

一个包含绘图额外选项的字典。 选项的名称(键)和值如下所述:

‘zticks’list of numbers, optional

z轴刻度位置的列表。

‘bars_spacing’float, default: 0.1

条形之间的间距。

‘bars_alpha’float, default: 1.

柱子的透明度,应在0到1之间

‘bars_lw’float, default: 0.5

条形边缘的线宽。

‘bars_edgecolor’color, default: ‘k’

条形边缘的颜色。 示例:'k', (0.1, 0.2, 0.5) 或 '#0f0f0f80'。

‘shade’bool, default: True

是否对柱子的暗面进行阴影处理(True)或不进行阴影处理(False)。 阴影处理是相对于绘图的光源而言的。

‘azim’float, default: -35

方位视角。

‘elev’float, default: 35

仰视角。

‘stick’bool, default: False

更改xlim和ylim,使得靠近XZ和YZ平面的条形图会紧贴这些平面。 如果ax作为参数传递,此选项无效。

‘cbar_pad’float, default: 0.04

原始轴在颜色条和新图像轴之间的部分。 (即3D图形和颜色条之间的填充)。

‘cbar_to_z’bool, default: False

是否将最大和最小z值的颜色设置为颜色条中的最大和最小颜色(True)或不设置(False)。

‘threshold’: float, optional

当较小高度的条形应该透明时的阈值。如果未设置,所有条形将根据颜色映射进行着色。

Returns:
fig, anituple

用于生成图形的matplotlib图形和动画实例的元组。

Raises:
ValueError

输入参数无效。

anim_qubism(
kets,
theme='light',
how='pairs',
grid_iteration=1,
legend_iteration=0,
*,
fig=None,
ax=None,
)[source]

多量子位纯态的Qubism图动画。 最适合用于自旋链,特别是具有相同维度的偶数粒子。 可以观察到前2k个粒子与其余粒子之间的纠缠。

注意

由于其独特的颜色映射,colorblind_safe 不适用

Parameters:
ketsResult or list of Qobj

用于动画的纯状态。

themestr {‘light’, ‘dark’}, default: ‘light’

设置颜色主题,用于将复数值映射到颜色。 参见:complex_array_to_rgb。

howstr {‘pairs’, ‘pairs_skewed’, ‘before_after’}, default: ‘pairs’

Qubism 绘图的类型。选项:

  • ‘pairs’ - 典型坐标,

  • ‘pairs_skewed’ - 用于铁磁/反铁磁图,

  • ‘before_after’ - 与Schmidt图相关(另见:plot_schmidt)。

grid_iterationint, default: 1

在图上绘制的辅助线。 显示2*grid_iteration粒子与所有其他粒子的图块。

legend_iterationint or ‘grid_iteration’ or ‘all’, default: 0

显示前2*legend_iteration粒子的标签。选项 ‘grid_iteration’设置与grid_iteration相同的粒子数。选项‘all’为所有粒子创建标签。通常 它应该是0、1、2或可能是3。

figa matplotlib figure instance, optional

绘制图形的画布。

axa matplotlib axis instance, optional

绘制图表的轴上下文。

Returns:
fig, anituple

用于生成图形的matplotlib图形和动画实例的元组。

注释

另请参阅 [1]

参考文献

[1]

J. Rodriguez-Laguna, P. Migdal, M. Ibanez Berganza, M. Lewenstein 和 G. Sierra, Qubism: 多体波函数的自相似可视化, New J. Phys. 14 053028, arXiv:1112.3560 (2012), 开放获取。

anim_schmidt(
kets,
theme='light',
splitting=None,
labels_iteration=(3, 2),
*,
fig=None,
ax=None,
)[source]

施密特分解的动画。 将状态转换为矩阵(A_ij -> A_i^j), 其中行是第一个粒子,列是最后一个。

另请参阅:plot_qubism 使用 how=’before_after’ 来生成类似的图表。

注意

由于其独特的颜色映射,colorblind_safe 不适用

Parameters:
ketResult or list of Qobj

用于动画的纯状态。

themestr {‘light’, ‘dark’}, default: ‘light’

设置颜色主题,用于将复数值映射到颜色。 参见:complex_array_to_rgb。

splittingint, optional

绘制第一个粒子数量与其余粒子的对比图。 如果未给出,则为(粒子数量 + 1)// 2。

labels_iterationint or pair of ints, default: (3, 2)

要显示为刻度标签的粒子数量,分别对应于第一个(垂直)和最后一个(水平)粒子。

figa matplotlib figure instance, optional

绘制图形的画布。

axa matplotlib axis instance, optional

绘制图表的轴上下文。

Returns:
fig, anituple

用于生成图形的matplotlib图形和动画实例的元组。

anim_sphereplot(V, theta, phi, *, cmap=None, colorbar=True, fig=None, ax=None)[source]

在球体上显示数值矩阵的动画

Parameters:
Vlist of array instances

要绘制的数据集

thetafloat

相对于z轴的角度。其范围在0到pi之间

phifloat

在x-y平面中的角度。其范围在0到2*pi之间

cmapa matplotlib colormap instance, optional

绘图时使用的颜色映射。

colorbarbool, default: True

是否(True)或不(False)应该附加一个颜色条。

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘图将被绘制的坐标轴上下文。

Returns:
fig, anituple

用于生成图形的matplotlib图形和动画实例的元组。

anim_spin_distribution(
Ps,
THETA,
PHI,
projection='2d',
*,
cmap=None,
colorbar=False,
fig=None,
ax=None,
)[source]

自旋分布的动画(以网格数据形式给出)。

Parameters:
Pslist of matrices

将分布值表示为网格矩阵。

THETAmatrix

用于theta坐标的网格矩阵。其范围在0到pi之间

PHImatrix

phi坐标的网格矩阵。其范围在0到2*pi之间。

projection: str {‘2d’, ‘3d’}, default: ‘2d’

指定自旋分布函数是否要绘制为二维投影,其中单位球的表面映射到单位盘('2d')或表面图('3d')。

cmapa matplotlib cmap instance, optional

颜色映射。

colorbarbool, default: False

是否(True)或否(False)应将颜色条附加到Wigner函数图上。

figa matplotlib figure instance, optional

绘制图形的画布。

axa matplotlib axis instance, optional

绘制图表的轴上下文。

Returns:
fig, anituple

用于生成图形的matplotlib图形和动画实例的元组。

anim_wigner(
rhos,
xvec=None,
yvec=None,
method='clenshaw',
projection='2d',
g=1.4142135623730951,
sparse=False,
parfor=False,
*,
cmap=None,
colorbar=False,
fig=None,
ax=None,
)[source]

描述振荡器模式的密度矩阵(或ket)的Wigner函数的动画。

Parameters:
rhosResult or list of Qobj

要可视化的状态的密度矩阵(或ket)。

xvecarray_like, optional

计算Wigner函数的x坐标。

yvecarray_like, optional

用于计算Wigner函数的y坐标。不适用于‘fft’方法。

methodstr {‘clenshaw’, ‘iterative’, ‘laguerre’, ‘fft’}, default: ‘clenshaw’

用于计算维格纳函数的方法。详情请参阅qutip.wigner的文档。

projection: str {‘2d’, ‘3d’}, default: ‘2d’

指定是否将Wigner函数绘制为等高线图(‘2d’)或曲面图(‘3d’)。

gfloat

缩放因子为 a = 0.5 * g * (x + iy),默认 g = sqrt(2)。 详情请参阅 qutip.wigner 的文档。

sparsebool {False, True}

稀疏格式的标志。 有关详细信息,请参阅 qutip.wigner 的文档。

parforbool {False, True}

并行计算的标志。 有关详细信息,请参阅 qutip.wigner 的文档。

cmapa matplotlib cmap instance, optional

颜色映射。

colorbarbool, default: False

是否(True)或否(False)应将颜色条附加到Wigner函数图上。

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘图将被绘制的坐标轴上下文。

Returns:
fig, anituple

用于生成图形的matplotlib图形和动画实例的元组。

anim_wigner_sphere(
wigners,
reflections=False,
*,
cmap=None,
colorbar=True,
fig=None,
ax=None,
)[source]

为彩色布洛赫球体添加动画效果。

Parameters:
wignerslist of transformations

steps不同的theta和phi处的维格纳变换。

reflectionsbool, default: False

如果球体的反射也应该被绘制出来。

cmapa matplotlib colormap instance, optional

绘图时使用的颜色映射。

colorbarbool, default: True

是否(True)或不(False)应该附加一个颜色条。

figa matplotlib Figure instance, optional

图表将在其中绘制的图形画布。

axa matplotlib axes instance, optional

绘制图表时使用的ax上下文。

Returns:
fig, anituple

用于生成图形的matplotlib图形和动画实例的元组。

注释

特别感谢Russell P Rundle编写此函数。

该模块包含以某种方式增强Matplotlib的实用函数。

complex_phase_cmap()[source]

创建一个循环颜色映射,用于表示复变量的相位

Returns:
cmap

一个matplotlib线性分段颜色映射。

wigner_cmap(
W,
levels=1024,
shift=0,
max_color='#09224F',
mid_color='#FFFFFF',
min_color='#530017',
neg_color='#FF97D4',
invert=False,
)[源代码]

一个自定义的颜色映射,通过创建一个非线性颜色映射来强调负值。

Parameters:
Warray

维格纳函数数组,或任何数组。

levelsint, default: 1024

要创建的颜色级别数量。

shiftfloat, default: 0

调整Wigner元素强调的值。 此参数通常应为负数且较小(例如-1e-5)。

max_colorstr, default: ‘#09224F’

对应于数据最大值的颜色字符串。接受任何与Matplotlib.colors.ColorConverter兼容的字符串格式。

mid_colorstr, default: ‘#FFFFFF’

对应零值的颜色。接受任何与Matplotlib.colors.ColorConverter兼容的字符串格式。

min_colorstr, default: ‘#530017’

对应于最小数据值的颜色。接受与Matplotlib.colors.ColorConverter兼容的任何字符串格式。

neg_colorstr, default: ‘#FF97D4’

开始突出显示负值的颜色。接受任何与Matplotlib.colors.ColorConverter兼容的字符串格式。

invertbool, default: False

反转负值的配色方案,使较小的负值具有更深的颜色。

Returns:
Returns a Matplotlib colormap instance for use in plotting.

注释

‘shift’ 参数允许您改变颜色映射开始突出显示负颜色的位置。这在由于数值舍入和/或截断导致存在小的负 Wigner 元素的情况下非常有用。

伪概率函数

qfunc(
state: Qobj,
xvec,
yvec,
g: float = 1.4142135623730951,
precompute_memory: float = 1024,
)[source]

给定状态向量或密度矩阵在相空间点 0.5 * g * (xvec + i*yvec) 的 Husimi-Q 函数。

Parameters:
stateQobj

一个状态向量或密度矩阵。这不能具有张量积结构。

xvec, yvecarray_like

计算Husimi-Q函数的x和y坐标。

gfloat, default: sqrt(2)

a = 0.5 * g * (x + iy) 的缩放因子。g 的值与对易关系 \([x,\,y] = i\hbar\) 中的 \(\hbar\) 值相关,通过 \(\hbar=2/g^2\) 关系,默认值对应于 \(\hbar=1\)

precompute_memoryreal, default: 1024

在处理密度矩阵输入时,计算过程中可能用作工作空间的大小(以MB为单位)。对于状态向量输入,此设置将被忽略。由于需要其他数量级较小的中间变量,这个界限并不完全准确,但是一个很好的近似值。如果你想对密度矩阵使用与单个ket相同的迭代算法,请设置precompute_memory=None

Returns:
ndarray

表示在指定范围 [xvec, yvec] 上计算的Husimi-Q函数的值。

另请参阅

QFunc

基于类的版本,如果您想在同一坐标上计算多个状态的Husimi-Q函数,则更高效。

spin_q_function(rho, theta, phi)[source]

自旋的Husimi Q函数定义为 Q(theta, phi) = SCS.dag() * rho * SCS 对于自旋相干态 SCS = spin_coherent( j, theta, phi) 其中 j 是自旋长度。 这里的实现更高效,因为它不会在 theta 和 phi 处生成所有的 SCS(参见参考文献)。

自旋Q函数在球面上积分时是正常的

\[\frac{4 \pi}{2j + 1}\int_\phi \int_\theta Q(\theta, \phi) \sin(\theta) d\theta d\phi = 1\]
Parameters:
stateqobj

自旋-j量子系统的状态向量或密度矩阵。

thetaarray_like

计算Husimi-Q函数的极角(余纬度)。

phiarray_like

计算Husimi-Q函数时的方位角。

Returns:
Q, THETA, PHI2d-array

表示在THETA和PHI指定的值处的自旋Husimi Q函数的值。

参考文献

[1] Lee Loh, Y., & Kim, M. (2015). 美国物理杂志, 83(1), 30–35. https://doi.org/10.1119/1.4898595

spin_wigner(rho, theta, phi)[source]

自旋-j系统的Wigner函数。

自旋W函数在球体表面积分时是正常的

\[\sqrt{\frac{4 \pi}{2j + 1}}\int_\phi \int_\theta W(\theta,\phi) \sin(\theta) d\theta d\phi = 1\]
Parameters:
stateqobj

自旋-j量子系统的状态向量或密度矩阵。

thetaarray_like

计算W函数的极(余纬度)角度。

phiarray_like

计算W函数的方位角。

Returns:
W, THETA, PHI2d-array

表示在THETA和PHI指定的值处的自旋维格纳函数的值。

参考文献

[1] Agarwal, G. S. (1981). 物理评论 A, 24(6), 2889–2896. https://doi.org/10.1103/PhysRevA.24.2889

[2] Dowling, J. P., Agarwal, G. S., & Schleich, W. P. (1994). 物理评论 A, 49(5), 4101–4109. https://doi.org/10.1103/PhysRevA.49.4101

[3] Wigner 3-j 符号与 Clebsch-Gordan 系数之间的转换 取自维基百科 (https://en.wikipedia.org/wiki/3-j_symbol)

wigner(
psi,
xvec,
yvec=None,
method='clenshaw',
g=1.4142135623730951,
sparse=False,
parfor=False,
)[source]

状态向量或密度矩阵在点 xvec + i * yvec 处的Wigner函数。

Parameters:
stateqobj

状态向量或密度矩阵。

xvecarray_like

计算Wigner函数的x坐标。

yvecarray_like

用于计算Wigner函数的y坐标。不适用于‘fft’方法。

gfloat, default: sqrt(2)

a = 0.5 * g * (x + iy) 的缩放因子,默认 g = sqrt(2)g 的值与对易关系 [x, y] = i * hbar 中的 hbar 值相关,通过 hbar=2/g^2 给出默认值 hbar=1

methodstring {‘clenshaw’, ‘iterative’, ‘laguerre’, ‘fft’}, default: ‘clenshaw’

选择方法 'clenshaw'、'iterative'、'laguerre' 或 'fft',其中 'clenshaw' 和 'iterative' 使用迭代方法来评估密度矩阵的 Wigner 函数 \(|m>,而 'laguerre' 使用 scipy 中的 Laguerre 多项式来完成相同的任务。'fft' 方法评估密度矩阵的傅里叶变换。'iterative' 方法是默认的,通常推荐使用,但对于非常稀疏的密度矩阵(例如,在大希尔伯特空间中的 Fock 态叠加),'laguerre' 方法更高效。'clenshaw' 方法是处理具有大量激发(>~50)的密度矩阵的首选方法。'clenshaw' 是一种快速且数值稳定的方法。

sparsebool, optional

告诉默认求解器是否保持输入密度矩阵为稀疏格式。随着密度矩阵维度的增加,设置此标志可以提高性能。

parforbool, optional

用于计算基于拉盖尔多项式的维格纳函数的标志 method='laguerre' 使用 parfor 函数并行计算。

Returns:
Warray

表示在指定范围 [xvec,yvec] 上计算的 Wigner 函数的值。

yvexarray

仅限FFT。返回通过傅里叶变换计算的y坐标值。

注释

'fft' 方法仅接受 xvec 输入作为 x 坐标。 y 坐标在内部计算。

参考文献

乌尔夫·莱昂哈特, 《测量光的量子态》,(剑桥大学出版社,1997年)

class QFunc(xvec, yvec, g: float = 1.4142135623730951, memory: float = 1024)[source]

基于类的方法,用于计算在固定相空间点 0.5*g* (xvec + i*yvec) 处多种不同量子态的 Husimi-Q 函数。 这个类的首次使用成本略高于 qfunc,但后续操作将快几倍。然而,它可能需要相当多的内存。将创建的对象作为函数调用以检索 Husimi-Q 函数。

Parameters:
xvec, yvecarray_like

计算Husimi-Q函数的x和y坐标。

gfloat, default: sqrt(2)

a = 0.5 * g * (x + iy) 的缩放因子。g 的值与对易关系中的 hbar 值相关,通过 \(\hbar=2/g^2\),因此默认值对应于 \(\hbar=1\)

memoryreal, default: 1024

以MB为单位的大小,可能被内部用作工作空间。如果随后传递的状态维度足够大,以至于超过此限制,此类将引发MemoryError。在这些情况下,请使用qfunc并设置precompute_memory=None,以强制使用较慢但更节省内存的算法。

另请参阅

qfunc

单一函数版本,为了使用更少的内存,将涉及多次计算多个量。

示例

初始化一个正方形坐标集的类,包含一些我们想要调查的状态。

>>> xvec = np.linspace(-2, 2, 101)
>>> states = [qutip.rand_dm(10) for _ in [None]*10]
>>> qfunc = qutip.QFunc(xvec, xvec)

现在我们可以更高效地计算每个状态的Husimi-Q函数:

>>> husimiq = np.array([qfunc(state) for state in states])

量子过程层析成像

qpt(U, op_basis_list)[source]

计算给定(可能非酉)变换矩阵U的量子过程断层扫描chi矩阵,该矩阵根据以下公式变换向量形式的密度矩阵:

向量(rho) = U * 向量(rho0)

rho = unstack_columns(U * stack_columns(rho0))

U 可以使用 QuTiP 传播器函数为开放量子系统计算。

Parameters:
UQobj

变换操作符。可以使用QuTiP传播函数进行计算。

op_basis_listlist

表示基础状态的Qobj列表。

Returns:
chiarray

QPT 卡方矩阵

qpt_plot(chi, lbls_list, title=None, fig=None, axes=None)[source]

可视化量子过程断层扫描chi矩阵。分别绘制实部和虚部。

Parameters:
chiarray

输入QPT chi矩阵。

lbls_listlist

QPT图表轴的标签列表。

titlestr, optional

图表标题。

figfigure instance, optional

用于生成QPT图的用户自定义图形实例。

axeslist of figure axis instance, optional

用户定义的图形轴实例(两个轴的列表)用于生成QPT图。

Returns:
fig, axtuple

用于生成图形的matplotlib图形和轴实例的元组。

qpt_plot_combined(
chi,
lbls_list,
title=None,
fig=None,
ax=None,
figsize=(8, 6),
threshold=None,
)[源代码]

可视化量子过程断层扫描的chi矩阵。绘制条形图,其高度和颜色分别对应于绝对值和相位。

Parameters:
chiarray

输入QPT chi矩阵。

lbls_listlist

QPT图表轴的标签列表。

titlestr, optional

图表标题。

figfigure instance, optional

用于生成QPT图的用户自定义图形实例。

figsize(int, int), default: (8, 6)

当未提供fig时,图形的大小。

axfigure axis instance, optional

用于生成QPT图的用户自定义图形轴实例 (替代fig参数)。

threshold: float, optional

当较小高度的条形应该透明时的阈值。如果未设置,所有条形将根据颜色映射进行着色。

Returns:
fig, axtuple

用于生成图形的matplotlib图形和轴实例的元组。