捌拾- 量子态层析 以及 布洛赫球 (1)

ops/2025/2/27 11:13:19/

1. 奥卡姆剃刀

在上一篇学习文章中 柒拾玖- 贝尔不等式 ,我感觉,为啥这么量子计算的门槛那么高呢?

结果我打开了上级目录,发现,原来他是按首字母排序…

经过一系列查看,我挑了一个最简单的

量子态层析

这里能更简单的说明量子比特到底测量出来的本质是什么,而且它物理性在量子计算上的体现。

但!!这里有一个大坑!!!

我在网上下的最新的 pyquafu 是 0.4.6,但这个教程是用 0.3.5 演示的!!!有些演示用的函数都没了!!!

2. 布洛赫球

首先,我先撇开物理性质去理解,单独理解数学层面的解释

先从单个粒子来看,它从3个维度构成,分别是 X、Y、Z

他们三个以及一个单位 I 可以够成一个粒子的密度函数,详细数学描述如下图

在这里插入图片描述

我个人觉得可以先忘记上面的东西,反正得知,X、Y、Z 可以作为一个三维的矢量,可以得到一个球

在这里插入图片描述

而关于这个球的详细描述,可以参看 布洛赫球 (Bloch Sphere)

3. 测量到底是基于什么?

这个就很扯淡,首先我们得说一下到底 pyquafu 到底是测的什么

或者说所有量子计算都是基于这个逻辑去进行测量的?

首先,我们看到所有的教程均有一个函数叫 calculate_obs ,它允许直接对已经完成量子计算并进行测量的量子比特得到一个数学期望值。

但,我基于 0.4.6 的 quafu 居然就没了这个函数!?!?

却直接给出了一个密度函数,于是我上网搜,到底怎么计算?

得到一个结果

在这里插入图片描述

um…

好,我知道了,不过问题是,我到底是用什么算符!?我是一个小白!!!!

于是我不断做实验,不断看文档,我看到教程里面有一段代码:

def create_circuit(theta, phi, base="Z"):# 创建量子态:|ψ> = cos(θ/2)|0> + exp(i*φ)*sin(θ/2)|1>qc = QuantumCircuit(1)qc.ry(0,theta)qc.rz(0,phi)# 旋转测量基if base == "X":qc.ry(0, -pi/2)  # 用X的本征态为测量基elif base == "Y":qc.rx(0, pi/2)   # 用Y的本征态为测量基elif base == "Z":passqc.measure([0])return qc

凭啥我测 X 轴、Y 轴 的时候需要旋转,Z轴就不需要旋转!?

有没有可能,我们测的,只是 Z 轴?

于是,我首先参考教程,写了一段测量算符的代码来代替 calculate_obs 函数


# 引入包
from quafu import QuantumCircuit,Task,simulate
import numpy as np
import matplotlib.pyplot as plt
from numpy import pi# 定义 Pauli Z 矩阵
sigma_Z = np.array([[1, 0], [0, -1]])def create_circuit(theta, phi, base="Z"):# 创建量子态:|ψ> = cos(θ/2)|0> + exp(i*φ)*sin(θ/2)|1>qc = QuantumCircuit(1)qc.ry(0,theta)qc.rz(0,phi)# 旋转测量基if base == "X":qc.ry(0, -pi/2)  # 用X的本征态为测量基elif base == "Y":qc.rx(0, pi/2)   # 用Y的本征态为测量基elif base == "Z":passqc.measure([0])return qcfor strD in ['X','Y','Z']:# 得出单量子q=create_circuit(theta=2*pi/3, phi=pi/4,base=strD)# 模拟运行sim_res = simulate(q)# 计算密度函数sim_rho = sim_res.calc_density_matrix()# 计算期望值# 先点成 密度函数 · 泡利 Z 矩阵# 再求迹expectation_value = np.trace(np.dot(sim_rho, sigma_Z)).realprint( strD + " 期望值为:" + str(expectation_value))# 且计算当 Z 轴测量时 ( 即不旋转测量子比特 )
# 得出单量子
q=create_circuit(theta=2*pi/3, phi=pi/4)
# 模拟运行
sim_res = simulate(q)
# 计算密度函数
sim_rho = sim_res.calc_density_matrix()
print(sim_rho)

得出一样的结果

在这里插入图片描述

我悟了!!!

4. 那多比特呢!?

那就非常复杂了,得看张量积…
那又是啥…
我得回家吃饭了
下次再说


http://www.ppmy.cn/ops/161662.html

相关文章

1472.设计浏览器历史记录

这里是模拟浏览器的回退和前进 用一个列表来存储浏览器的历史记录 cur指向当前浏览器记录的位置 visit 就是清空之前访问过的历史记录,把当前的放进去 self.cur1代表进下一个访问 然后删掉 当前的和之前的,加入新的 前进和回退要考虑边界 class Browser…

UE5 Computer Shader学习笔记

首先这里是绑定.usf文件的路径,并声明是用声明着色器 上面就是对应的usf文件路径,在第一张图进行链接 Shader Frequency 的作用 Shader Frequency 是 Unreal Engine 中用于描述着色器类型和其执行阶段的分类。常见的 Shader Frequency 包括&#xff1a…

expdp 报错ORA-31693、ORA-02354、ORA-01591

某项目逻辑备份报错 ORA-31693: Table data object "amf"."TVON7LOG" failed to load/unload and is being skipped due to error: ORA-02354: error in exporting/importing data ORA-01591: lock held by in-doubt distributed transaction 22.26.10043…

docker的下载与使用(一)

本文默认使用linux系统以及会linux的基本指令,windows下安装docker较为繁琐 docker是什么 Docker 是一个开源的应用容器引擎,基于go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&…

Qt常用控件之多行输入框QTextEdit

多行输入框QTextEdit QTextEdit 是一个多行输入框控件,支持富文本和 markdown 格式,当文本内容超出编辑框的范围时能自动提供滚动条。 QPlainTextEdit 是只支持富文本格式的多行输入框,属性和使用上与 QTextEdit 几乎没有区别。 QTextEdit属…

openlayers结合turf geojson面获取面积和中心点

在 OpenLayers 中绘制 GeoJSON 面要素并计算面积和中心点,可以结合 OpenLayers 的 ol/format/GeoJSON 模块将 GeoJSON 数据转换为 OpenLayers 的 Feature,然后使用 Turf.js 进行计算。示例代码如下 import Map from ol/Map; import View from ol/View; …

冒泡排序(Bubble Sort)详细教程:Java实现与优化

一、什么是冒泡排序? 冒泡排序(Bubble Sort)是一种简单的排序算法,它的基本思想是通过两两比较相邻元素,将较大的元素“冒泡”到数列的末尾。每一轮遍历会将一个较大的元素放到正确的位置,直到整个数组有序…

Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果

目录 一、基本的后处理流程 - 以将画面转化为灰度图为例 1. C#调用shader 2. Shader实现效果 二、Bloom辉光效果 1. 主要变量 2. Shader效果 (1)提取较亮区域 - pass1 (2)高斯模糊 - pass2&3 (3&#xff…