mindquantum.core.gates.gene_univ_parameterized_gate

查看源文件
mindquantum.core.gates.gene_univ_parameterized_gate(name, matrix_generator, diff_matrix_generator)[源代码]

基于单参数幺正矩阵生成自定义参数化门。

说明

矩阵中的元素需要显示的定义为复数,特别时对于多比特门。

参数:
  • name (str) - 此门的名称。

  • matrix_generator (Union[FunctionType, MethodType]) - 只采用一个参数生成幺正矩阵的函数或方法。

  • diff_matrix_generator (Union[FunctionType, MethodType]) - 只采用一个参数生成幺正矩阵导数的函数或方法。

返回:

_ParamNonHerm,自定义的参数化门。

样例:

>>> import numpy as np
>>> from mindquantum.core.circuit import Circuit
>>> from mindquantum.core.gates import gene_univ_parameterized_gate
>>> from mindquantum.simulator import Simulator
>>> def matrix(alpha):
...     ep = 0.5 * (1 + np.exp(1j * np.pi * alpha))
...     em = 0.5 * (1 - np.exp(1j * np.pi * alpha))
...     return np.array([
...         [1.0 + 0.0j, 0.0j, 0.0j, 0.0j],
...         [0.0j, ep, em, 0.0j],
...         [0.0j, em, ep, 0.0j],
...         [0.0j, 0.0j, 0.0j, 1.0 + 0.0j],
...     ])
>>> def diff_matrix(alpha):
...     ep = 0.5 * 1j * np.pi * np.exp(1j * np.pi * alpha)
...     em = -0.5 * 1j * np.pi * np.exp(1j * np.pi * alpha)
...     return np.array([
...         [0.0j, 0.0j, 0.0j, 0.0j],
...         [0.0j, ep, em, 0.0j],
...         [0.0j, em, ep, 0.0j],
...         [0.0j, 0.0j, 0.0j, 0.0j],
...     ])
>>> TestGate = gene_univ_parameterized_gate('Test', matrix, diff_matrix)
>>> circ = Circuit().h(0)
>>> circ += TestGate('a').on([0, 1])
>>> circ
q0: ──H────Test(a)──

q1: ───────Test(a)──
>>> circ.get_qs(pr={'a': 1.2})
array([0.70710678+0.j        , 0.06752269-0.20781347j,
       0.63958409+0.20781347j, 0.        +0.j        ])