量化分析师的Python日记【Q Quant兵器谱之偏微分方程2】

本文是量化分析师的偏微分方程系列的第二篇,主要介绍隐式差分格式,通过三对角矩阵求解方法解决稳定性问题。内容包括隐式格式的数学表述、线性方程组的求解以及使用加速算法的实现。文章还强调了使用成熟库如scipy进行优化的益处,并预告将应用这些知识到Black-Scholes-Merton偏微分方程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是量化分析师的偏微分方程系列的第二篇,在这一篇中我们将解决上一篇显式格式留下的稳定性问题。本篇将引入隐式差分算法,读者可以学到:

  1. 隐式差分格式描述
  2. 三对角矩阵求解
  3. 如何使用scipy加速算法实现

在完成两天的基础学习之后,在下一天中,我们将把已经学到的知识运用到金融定价领域最重要的方程之一:Black - Shcoles - Merton 偏微分方差


注意: 下文中需要的自建库 utilities,可以从链接 https://uqer.io/community/share/568dfcbe228e5b18e3ba2980 中克隆得到。如何保存library,请见:https://uqer.io/help/faq/#什么是Library


from CAL.PyCAL import *
from matplotlib import pylab
import seaborn as sns
import numpy as np
np.set_printoptions(precision = 4)
font.set_size(20)

def initialCondition(x):
    return 4.0*(1.0 - x) * x

1. 隐式差分格式


像上一天一样,我们从差分格式的数学表述开始。隐式格式显式格式的区别,在于我们时间方向选择的基准点。显式格式使用 k ,而隐式格式选择 k+1 :

\begin{align}\frac{\partial u(x_j, \tau_{k+1})}{\partial\tau} &= \frac{u_{j,k+1} - u_{j,k}}{\Delta \tau} + O(\Delta \tau) \\\\\frac{\partial^2 u(x_j, \tau_{k+1})}{\partial x^2} &= \frac{u_{j-1,k+1} - 2u_{j,k+1} + u_{j+1,k+1}}{\Delta x^2} + O(\Delta x^2) \\\\\end{align}

剩下的推到过程我完全一样,我们看到无论隐式格式还是显式格式,它们的截断误差是一样的:

\begin{align}u_{\tau}(x_j,\tau_{k+1}) - \kappa u_{xx}(x_j,\tau_{k+1}) &= 0 \\\\\frac{u_{j,k+1} - u_{j,k}}{\Delta \tau} - \kappa \frac{u_{j-1,k+1} - 2u_{j,k+1} + u_{j+1,k+1}}{\Delta x^2} &= O(\Delta \tau) + O(\Delta x^2)\end{align}

用离散值 Uj,k 替换 uj,k ,我们得到差分方程:

\begin{align}&\frac{U_{j,k+1} - U_{j,k}}{\Delta \tau} - \kappa \frac{U_{j-1,k+1} - 2U_{j,k+1} + U_{j+1,k+1}}{\Delta x^2} &= 0, \\\\\Rightarrow& \quad U_{j,k+1} - U_{j,k} - \frac{\kappa\Delta \tau}{\Delta x^2}(U_{j-1,k+1} - 2U_{j,k+1} + U_{j+1,+1k}) &= 0, \\\\\Rightarrow& \quad U_{j,k+1} - U_{j,k} - \rho(U_{j-1,k+1} - 2U_{j,k+1} + U_{j+1,k+1}) &= 0.\end{align}

最后,到这里我们得到一个迭代方程组:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值