正向随机微分方程的经典数值格式模拟

  • 前言
  • 一:随机微分方程(SDE)的相关性质
  • 二:方程的数值解格式
  • 三:实验模拟
  • 四:总结

前言

随机微分方程的发展分支可以说到现在非常广泛了,从19世纪的布朗运动发现到上世纪40年代的伊藤积分再到正向伊藤随机微分方程解的存在唯一性定理,后又跨越到上世纪90年代的倒向随机微分方程解的存在唯一性定理发现,最后到近现在的带跳、带马尔科夫、带延迟等一系列正倒向随机微方程解的存在唯一性定理等发现,可以说体系越发广泛,这也是顺应时代发展的必然趋势。

本篇文章将数值模拟经典下的正向随机微分方程数值格式的模拟,由于不是存粹数学研究,有些假设和定理和推导会简单概括,重点是计算机编程模拟,也算是学习随机微分方程数值法的入门介绍。

一:随机微分方程(SDE)的相关性质

  • 简介

随机过程 XtX_tXt​ 被称作一个扩散过程,如果它满足下面的随机微分方程:

Xt=X0+∫t0ta(s,Xs)ds+∫t0tb(s,Xs)dWs,t∈[t0,T],X_t=X_0+\int_{t_0}^{t}a(s,X_s)ds+\int_{t_0}^{t}b(s,X_s)dW_s,t\in[t_0,T],Xt​=X0​+∫t0​t​a(s,Xs​)ds+∫t0​t​b(s,Xs​)dWs​,t∈[t0​,T], 其中 as=a(s,Xs)a_s=a(s,X_s)as​=a(s,Xs​) 和 bs=b(s,Xs)b_s=b(s,X_s)bs​=b(s,Xs​) 为 [0,T]×Rm[0,T]\times R^m[0,T]×Rm 上的可测函数, $W_t $为概率空间 (Ω,F,P)(\Omega,F,P)(Ω,F,P) 上的 d−d -d−维标准维纳过程。但为了此随机模型在实际中得以应用,保证上述扩散过程得以存在,我们将对此扩散过程给与一定条件,此SDESDESDE的解才会存在且唯一!

  • SDE解的存在唯一性定理

令 T>0T>0T>0 ,且对于扩散过程和漂移过程分别有

a(.,.):[0,T]×Rm→Rm,b(.,.):[0,T]×Rm→Rm×da(.,.):[0,T]\times R^m\rightarrow R^m,b(.,.):[0,T]\times R^m\rightarrow R^{m\times d}a(.,.):[0,T]×Rm→Rm,b(.,.):[0,T]×Rm→Rm×d 为可测函数,

满足 ∣a(s,x)+b(s,x)∣≤C(1+∣x∣),x∈Rm,s∈[t0,T]\left| a(s,x)+b(s,x) \right|\leq C(1+|x|),x\in R^m,s\in[t_0,T]∣a(s,x)+b(s,x)∣≤C(1+∣x∣),x∈Rm,s∈[t0​,T],

∣a(t,x)−a(t,y)∣+∣b(t,x)−b(t,y)∣≤L∣x−y∣,x,y∈Rm,s∈[t0,T]\left| a(t,x)-a(t,y) \right|+\left| b(t,x)-b(t,y) \right|\leq L|x-y|,x,y\in R^m,s\in[t_0,T]∣a(t,x)−a(t,y)∣+∣b(t,x)−b(t,y)∣≤L∣x−y∣,x,y∈Rm,s∈[t0​,T]

其中 C,LC,LC,L 为有界常数,令 Φ\PhiΦ 为独立于由 Ws,s≥0W_s,s\geq0Ws​,s≥0 产生的 σ\sigmaσ 代数 FFF ,使得

E[∣Z2∣]<∞E\left[ |Z^2| \right]<\inftyE[∣Z2∣]<∞。

则上述随机微分方程存在唯一的连续解,其中 X0∈ΦX_0\in\PhiX0​∈Φ ,并且我们还知道

XtX_tXt​ 适应于 Φ\PhiΦ 和 Ws,s≤tW_s,s\leq tWs​,s≤t 产生的域流 FtΦ且E[∫0T∣Xt∣2dt]<∞F_t^\Phi 且 E\left[ \int_{0}^{T}|X_t|^2dt \right]<\inftyFtΦ​且E[∫0T​∣Xt​∣2dt]<∞。

  • 结合伊藤公式的一般形式的随机算子表示

对于 m 维扩散过程和 d 维的维纳过程,且

