|
|
求一元非线形的问题
是求指数函数 y=ae(BGx) 非线形的化为线形的来做
y''=lny AG=lna
y''=AG+BGx
高手看看有什么问题啊?为什么
程序能通过 但是即时窗口得到的数值和实际相差太大,为什么啊?
Public Sub yifeixian()
''一元非线性预测
Static X0(1 To m), Y0(1 To m), Y1(1 To m) As Single
Dim AG, BG, SX, SY, XY, XX, XP, Y1P, Lxy, Lyy, Lxx As Single
Dim a, r, F As Single
Dim X0G(m + 1 To m + 5), Y0G(m + 1 To m + 5), Y1G(m + 1 To m + 5) As Single
''引入X0,Y0,X0G等
Adodc1.Recordset.MoveFirst
While Not Adodc1.Recordset.EOF
For i = 1 To m
X0(i) = Adodc1.Recordset.Fields(1).value
Y0(i) = Adodc1.Recordset.Fields(6).value
Adodc1.Recordset.MoveNext
Next
Wend
Adodc2.Recordset.MoveFirst
While Not Adodc2.Recordset.EOF
For i = 1 To 5
X0G(m + i) = Adodc2.Recordset.Fields(1).value
Adodc2.Recordset.MoveNext
Next
Wend
For i = 1 To m
Y1(i) = Log(Y0(i)) / Log(2.718282)
Next
SX = 0: SY = 0
For i = 1 To m
SX = SX + X0(i)
SY = SY + Y1(i)
Next
XP = SX / m
Y1P = SY / m
XY = 0: XX = 0
For i = 1 To m
XY = XY + X0(i) * Y1(i)
XX = XX + X0(i) * X0(i)
Next
Lxy = 0: Lyy = 0: Lxx = 0
For i = 1 To m
Lxx = Lxx + (X0(i) + XP) * (X0(i) + XP)
Lyy = Lyy + (Y1(i) + Y1P) * (Y1(i) + Y1P)
Lxy = Lxy + (X0(i) + XP) * (Y1(i) + Y1P)
Next
BG = Lxy / Lxx
AG = Y1P - XP * BG
a = Exp(AG)
For i = m To m + 4
Y1G(i + 1) = AG + BG * X0G(i + 1)
Y0G(i + 1) = a * Exp(BG * X0G(i + 1))
Next
For i = m + 1 To m + 5
Debug.Print Y0G(i)
Next
''检验
End Sub
[emb14][emb10] |
|