量子位元#
量子计算的量子比特。
待办事项: 完成测量逻辑的实现。这应该包括POVM。 更新docstrings。*更新测试。
- class sympy.physics.quantum.qubit.IntQubit(*args, **kwargs)[源代码]#
一种量子位ket,它将整数作为二进制数存储在量子位值中。
这个班和
Qubit
是:构造函数的形式。
qubit值被打印为其对应的整数,而不是原始的qubit值。qubit值的内部存储格式与
Qubit
.
- 参数:
价值观 :int,元组
如果是单个参数,则是我们要用qubit值表示的整数。这个整数将用尽可能少的量子位来表示。如果一对整数和第二个值大于一,则第一个整数给出以二进制形式表示的整数,第二个整数给出要使用的量子位数。零和一的列表也被接受来生成逐位模式。
纳比特 :内景
表示量子位数的整数。此数字应与关键字一起传递
nqubits=N
. 您可以使用它来避免Qubit样式的位元组的模糊性。请参阅下面的示例了解更多详细信息。
实例
为整数5创建一个量子位:
>>> from sympy.physics.quantum.qubit import IntQubit >>> from sympy.physics.quantum.qubit import Qubit >>> q = IntQubit(5) >>> q |5>
我们还可以创建一个
IntQubit
通过一个Qubit
实例。>>> q = IntQubit(Qubit('101')) >>> q |5> >>> q.as_int() 5 >>> q.nqubits 3 >>> q.qubit_values (1, 0, 1)
我们可以回到正常的量子位形式。
>>> Qubit(q) |101>
请注意
IntQubit
也接受Qubit
-位的样式列表。所以,下面的代码产生量子比特3,而不是一个比特1
.>>> IntQubit(1, 1) |3>
为避免歧义,请使用
nqubits
参数。建议使用此关键字,尤其是当您按变量提供值时。>>> IntQubit(1, nqubits=1) |1> >>> a = 1 >>> IntQubit(a, nqubits=1) |1>
- class sympy.physics.quantum.qubit.Qubit(*args, **kwargs)[源代码]#
在计算(z)基础上的一种多量子比特ket。
我们使用最不重要的量子位在右边,所以
|00001>
在最低有效量子位中有1。- 参数:
价值观 :列表,str
作为整数列表的qubit值( [0,0,0,1,1,] )或字符串('011')。
实例
用几种不同的方法创建一个量子位,并查看它们的属性:
>>> from sympy.physics.quantum.qubit import Qubit >>> Qubit(0,0,0) |000> >>> q = Qubit('0101') >>> q |0101>
>>> q.nqubits 4 >>> len(q) 4 >>> q.dimension 4 >>> q.qubit_values (0, 1, 0, 1)
我们可以翻转单个量子比特的值:
>>> q.flip(1) |0111>
我们可以拿一把匕首去买一个胸罩:
>>> from sympy.physics.quantum.dagger import Dagger >>> Dagger(q) <0101| >>> type(Dagger(q)) <class 'sympy.physics.quantum.qubit.QubitBra'>
内部产品按预期工作:
>>> ip = Dagger(q)*q >>> ip <0101|0101> >>> ip.doit() 1
- class sympy.physics.quantum.qubit.QubitBra(*args, **kwargs)[源代码]#
计算基(quz)多比特bra。
我们使用最不重要的量子位在右边,所以
|00001>
在最低有效量子位中有1。- 参数:
价值观 :列表,str
作为整数列表的qubit值( [0,0,0,1,1,] )或字符串('011')。
参见
Qubit
使用量子位的例子
- sympy.physics.quantum.qubit.matrix_to_density(mat)[源代码]#
通过求矩阵的特征向量和特征值来工作。我们知道我们可以分解rho,方法是:求和(EigenVal*| Eigenvect><Eigenvect |)
- sympy.physics.quantum.qubit.matrix_to_qubit(matrix)[源代码]#
从矩阵表达式转换。一个量子比特对象的总和。
- 参数:
矩阵 :矩阵,numpy.matrix公司, 稀疏稀疏
The matrix to build the Qubit representation of. This works with SymPy matrices, numpy matrices and scipy.sparse sparse matrices.
实例
表示一个状态,然后返回到它的量子位形式:
>>> from sympy.physics.quantum.qubit import matrix_to_qubit, Qubit >>> from sympy.physics.quantum.represent import represent >>> q = Qubit('01') >>> matrix_to_qubit(represent(q)) |01>
- sympy.physics.quantum.qubit.measure_all(qubit, format='sympy', normalize=True)[源代码]#
对所有量子位进行系综测量。
- 参数:
量子比特 :Qubit,添加
要测量的量子位。这可以是任何量子位,也可以是它们的线性组合。
格式 :结构
要使用的中间矩阵的格式。可能的值是('sypy','numpy','稀疏稀疏'). 当前只实现了“sympy”。
- 返回:
结果 :列表
由原始状态及其概率组成的列表。
实例
>>> from sympy.physics.quantum.qubit import Qubit, measure_all >>> from sympy.physics.quantum.gate import H >>> from sympy.physics.quantum.qapply import qapply
>>> c = H(0)*H(1)*Qubit('00') >>> c H(0)*H(1)*|00> >>> q = qapply(c) >>> measure_all(q) [(|00>, 1/4), (|01>, 1/4), (|10>, 1/4), (|11>, 1/4)]
- sympy.physics.quantum.qubit.measure_all_oneshot(qubit, format='sympy')[源代码]#
对所有量子位执行一次集成测量。
一次测量相当于对量子系统进行测量。这种测量不像集合测量那样返回概率,而是返回 one 可能的结果状态。返回的确切状态是通过根据集合概率随机选取一个状态来确定的。
- 参数:
量子比特 :量子比特
要测量的量子位。这可以是任何量子位,也可以是它们的线性组合。
格式 :结构
要使用的中间矩阵的格式。可能的值是('sypy','numpy','稀疏稀疏'). 当前只实现了“sympy”。
- 返回:
结果 :量子比特
测量时系统崩溃的量子位。
- sympy.physics.quantum.qubit.measure_partial(qubit, bits, format='sympy', normalize=True)[源代码]#
对指定的量子位执行部分集成测量。
- 参数:
量子比特 :量子比特
要测量的量子位。这可以是任何量子位,也可以是它们的线性组合。
bits :元组
要测量的量子位。
格式 :结构
要使用的中间矩阵的格式。可能的值是('sypy','numpy','稀疏稀疏'). 当前只实现了“sympy”。
- 返回:
结果 :列表
由原始状态及其概率组成的列表。
实例
>>> from sympy.physics.quantum.qubit import Qubit, measure_partial >>> from sympy.physics.quantum.gate import H >>> from sympy.physics.quantum.qapply import qapply
>>> c = H(0)*H(1)*Qubit('00') >>> c H(0)*H(1)*|00> >>> q = qapply(c) >>> measure_partial(q, (0,)) [(sqrt(2)*|00>/2 + sqrt(2)*|10>/2, 1/2), (sqrt(2)*|01>/2 + sqrt(2)*|11>/2, 1/2)]
- sympy.physics.quantum.qubit.measure_partial_oneshot(qubit, bits, format='sympy')[源代码]#
对指定的量子位执行部分一次性测量。
一次测量相当于对量子系统进行测量。这种测量不像集合测量那样返回概率,而是返回 one 可能的结果状态。返回的确切状态是通过根据集合概率随机选取一个状态来确定的。
- 参数:
量子比特 :量子比特
要测量的量子位。这可以是任何量子位,也可以是它们的线性组合。
bits :元组
要测量的量子位。
格式 :结构
要使用的中间矩阵的格式。可能的值是('sypy','numpy','稀疏稀疏'). 当前只实现了“sympy”。
- 返回:
结果 :量子比特
测量时系统崩溃的量子位。