Private Sub Command1_Click()
Dim m As Single
Dim n As Single
Dim h As Single
Dim a As Single
Dim beta As Single
Dim k(1 To 100) As Single
Dim cx(0 To 10, 1 To 100) As Single
Dim lx(0 To 10, 1 To 100) As Single
Dim lp(0 To 10, 1 To 100) As Single
Dim cp(0 To 10, 1 To 100) As Single
Dim ks As Single
Dim r1 As Single
Dim c1 As Single
Dim l1 As Single
Dim n1 As Single
Dim n2 As Single
Dim n3 As Single
Dim e As Single
Dim t As Single
Dim w1 As Single
Dim ls As Single
Dim tk As Single
Dim tl As Single
Dim g As Single
g = 0.05
tk = 0.1
tl = 0.1
beta = 0.95
a = 0.33
For n = 1 To 100
Next
ls = (1 - a) / (2 - a)
ks = ls * ((1 / beta - 1) / a) ^ (1 / (a - 1))
h = 2 * ks / 100
For n = 1 To 100
k(n) = n * h
Next
For m = 0 To 10
For n = 1 To 100
lx(m, n) = ls
cx(m, n) = k(n) ^ a * lx(m, n) ^ (1 - a) - g
Next
Next
t = 0
Do Until t > 100
For m = 0 To 10
For n = 10 To 90
k1 = k(n) + k(n) ^ a * lx(m, n) ^ (1 - a) - cx(m, n) - g
n1 = k1 / h
n2 = Int(n1)
n3 = n2 + 1
c1 = cx(m, n2) + (n1 - n2) * (cx(m, n3) - cx(m, n2))
l1 = lx(m, n2) + (n1 - n2) * (lx(m, n3) - lx(m, n2))
r1 = (1 - tk) * a * k1 ^ (a - 1) * l1 ^ (1 - a)
cp(m, n) = c1 / (beta * (1 + r1))
w1 = (1 - tl) * (1 - a) * k(n) ^ a * lx(m, n) ^ (-a)
lp(m, n) = 1 - cx(m, n) / w1
Next
Next
e = 0
For m = 0 To 10
For n = 10 To 90
e = e + (cx(m, n) - cp(m, n)) ^ 2 + (lx(m, n) - lp(m, n)) ^ 2
Next
Next
For m = 0 To 10
For n = 10 To 90
cx(m, n) = cp(m, n)
lx(m, n) = lp(m, n)
Next
Next
If e < 10 ^ (-5) Then t = 1000
Debug.Print t, e
t = t + 1
Loop
End Sub
最終更新:2009年09月05日 06:33