φ(t,X)∈C2,1([0,T]×Rm)\varphi(t,X)\in C^{2,1}\left( [0,T]\times R^m \right)φ(t,X)∈C2,1([0,T]×Rm) ,定义算子

L0φ,Ljφ从[0,T]×Rm→RmL^0\varphi,L^j\varphi 从 [0,T]\times R^m\rightarrow R^mL0φ,Ljφ从[0,T]×Rm→Rm :

L0φ=∂φ∂t+∑k=1m∂φ∂xkak+12∑q=1d∑l,k=1q∂2φφxkφxlbl,qbk,q,LjφL^0\varphi=\frac{\partial\varphi}{\partial t}+\sum_{k=1}^{m}{\frac{\partial\varphi}{\partial x_k}a_k+\frac{1}{2}\sum_{q=1}^{d}{\sum_{l,k=1}^{q}{\frac{\partial^2\varphi}{\varphi x_k\varphi x_l}b_{l,q}b_{k,q}}}},L^j\varphiL0φ=∂t∂φ​+∑k=1m​∂xk​∂φ​ak​+21​∑q=1d​∑l,k=1q​φxk​φxl​∂2φ​bl,q​bk,q​,Ljφ

=∑k=1m∂φφxkbk,j=\sum_{k=1}^{m}{\frac{\partial \varphi}{\varphi x_k}b_{k,j}}=∑k=1m​φxk​∂φ​bk,j​。

二:方程的数值解格式

  • 伊藤展开

使用上述随机算子后,对于含任ddd 为维纳过程的 φ(t,X)∈C2,1([0,T]×Rm)\varphi(t,X)\in C^{2,1}\left( [0,T]\times R^m \right)φ(t,X)∈C2,1([0,T]×Rm) ,并且在时间 tnt_ntn​ 处展开,由伊藤公式我们有如下积分形式为:

φ(tn+1,Xtn+1)=φ(tn,Xtn)+∫tntn+1L0φ(s,Xs)ds+\varphi(t_{n+1},X_{t_{n+1}})=\varphi(t_{n},X_{t_n})+\int_{t_n}^{t_{n+1}}L^0\varphi(s,X_s)ds+φ(tn+1​,Xtn+1​​)=φ(tn​,Xtn​​)+∫tn​tn+1​​L0φ(s,Xs​)ds+

∑j=1d∫tntn+1Ljφ(s,Xs)dWsj\sum_{j=1}^{d}{\int_{t_n}^{t_{n+1}}L^j\varphi(s,X_s)dW_s^j}∑j=1d​∫tn​tn+1​​Ljφ(s,Xs​)dWsj​,

为了简化模型,我们对上述的只含一维维纳过程的 \varphi(.,.) 继续使用伊藤公式可得:

φ(tn+1,Xtn+1)=φ(tn,Xtn)+\varphi(t_{n+1},X_{t_{n+1}})=\varphi(t_{n},X_{t_n})+φ(tn+1​,Xtn+1​​)=φ(tn​,Xtn​​)+

∫tntn+1[L0φ(s,Xs)+∫tnsL0L0φ(τ,Xτ)+∫tnsL1L0φ(τ,Xτ)dWτ]ds+\int_{t_n}^{t_{n+1}}\left[ L^0\varphi(s,X_{s})+\int_{t_n}^{s}L^0L^0\varphi(\tau,X_{\tau})+\int_{t_n}^{s}L^1L^0\varphi(\tau,X_{\tau})dW_\tau\right]ds +∫tn​tn+1​​[L0φ(s,Xs​)+∫tn​s​L0L0φ(τ,Xτ​)+∫tn​s​L1L0φ(τ,Xτ​)dWτ​]ds+

∫tntn+1[L1φ(s,Xs)+∫tnsL0L1φ(τ,Xτ)dτ+∫tnsL1L1φ(τ,Xτ)dWτ]dWs\int_{t_n}^{t_{n+1}}\left[ L^1\varphi(s,X_s)+\int_{t_n}^{s}L^0L^1\varphi(\tau,X_\tau)d\tau +\int_{t_n}^{s}L^1L^1\varphi(\tau,X_\tau)dW_\tau\right]dW_s∫tn​tn+1​​[L1φ(s,Xs​)+∫tn​s​L0L1φ(τ,Xτ​)dτ+∫tn​s​L1L1φ(τ,Xτ​)dWτ​]dWs​.

PS:只要上述 φ(.,.)\varphi(.,.)φ(.,.) 函数足够光滑,我们可以继续展开,可以得到更多的复杂高阶数值格式!

  • 收敛阶的定义

