扩展 FFT 以解决具有布朗路径的 PDE

问题描述

背景

我正在尝试用 Python 求解随机偏微分方程 (SPDE)。为此,我用 BM = brownian(x0,T,dt) 模拟了一条布朗路径,其中 x0 是开始的初始值,T 是布朗运动运行的时间,{{ 1}} 是步骤。这给了我一个包含 T/dt 条目的数组,它显示了布朗运动如何针对一个特定事件演变。

现在,通过这种布朗运动,我可以将 SPDE 转换为确定性(“正常”)PDE。我在此视频中找到了用于解决不同 PDE 的快速傅立叶变换 (FFT):https://www.youtube.com/watch?v=hDeARtZdq-U,但我不确定如何包含布朗路径。

代码

代码的重要部分/我将包含布朗运动的部分是

dt

这个想法是通过 FFT 转换 PDE 以获得许多 ODE。这些 ODE 在 dt = 0.001 t = np.arange(0,1,dt) def rhsHeat(uhat_ri,t,kappa,a,c): uhat = uhat_ri[:N] +(1j)*uhat_ri[N:] d_uhat += -a**2 * (np.power(kappa,2))*uhat - c*(1j)*kappa*uhat d_uhat_ri = np.concatenate((d_uhat.real,d_uhat.imag)).astype('float64') return d_uhat_ri uhat_ri = odeint(rhsHeat,u0hat_ri,args=(kappa,c)) 中初始化。我想添加组件 rhsHeat获取时间进度,BM[i]-BM[i-1] 是时间 BM[i] 处布朗路径的值。这意味着函数的进度(在时间上)不是由时间的变化加权,而是由从 t[i-1] 到 t 的每一步的变化 B[i]-B[i-1] [一世]。我想

t[i]

问题 上面包含布朗运动的示例不起作用。我请教你这样做的任何建议。我想这就像包含另一个取决于 def rhsHeat(uhat_ri,b,c): i = int(t/dt) uhat = uhat_ri[:N] +(1j)*uhat_ri[N:] d_uhat += -a**2 * (np.power(kappa,2))*uhat - c*(1j)*kappa*uhat + b*(1j)*kappa*uhat*(B[i]-B[i-1]) d_uhat_ri = np.concatenate((d_uhat.real,d_uhat.imag)).astype('float64') return d_uhat_ri 而不是 t函数

另外,我真的不明白为什么函数 x 中包含时间变量 t,因为它没有在那里的任何地方使用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)