薛定谔化方法
概述
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_file | str | — | 通常传入算法模块的 __file__ |
log_name | str | None | None | 日志记录器名称(默认使用算法文件夹名) |
log_dir | str | None | None | 日志目录(默认使用算法文件所在目录) |
console_output | bool | True | 是否同时输出到控制台 |
max_bytes | int | 50 MB | 单个日志文件最大字节数 |
backup_count | int | 5 | 保留的备份日志文件数量 |
force_reconfigure | bool | False | 强制重新初始化(热重载时使用) |
一维对流方程
背景
线性对流方程描述了标量场 以常速度 的输运过程:
薛定谔化方法将 编码为量子态,并在等价薛定谔方程下演化,从而实现对该非酉经典偏微分方程的量子酉模拟。
导入
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 字符串或 Pythondict/list。 - 在处理输入前,可使用
algo.parse_params(params)安全反序列化参数。 - 这些算法对于细密空间网格计算量较大。验证环境配置时,建议从较小的
nx(如 16–32)开始,然后再扩大规模。 - 在算法模块内部,使用
create_algorithm_logger(__file__)配置日志记录。
最后更新于