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 ])