Skip to Content

薛定谔化方法

概述

unitarylab_algorithms.schrodingerization 包实现了通过薛定谔化(Schrödingerization)技术将偏微分方程(PDE)求解转化为量子模拟的算法——将非厄米(非酉)动力学嵌入到满足薛定谔方程的更大量子系统中,从而在量子计算机上进行酉模拟。

核心思想:将经典偏微分方程 不一定是反厄米算符)通过坐标变换嵌入到等价薛定谔方程所描述的量子系统中。

方程模块描述
一维对流方程equation_advection线性输运方程
一维热方程equation_heat扩散方程
二维热方程equation_heat2d二维热扩散

注意: 对流方程、热方程和二维热方程模块在自动文档生成时遇到渲染错误。以下接口描述基于共享基类和标准模块约定。精确参数签名请参阅源代码。


基类:unitarylab_algorithms.schrodingerization.base

所有薛定谔化算法均继承自 unitarylab_algorithms.schrodingerization.base.BaseAlgorithm,这是一个与 unitarylab_algorithms.algo_base.BaseAlgorithm 独立的抽象基类。

抽象接口

class BaseAlgorithm(ABC): @abstractmethod def run(self, params: str) -> Dict[str, Any]: """执行算法逻辑。params 为 JSON 字符串格式。""" ... def parse_params(self, params) -> Any: """解析参数:兼容 JSON 字符串和已解析的 dict/list。""" ...

日志工具

create_algorithm_logger 函数为每个算法创建独立的滚动文件日志记录器:

from unitarylab_algorithms.schrodingerization.base import create_algorithm_logger logger = create_algorithm_logger(__file__) logger.info("算法开始执行")

参数:

参数类型默认值说明
algorithm_filestr通常传入算法模块的 __file__
log_namestr | NoneNone日志记录器名称(默认使用算法文件夹名)
log_dirstr | NoneNone日志目录(默认使用算法文件所在目录)
console_outputboolTrue是否同时输出到控制台
max_bytesint50 MB单个日志文件最大字节数
backup_countint5保留的备份日志文件数量
force_reconfigureboolFalse强制重新初始化(热重载时使用)

一维对流方程

背景

线性对流方程描述了标量场 以常速度 的输运过程:

薛定谔化方法将 编码为量子态,并在等价薛定谔方程下演化,从而实现对该非酉经典偏微分方程的量子酉模拟。

导入

from unitarylab_algorithms.schrodingerization.equation_advection.algorithm import <算法类名>

调用模式

薛定谔化算法的 run() 方法接受 JSON 字符串(或 Python 字典)作为参数,遵循基类约定:

import json algo = AdvectionAlgorithm() # 实际类名可能不同,请参阅源码 params = json.dumps({ "v": 1.0, # 对流速度 "nx": 64, # 空间网格点数 "t": 1.0 # 总演化时间 }) result = algo.run(params) print(result['status'])

一维热方程

背景

一维热方程描述标量场的扩散过程:

其中 是热扩散系数。算符 是负半定的,属于非哈密顿量类型,需要量子嵌入才能进行酉模拟。

导入

from unitarylab_algorithms.schrodingerization.equation_heat.algorithm import <算法类名>

调用模式

import json algo = HeatAlgorithm() # 实际类名请参阅源码 params = json.dumps({ "alpha": 0.1, # 热扩散系数 "nx": 64, # 空间网格点数 "t": 0.5 # 总演化时间 }) result = algo.run(params) print(result['status'])

二维热方程

背景

二维热方程将标量扩散推广到两个空间维度:

量子模拟需要更大的状态空间来表示二维网格,但薛定谔化嵌入方式类似。

导入

from unitarylab_algorithms.schrodingerization.equation_heat2d.algorithm import <算法类名>

调用模式

import json algo = Heat2DAlgorithm() # 实际类名请参阅源码 params = json.dumps({ "alpha": 0.05, # 热扩散系数 "nx": 16, # x 轴网格点数 "ny": 16, # y 轴网格点数 "t": 0.1 # 总演化时间 }) result = algo.run(params) print(result['status'])

通用注意事项

  • 所有薛定谔化算法遵循抽象基类的 run(params: str) 接口。params 参数应为 JSON 字符串或 Python dict/list
  • 在处理输入前,可使用 algo.parse_params(params) 安全反序列化参数。
  • 这些算法对于细密空间网格计算量较大。验证环境配置时,建议从较小的 nx(如 16–32)开始,然后再扩大规模。
  • 在算法模块内部,使用 create_algorithm_logger(__file__) 配置日志记录。
最后更新于