アットウィキロゴ

vb dsge03

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim n As Single
        Dim h As Single
        Dim a As Single
        Dim beta As Single
        Dim k(100) As Single
        Dim cx(11, 101) As Single
        Dim cp(11, 101) As Single
        Dim th(11) As Single
        Dim ks As Single
        Dim r1 As Single
        Dim c1 As Single
        Dim n1 As Single
        Dim n2 As Single
        Dim n3 As Single
        Dim eP As Single
        Dim t As Single
        Dim uc As Single
        Dim M As Single
        Dim K1 As Single
        Dim S As Single
        For m = 1 To 10
            th(m) = 0.95 + 0.01 * m
        Next
        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
        Next
        For n = 1 To 100
            For m = 1 To 10
                cx(m, n) = th(m) * k(n) ^ a
            Next
        Next
        t = 0
        Do Until t > 100
            For n = 10 To 90
                For m = 1 To 10
                    uc = 0
                    For s = 1 To 10
                        k1 = k(n) + th(m) * k(n) ^ a - cx(m, n)
                        r1 = th(s) * a * k1 ^ (a - 1)
                        n1 = k1 / h
                        n2 = Int(n1)
                        n3 = n2 + 1
                        c1 = cx(s, n2) + (n1 - n2) * (cx(s, n3) - cx(s, n2))
                        uc = uc + (beta * (1 + r1)) / c1
                    Next
                    uc = uc / 10
                    cp(m, n) = 1 / uc
                Next
            Next
            eP = 0
            For n = 10 To 90
                For m = 1 To 10
                    eP = eP + (cx(M, n) - cp(M, n)) ^ 2
                Next
            Next
            For n = 10 To 90
                For m = 1 To 10
                    cx(m, n) = cp(m, n)
                Next
            Next
            If eP < 10 ^ (-5) Then t = 1000
            t = t + 1
        Loop
        Dim kt(0 To 100) As Single
        Dim ct(0 To 100) As Single
        kt(0) = k(40)
        For t = 0 To 99
            Randomize()
            M = Int(10 * Rnd()) + 1
            n1 = kt(t) / h
            n2 = Int(n1)
            n3 = n2 + 1
            ct(t) = cx(M, n2) + (n1 - n2) * (cx(M, n3) - cx(M, n2))
            kt(t + 1) = kt(t) + th(M) * kt(t) ^ a - ct(t)
        Next
        Dim minc As Single
        Dim maxc As Single
        minc = ct(0)
        maxc = ct(0)
        For t = 1 To 99
            If ct(t) < minc Then minc = ct(t)
            If ct(t) > maxc Then maxc = ct(t)
        Next
        Dim g As Graphics = PictureBox1.CreateGraphics()
        Dim x1 As Single
        Dim x2 As Single
        Dim y1 As Single
        Dim y2 As Single
        For t = 0 To 98
            x1 = 3 * t
            x2 = 3 * (t + 1)
            y1 = 100 - 100 * (ct(t) - minc) / (maxc - minc)
            y2 = 100 - 100 * (ct(t + 1) - minc) / (maxc - minc)
            g.DrawLine(Pens.Red, x1, y1, x2, y2)
        Next
        g.DrawLine(Pens.Black, 0, 100, 300, 100)
        g.DrawLine(Pens.Black, 0, 0, 0, 200)
    End Sub
End Class
最終更新:2009年12月06日 10:40