给定时间分割 0=t0<t1<...<tN−1<tN=T0=t_0<t_1<...<t_{N-1}<t_N=T0=t0​<t1​<...<tN−1​<tN​=T ,假设 Δt=tn+1−tn\Delta t =t_{n+1}-t_nΔt=tn+1​−tn​ ,

ΔWn=Wtn+1−Wtn(n=0,1,2,...,N)\Delta W_n=W_{t_{n+1}}-W_{t_n}(n=0,1,2,...,N)ΔWn​=Wtn+1​​−Wtn​​(n=0,1,2,...,N),

且存在光滑函数 G∈Cp2(β+1)G\in C_p^{2(\beta+1)}G∈Cp2(β+1)​ 和正常数 CCC 满足不等式

∣E[G(Xt)−G(XN)]∣≤C(1+E[∣X0∣b])(Δt)β\left| E[G(X_t)-G(X^N)] \right|\leq C\left( 1+E[|X_0|^b] \right)(\Delta t)^\beta∣∣​E[G(Xt​)−G(XN)]∣∣​≤C(1+E[∣X0​∣b])(Δt)β ,

其中 β,b∈N\beta,b\in Nβ,b∈N ,则 XNX^NXN 以阶数 β\betaβ 弱收敛于 XTX_TXT​. 当然有弱收敛就有强收敛,当我们不以整个轨迹误差取期望再绝对值,取而代之的是以每个点的绝对误差取期望后,就是我们的强收敛误差要求,高阶强收敛格式更加复杂,条件更加苛刻,阶数可以是0.5的倍数关系

  • 经典数值格式介绍

设初始条件 X0X_0X0​ 已知,对于 0≤n≤N−10\leq n\leq N-10≤n≤N−1 ,对于 mmm 维的伊藤过程的第 kkk 个分量,我们有如下格式:
1:欧拉格式(弱1.0阶,强0.5阶):

Xkn+1=Xkn+akΔt+bkΔWnX^{n+1}_k=X_k^n+a_k\Delta t+b_k\Delta W_nXkn+1​=Xkn​+ak​Δt+bk​ΔWn​

2:米尔斯坦格式(强弱都是1.0阶):

Xkn+1=Xkn+akΔt+bkΔWn+12L1bk((ΔWn)2−Δt)X^{n+1}_k=X_k^n+a_k\Delta t+b_k\Delta W_n+\frac{1}{2}L^1b_k\left( (\Delta W_n)^2-\Delta t \right)Xkn+1​=Xkn​+ak​Δt+bk​ΔWn​+21​L1bk​((ΔWn​)2−Δt)

3:弱二阶格式:

Xkn+1=Xkn+akΔt+bkΔWn+12L1bk((ΔWn)2−Δt)+(bk+12Δt(L0bk+L1ak)ΔWn)+12L0ak(Δt)2X^{n+1}_k=X_k^n+a_k\Delta t+b_k\Delta W_n+\frac{1}{2}L^1b_k\left( (\Delta W_n)^2-\Delta t \right)+\left( b_k+\frac{1}{2}\Delta t(L^0b_k+L^1a_k)\Delta W_n \right)+\frac{1}{2}L^0a_k(\Delta t)^2Xkn+1​=Xkn​+ak​Δt+bk​ΔWn​+21​L1bk​((ΔWn​)2−Δt)+(bk​+21​Δt(L0bk​+L1ak​)ΔWn​)+21​L0ak​(Δt)2

三:实验模拟

