找回密码
 立即注册
搜索
热搜: rtk 全站仪 航测
查看: 683|回复: 5

[求助] 请教帮偶看看这个算法 哪里出问题了??

[复制链接]

主题

0

回帖

12

积分

新手上路

积分
12
发表于 2004-5-27 06:34:57 | 显示全部楼层 |阅读模式
求一元非线形的问题
是求指数函数  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]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|测量空间论坛 ( 闽ICP备19019609号-1 )

GMT+8, 2026-7-5 00:08 , Processed in 0.064473 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表