带跳的随机微分方程的代码
时间: 2023-11-12 09:14:39 浏览: 104
伊藤型随机微分方程的数值求解
以下是一个简单的带跳的随机微分方程代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 参数设置
a = 1.0
b = 0.5
sigma = 0.1
T = 1.0
N = 10000
dt = T/N
# 初始条件
x0 = 1.0
y0 = 1.0
# 生成时间网格和初始值
t = np.zeros(N+1)
x = np.zeros(N+1)
y = np.zeros(N+1)
x[0] = x0
y[0] = y0
# 模拟带跳的随机微分方程
for i in range(N):
t[i+1] = t[i] + dt
r = np.random.normal(0, 1)*np.sqrt(dt)
x[i+1] = x[i] + a*x[i]*dt + sigma*x[i]*r
y[i+1] = y[i] + b*x[i]*y[i]*dt
# 绘图
plt.plot(t, x, label='x')
plt.plot(t, y, label='y')
plt.legend()
plt.xlabel('t')
plt.ylabel('value')
plt.title('带跳的随机微分方程模拟')
plt.show()
```
该代码使用欧拉方法对以下随机微分方程进行模拟:
$$dX_t = aX_t dt + \sigma X_t dW_t$$
$$dY_t = bX_t Y_t dt$$
其中 $W_t$ 是标准布朗运动,$dW_t$ 是其增量。在每个时间步骤中,我们使用正态分布的随机数生成器模拟随机项,并使用欧拉方法更新 $X_t$ 和 $Y_t$ 的值。最后,我们使用 matplotlib 库将 $X_t$ 和 $Y_t$ 的值绘制成一个图表。
阅读全文