主题:[原创]最小二乘法或极大似然法的VB源程序
saisai
[专家分:0] 发布于 2007-05-29 22:17:00
哪位高手有最小二乘法或极大似然法的VB源程序或者会编也行,我现在毕设要用那个标定参数.请大家帮个忙,不胜感激!
我的QQ 549592817
[em10]
回复列表 (共5个回复)
沙发
靠VB吃饭的人 [专家分:5840] 发布于 2007-05-30 09:10:00
我以前关于这个的帖子找不到了,再帖一段给你,是最小二乘法的
Type Point
x As Double
y As Double
End Type
Public Function Fit_abP(a, b, Points() As Point) As Point() '最小二乘法
Dim p() As Point
Dim lngCnt As Long
Dim sumX As Double, sumX2 As Double
Dim sumY As Double, sumXY As Double
For lngCnt = LBound(Points) To UBound(Points)
sumX = sumX + Points(lngCnt).x
sumX2 = sumX2 + Points(lngCnt).x ^ 2
sumY = sumY + Points(lngCnt).y
sumXY = sumXY + Points(lngCnt).x * Points(lngCnt).y
Next
'求拟合曲线方程y=ax+b的一次系数a和常数项b
a = ((UBound(Points) - LBound(Points) + 1) * sumXY - sumX * sumY) / ((UBound(Points) - LBound(Points) + 1) * sumX2 - sumX ^ 2)
b = (sumY - a * sumX) / (UBound(Points) - LBound(Points) + 1)
'生成拟合数据(起点与终点的x值与原始数据的相同)
ReDim Preserve p(0 To (UBound(Points) - LBound(Points))) As Point
For lngCnt = LBound(p) To UBound(p)
p(lngCnt).x = Points(lngCnt).x
p(lngCnt).y = a * p(lngCnt).x + b
Next
Fit_abP = p
End Function
板凳
jyniu [专家分:30] 发布于 2007-08-31 15:42:00
楼上的编的挺好可是我却看不懂,失败!
3 楼
edsionyong [专家分:0] 发布于 2007-11-14 13:20:00
同样问题有没有C/C++ 的??
5 楼
靠VB吃饭的人 [专家分:5840] 发布于 2009-08-18 14:34:00
找本数学书来看看就明白了,我记得是用微积分推导出来的公式,我这段程序直接用的现成公式。
我来回复