【发布时间】:2016-01-12 13:45:32
【问题描述】:
由于时间离散化,我有一个要在三个不同的局中计算的函数,方法是按时间向后计算。时间步长用 h 表示。 h 可以是 h=1/12、h=1/100 和 h=1000 。函数的三个值应该是相似的,因为我们在相同的范围内计算它们只是用不同的时间离散化。如果我们假设 h=1/12,那么我将计算 65:60 范围内所有序列的函数。
h<-1/12
a <- seq(65, 60, (-h))
[1] 65.00000 64.91667 64.83333 64.75000 64.66667 64.58333 64.50000 64.41667 64.33333 64.25000 64.16667
[12] 64.08333 64.00000 63.91667 63.83333 63.75000 63.66667 63.58333 63.50000 63.41667 63.33333 63.25000
[23] 63.16667 63.08333 63.00000 62.91667 62.83333 62.75000 62.66667 62.58333 62.50000 62.41667 62.33333
[34] 62.25000 62.16667 62.08333 62.00000 61.91667 61.83333 61.75000 61.66667 61.58333 61.50000 61.41667
[45] 61.33333 61.25000 61.16667 61.08333 61.00000 60.91667 60.83333 60.75000 60.66667 60.58333 60.50000
[56] 60.41667 60.33333 60.25000 60.16667 60.08333 60.00000
给出这些值:
mu10<-function(t){return(alfa+beta*exp(gamma*t))}
#mu20=1.03*mu10 #(i write this one in the for-loop)
mu12<-0.5
mu21<-3
r<-log(1+0.01)
b1<-(-1500)
b2<-25000*0.15*12
c10<-45000*10
c20<-45000*10
gamma<-0.044
alpha<-(-0.0073)
beta<-0.0009
我想做的:创建一个计算这个的for循环:
v(65)=h*(b1+mu10*c10+mu12)
w(65)=h*(b2+mu20*c20+mu21)
v(64.91667)=v(65)+h*(-r * v(65)+b1+mu10 * (c10-v(65)) +mu12*(w(65)-v(65)))
w(64.91667)=w(65)+h*(-r * w(65)+b2+mu20 * (c20-w(65)) +mu21*(v(65)-w(65)))
v(64.83333)=v(64.91667)+h*(-r* v(64.91667)+b1+mu10*(c10-v(64.91667))+mu12*(w(64.91667) )-v(64.91667)))
w(64.83333)=w(64.91667)+h*(-r* w(64.91667)+b1+mu10*(c10-w(64.91667))+mu12*(v(64.91667) )-w(64.91667)))
。 . . . .
v(60)=....
w(60)=....
如您所见,方程相互依赖。上一步的方程取决于我们计算的那个。
我很想知道 v(60) 和 w(60) 是我们使用时间离散化的时候。
我测试过的:
h<-1/12
a <- seq(65, 60, (-h))
v <- a*0
w <- a*0
mu10<-function(t){return(alfa+beta*exp(gamma*t))}
#mu20=1.03*mu10 #(i write this one in the for-loop)
mu12<-0.5
mu21<-3
r<-log(1+0.01)
b1<-(-1500)
b2<-25000*0.15*12
c10<-45000*10
c20<-45000*10
gamma<-0.044
alpha<-(-0.0073)
beta<-0.0009
for (t in 2:length(a)){
v[1] <- h*(b1+mu10(a[t])*c10)
w[1] <- h*(b2+mu10(a[t])*1.03*c20)
v[t] <- v[t-1]+h*(-r*v[t-1]+b1+mu10(a[t])*(c10-v[t-1])+mu12*(w[t-1]-v[t-1]))
w[t] <- w[t-1]+h*(-r*w[t-1]+b2+mu10(a[t])*1.03*(c20-w[t-1])+mu21*(v[t-1]-w[t-1]))
}
v[60]
w[60]
问题是:当我将 h 更改为 h=1/100 och h=1000(不同的时间离散化长度)时,我得到的 v[60] 和 w[60] 的值完全不同改变 h。 我认为它们应该是相似的。因为我们停下来想知道当 h 为 1/12、1/100 或 1/1000 时 t = 60 时的函数值 代码中有问题,因为它是“相同”的函数,而 h 只是我们如何分割我们计算的间隔的实际时间离散化。代码提示?
当 h=1/12
> v[60]
[1] 37606.36
> w[60]
[1] 50852.52
当 h=1/100
> v[60]
[1] 3612.329
> w[60]
[1] 15315.34
当 h=1000
> v[60]
[1] 175.1585
> w[60]
[1] 2700.449
【问题讨论】: