Private Sub Command1_Click()
Dim ks As Single
Dim a As Single
Dim beta As Single
Dim r1 As Single
Dim n As Single
Dim cx(0 To 10, 1 To 100) As Single
Dim tk(0 To 10, 1 To 100) As Single
Dim cs(0 To 10, 1 To 100) As Single
Dim v(0 To 10, 1 To 100) As Single
Dim vs(0 To 10, 1 To 100) As Single
Dim k(1 To 100) As Single
Dim b(0 To 10) As Single
Dim h As Single
Dim k1 As Single
Dim n1 As Single
Dim n2 As Single
Dim n3 As Single
Dim c1 As Single
Dim e As Single
Dim g As Single
Dim j As Single
Dim t1 As Single
Dim t2 As Single
j = 0.1
g = 0.05
beta = 0.95
a = 0.33
ks = ((1 / beta - 1) / a) ^ (1 / (a - 1))
h = 2 * ks / 100
For n = 1 To 100
k(n) = n * h
For m = 0 To 10
cx(m, n) = k(n) ^ a - g
tk(m, n) = 0.1
Next
Next
For m = 0 To 10
b(m) = j * m
Next
t1 = 0
Do Until t1 > 100
For m = 0 To 10
For n = 10 To 90
k1 = k(n) + k(n) ^ a - cx(m, n) - g
r1 = (1 - tk(m, n)) * a * k(n) ^ (a - 1)
tax = tk(m, n) * a * k(n) ^ a
m1 = ((1 + r1) * b(m) + tax - g) / j
m2 = Int(m1)
If m2 > 9 Then m2 = 9
If m2 < 0 Then m2 = 0
m3 = m2 + 1
n1 = k1 / h
n2 = Int(n1)
n3 = n2 + 1
dm = (m1 - m2) * (cx(m3, n2) - cx(m2, n2))
dn = (n1 - n2) * (cx(m2, n3) - cx(m2, n2))
c1 = cx(m2, n2) + dm + dn
dm = (m1 - m2) * (tk(m3, n2) - tk(m2, n2))
dn = (n1 - n2) * (tk(m2, n3) - tk(m2, n2))
tk1 = tk(m, n2) + dm + dn
r2 = (1 - tk1) * a * k1 ^ (a - 1)
cs(m, n) = c1 / (beta * (1 + r2))
Next
Next
e = 0
For m = 0 To 10
For n = 10 To 90
e = e + (cx(m, n) - cs(m, n)) ^ 2
Next
Next
For m = 0 To 10
For n = 10 To 90
cx(m, n) = cs(m, n)
Next
Next
If e < 10 ^ (-5) Then t1 = 1000
t1 = t1 + 1
Debug.Print t1, e
Loop
t2 = 0
Do Until t2 > 1000
For m = 0 To 10
For n = 10 To 90
k1 = k(n) + k(n) ^ a - cx(m, n) - g
r1 = (1 - tk(m, n)) * a * k(n) ^ (a - 1)
tax = tk(m, n) * a * k(n) ^ a
m1 = ((1 + r1) * b(m) + tax - g) / j
m2 = Int(m1)
If m2 > 9 Then m2 = 9
If m2 < 0 Then m2 = 0
m3 = m2 + 1
n1 = k1 / h
n2 = Int(n1)
n3 = n2 + 1
dm = (m1 - m2) * (v(m3, n2) - v(m2, n2))
dn = (n1 - n2) * (v(m2, n3) - v(m2, n2))
v1 = v(m2, n2) + dm + dn
vs(m, n) = Log(cx(m, n)) + beta * v1
Next
Next
e = 0
For m = 0 To 10
For n = 10 To 90
e = e + (v(m, n) - vs(m, n)) ^ 2
Next
Next
For m = 0 To 10
For n = 10 To 90
v(m, n) = vs(m, n)
Next
Next
If e < 10 ^ (-5) Then t2 = 10000
t2 = t2 + 1
Debug.Print t2, e
Loop
End Sub
最終更新:2009年09月05日 04:29