我们以几何布朗运动 Xt=aXtdt+bXtdWtX_t=aX_tdt+bX_tdW_tXt​=aXt​dt+bXt​dWt​ ,只要简单的对 ln(Xt)ln(X_t)ln(Xt​) 使用伊藤公式,就可得此模型真解为Xt=X0exp[(a−12b2)t+bWt]X_t=X_0exp[ (a-\frac{1}{2}b^2)t+bW_t ]Xt​=X0​exp[(a−21​b2)t+bWt​] ,所以在实验中能清楚地比较真解和数值解的误差结果,正向随机微分方程经典模型还有Ornstein−UhlenbeckOrnstein-UhlenbeckOrnstein−Uhlenbeck过程 Xt=a(μ−Xt)dt+bdWtX_t=a(\mu-X_t)dt+bdW_tXt​=a(μ−Xt​)dt+bdWt​ 等,也是存在真解的,但实验内容是跟几何布朗运动完全一致的。

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']##中文乱码问题!
plt.rcParams['axes.unicode_minus']=False#横坐标负号显示问题!def schemes(a,b,names):logtimels = []logerrorls = []CRls = []msg = '''1:exp函数2:sin函数3:原函数的3次方4:原函数'''print(msg)##定义初始化内容choose = int(input('请选择g(x)函数:'))echoes = 100time_ls = [8,16,32,64,128]error_ls = []value_matx = np.zeros((echoes,len(time_ls)))Euler = 'y + a * dt * y + b * y * dwt_temp'Milstein = Euler + ' + 0.5 * b * b * y * (dwt_temp * dwt_temp - dt)'weak_2_order = Milstein + ' + 0.5 * a * a * y * dt * dt + 0.5 * dt * (b * a * y + a * b * y) * dwt_temp'schemes_ls = [Euler,Milstein,weak_2_order]for s,n in zip(schemes_ls,names):for e in range(echoes):for i in range(len(time_ls)):x0 = 1##SDE真解初始值y = 1##数值格式初始值T = 1N = time_ls[i]dt = 1 / Nyt = []dwt = np.random.normal(0,1,N) * np.sqrt(dt)Wt = np.cumsum(dwt)###真解WT = Wt[N - 1]vtemp = x0 * np.exp((a - 0.5 * b * b) * T + b * WT)xT = 0if choose == 1:xT = np.exp(vtemp)if choose == 2:xT = np.sin(vtemp)if choose == 3:xT = np.power(vtemp,3)if choose == 4:xT = vtemp##数值格式解for j in range(N):dwt_temp = dwt[j]y = eval(s)if choose == 1:yt.append(np.exp(y))if choose == 2:yt.append(np.sin(y))if choose == 3:yt.append(np.power(y,3))if choose == 4:yt.append(y)error_temp = yt[N - 1] - xT ##真解与数值解末端值作差error_ls.append(error_temp)value_matx[e,:] = error_lserror_ls = []error_fin = np.abs(sum(value_matx) / echoes)##弱收敛最终求期望log_time = np.log(1 / np.array(time_ls))log_error_fin = np.log(error_fin)CR = np.polyfit(log_time,log_error_fin,1)##一次多项式拟合print('\033[1;36m{0:*^80}\033[0m'.format('计算结果'))print('格式%s的相对误差为:%s'%(n,np.round(error_fin,6)))print('格式%s的弱收敛阶为:%s'%(n,round(CR[0],6)))logerrorls.append(np.round(log_error_fin,6))logtimels.append(log_time)CRls.append(round(CR[0],6))return logtimels,logerrorls,CRlsmu = 1##漂移系数
sigm = 0.05##扩散系数
scheme_names = ['Euler', 'Milstein', 'weak_2_order']
R = schemes(mu,sigm,scheme_names)

图1

图2

图3

marker_ls = ['-*','-o','-^']
def make_figure():plt.figure(figsize=(8, 6))for i,j,k,l,m in zip(R[0],R[1],R[2],scheme_names,marker_ls):plt.plot(i,j,m,label=l)plt.plot(np.array([-4,-3]),np.array([-4,-3]) + 1,'--',label='slope=1')plt.plot(np.array([-4, -3]), 2 * np.array([-4, -3]) - 1.5,'--',label='slope=2')plt.xlabel('stepsize logN')plt.ylabel('log(|E(Y_T-X^N)|)')plt.legend()plt.show()
make_figure()

图4

四:总结

经典的正向随机微分方程数值格式和收敛阶的模拟大致如上,但最开始也提到过,由正向衍生出来的各种方程在如今是非常多的。与正向相对性的倒向随机微分方程也是一个大类研究方向,今后如果有机会,作者还会发布些关于倒向随机微分方程的数值模拟,感兴趣的朋友希望点赞关注加收藏啦!

正向随机微分方程的经典数值格式模拟相关推荐

  1. 参数估计_随机微分方程的参数估计(一)

    随机微分方程,俗称SDE,相信点进来的同学们肯定对这个概念不感到陌生.SDE呢,是对现实生活中一些随机波动的事物的建模,比如可以用几何布朗运动(GBM)来模拟股价变化,用CIR模型来模拟利率波动. 然 ...

  2. UA MATH565C 随机微分方程V Stationary Measure

    UA MATH565C 随机微分方程V Stationary Measure Markov Property Stationary Measure PDE方法 这一讲试图回答的问题是基于Homogen ...

  3. 《暗黑2》经典数值公式分析总结(二)

    <暗黑2>无疑是圣经.教科书的级别.深入研究更像是一门无底洞的学术,本着敬畏的心情,尽量不出错的去做好这些个人的心得总结,以供参考. <暗黑2>经典数值公式分析总结(一)htt ...

  4. 风洞实验可以用计算机模拟吗,CFD数值风洞模拟

    等级: 文件 642KB 格式 pdf 白云机场航站楼风洞试验及风压数值模拟研究提 要:广州白云机场二号航站楼屋盖属于大跨空间结构,且体型复杂,风荷载对其影响比较大,对其进行风洞试验很有必要性.同时, ...

  5. 《暗黑2》经典数值公式分析总结(一)

    公式会完全还原原著的设计模式,比如伤害实际计算会有各种方面可能存在的加成,这些加成会都保留,所有看起来有的公式可能会稍长.在写出原公式之后,会花点文字解析并最后做个简单的总结.基本上优先从能用可参考的 ...

  6. 《暗黑2》经典数值公式分析总结(三)

    <暗黑2>无疑是圣经.教科书的级别.深入研究更像是一门无底洞的学术,本着敬畏的心情,尽量不出错的去做好这些个人的心得总结,以供参考. 系列回顾: <暗黑2>经典数值公式分析总结 ...

  7. 【理论推导】随机微分方程(SDE)视角下的Diffusion Model与Score-based Model

    SDE与DDPM 以 DDPM 为例,DDPM的通项公式为 x t ∼ N ( α ‾ t x 0 , ( 1 − α ‾ t ) I ) x_t \sim \mathcal N(\sqrt{\ove ...

  8. UA MATH565C 随机微分方程VI 扩散过程简介

    UA MATH565C 随机微分方程VI 扩散过程简介 Kolmogorov定理 称具有路径连续的Markov Family (ξt,Px)(\xi_t,P_x)(ξt​,Px​)是一个diffusi ...

  9. UA MATH565C 随机微分方程V 无穷小生成算子

    UA MATH565C 随机微分方程V 无穷小生成算子 Infinitesimal generator as derivative 这一讲给出算子半群那一讲提出的infinitesimal gener ...

  10. UA MATH565C 随机微分方程V Markov Family的特征函数

    UA MATH565C 随机微分方程V Markov Family的特征函数 特征函数 上一讲用u(t,x)u(t,x)u(t,x)和v(t,x)v(t,x)v(t,x)描述了Markov Famil ...

最新文章

  1. 《Web 标准实战》——Web开发人员必读的一本书
  2. Golang的模板与渲染
  3. 2021河北省高考成绩查询步骤,河北省2021年普通高校招生考试和录取工作实施方案解读...
  4. String str 与 String str=new String() 区别
  5. 2018-2019-2 网络对抗技术 20165314 Exp7 网络欺诈防范
  6. 中职计算机优质课课件ppt,中职优质课 交集课件.ppt
  7. java和eova的关系_eova ,一套jfinal开发框架,方便学习与 Jsp/Servlet 262万源代码下载- www.pudn.com...
  8. Java中常见异常及异常处理方式
  9. 计算机车牌识别的步骤,车牌识别流程图
  10. 我爱Ruby的三十七个理由
  11. Chrome 地址栏 Google 搜索错误处理 隐私设置错误 您的连接不是私密连接
  12. 餐馆点菜系统python程序_Python写一个自动点餐程序
  13. 新版的ARMv9到底牛在哪?
  14. RelativeLayout 设置控件在最上层
  15. 全球最专业心理测试软件,据说是全球最准的心理测试
  16. DDoS攻击流量检测方法
  17. 程序猿生存定律-六个程序猿的故事(2)
  18. 在TCL网线接口的彩电上看pdf文档的电子书 845电脑的扫描电子电路图扫描仪图
  19. linux 开机连接wifi密码忘了怎么办,无线密码忘了怎么办?
  20. 2018年东北农业大学春季校赛 A-wyh的曲线

热门文章

  1. 企业如何避免创新者的窘境
  2. android实现应用商店开发,基于Android平台的应用商店客户端的设计与实现
  3. Ku高通量卫星“星地一体化”应急通信系统解决方案
  4. Mac版本QQ消息防撤回
  5. 只用一招!Python实现微信防撤回!
  6. 广东省计算机一级常考选择题,广东省计算机一级选择题
  7. 不同行业的软件安全标准介绍和对比
  8. 微信小程序插件wxParse的使用
  9. PHP将汉字转化为拼音
  10. 计算机网络笔记整理(第七版)谢希仁