You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DifferentialEquations.jl实现Heston模型触发Bridging distribution错误

问题解答

关于桥接分布缺失的原因

数学上相关维纳过程的布朗桥分布是完全有明确定义的,出现该报错并非原理层面不支持,而是DiffEqNoiseProcess包的CorrelatedWienerProcess!实现暂时没有补充桥接分布的调度逻辑。
自适应SDE求解器在执行步长拒绝操作时,需要用到布朗桥分布对已采样的噪声路径做插值回退,默认的独立维纳过程WienerProcess早已实现了对应的桥接方法,但CorrelatedWienerProcess!的早期实现仅覆盖了正向噪声采样逻辑,没有适配步长拒绝所需的桥接采样接口,因此触发报错。

关于自动求解器未回退非自适应的原因

solve函数的自动算法选择逻辑的判断依据默认仅包含问题维度、噪声类型(对角/非对角)、刚性特征等通用属性,暂未加入对自定义噪声过程是否支持桥接分布的检查逻辑。因此自动选择器会按默认规则选中开启自适应的求解算法,不会主动触发非自适应回退,这个属于库的体验优化待完善点,不属于逻辑错误。

推荐替代方案

如果需要保留自适应求解能力,不需要自定义CorrelatedWienerProcess!,可以通过对独立噪声做线性变换实现相关效果,示例代码如下:

heston_tspan = (0.0,1.0)
μ = 1.0
κ = 1.0
Θ = 1.0
σ = 1.0
ρ = 0.333
# 预计算相关矩阵的Cholesky分解因子
correl = [1 ρ;ρ 1]
L = cholesky(correl).L

function heston_drift!(du,u,p,t)
    du[1] = μ*u[1]
    du[2] = κ*(Θ-u[2])
end

function heston_sigma!(du,u,p,t)
    # 先计算原始独立噪声对应的扩散项
    du[1] = √u[2]*u[1]
    du[2] = σ*√u[2]
    # 乘Cholesky因子转换为相关噪声
    du .= L * du
end

# 用默认的独立维纳过程,支持桥接分布和自适应
heston_problem = SDEProblem(heston_drift!, heston_sigma!, ones(2), heston_tspan)
heston_sol = solve(heston_problem)
plot(heston_sol)

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:48:03