Private Sub Command1_Click()
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(1 To 100) As Single
Dim lx(1 To 100) As Single
Dim lp(1 To 100) As Single
Dim cp(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
beta = 0.95
a = 0.33
For n = 1 To 100
Next
ks = 0.5 * ((1 / beta - 1) / a) ^ (1 / (a - 1))
h = 2 * ks / 100
For n = 1 To 100
k(n) = n * h
lx(n) = 0.5
Next
For n = 1 To 100
cx(n) = k(n) ^ a * lx(n) ^ (1 - a)
Next
t = 0
Do Until t > 100
For n = 10 To 90
k1 = k(n) + k(n) ^ a * lx(n) ^ (1 - a) - cx(n)
n1 = k1 / h
n2 = Int(n1)
n3 = n2 + 1
c1 = cx(n2) + (n1 - n2) * (cx(n3) - cx(n2))
l1 = lx(n2) + (n1 - n2) * (lx(n3) - lx(n2))
r1 = a * k1 ^ (a - 1) * l1 ^ (1 - a)
cp(n) = c1 / (beta * (1 + r1))
w1 = (1 - a) * k(n) ^ a * lx(n) ^ (-a)
lp(n) = 1 - cx(n) / w1
Next
e = 0
For n = 10 To 90
e = e + (cx(n) - cp(n)) ^ 2 + (lx(n) - lp(n)) ^ 2
Next
For n = 10 To 90
cx(n) = cp(n)
lx(n) = lp(n)
Next
If e < 10 ^ (-5) Then t = 1000
Debug.Print t, e
t = t + 1
Loop
Dim px(1 To 100) As Single
Dim ps(1 To 100) As Single
Dim ms As Single
ms = 20
For n = 1 To 100
px(n) = 1
Next
t2 = 0
Do Until t2 > 100
For n = 10 To 90
p1 = px(n) + 0.01
p2 = px(n) - 0.01
k1 = k(n) + k(n) ^ a * lx(n) ^ (1 - a) - cx(n)
n1 = k(n) / h
n2 = Int(n1)
n3 = n2 + 1
l1 = lx(n2) + (n1 - n2) * (lx(n3) - lx(n2))
r1 = a * k1 ^ (a - 1) * l1 ^ (1 - a)
pp = (px(n2) + (n1 - n2) * (px(n3) - px(n2))) / p1
i1 = pp * (1 + r1) - 1
z1 = (ms * i1) / (cx(n) * (1 + i1)) - p1
t = 0
Do Until t > 100
pp = (px(n2) + (n1 - n2) * (px(n3) - px(n2))) / p2
i1 = pp * (1 + r1) - 1
z2 = (ms * i1) / (cx(n) * (1 + i1)) - p2
p3 = p2 - z2 * (p2 - p1) / (z2 - z1)
If (z2) ^ 2 < 10 ^ (-5) Then t = 1000
p1 = p2
p2 = p3
z1 = z2
t = t + 1
Loop
ps(n) = p2
Next
e = 0
For n = 10 To 90
e = e + (px(n) - ps(n)) ^ 2
Next
For n = 10 To 90
px(n) = ps(n)
Next
Debug.Print t2, e
If e < 10 ^ (-5) Then t2 = 1000
t2 = t2 + 1
Loop
For n = 10 To 90
Debug.Print n, px(n)
Next
End Sub
最終更新:2009年11月08日 04:04