我用离散方法CIR模型,
CIR:Xt =x0+S(a−kXs)ds+sigma*S sqrt(Xs)dWs,
(S是积分号)
用Euler是
Xti+1 = Xti + (T/n)* ( a − k *Xti ) + sigma*sprt(Xti)* ( Wti+1− Wti )
用R写出来是
X<-numeric(n+1)
X[1]<-xzero
for (i in 1:n) X[i+1]<-(X+(T/n)*(teta*k-k*X)+sigma*sqrt(X*T/n)*rnorm(1))
现在我想检验用Euler生成的值(离散情况)和实际的连续情况下的值在时间t0到tn的error,也就是算出n个时间点项,然后找出均值和最大值,和其它模拟方法进行比较。我本打算在刚才的程序后面加上一行,写出连续时间(第一个公式)CIR的计算公式,然后用Euler生成的结果减去CIR公式直接计算出来的值,也就是:
error<-X[i+1]-CIR的那个方程
然后取最大值和均值
于是我试着用R求这个方程的解
Xt =x0+S(a−kXs)ds+sigma*S sqrt(Xs)dWs,
(S是积分号)
右边第二项:integrate(function(X1),a-k*X1,0,t)
右边第三项是对dWs做积分,我卡在这里了。
我的问题是有没有办法用R算出随机微分的准确值,或者尽量精准的,有没有其它软件可以算出来,
如果没有,我该怎么计算用euler的方法造成的误差呢?