回 帖 发 新 帖 刷新版面

主题:[原创]最小二乘法或极大似然法的VB源程序

哪位高手有最小二乘法或极大似然法的VB源程序或者会编也行,我现在毕设要用那个标定参数.请大家帮个忙,不胜感激! 
我的QQ 549592817
[em10]

回复列表 (共5个回复)

沙发

我以前关于这个的帖子找不到了,再帖一段给你,是最小二乘法的
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

板凳

楼上的编的挺好可是我却看不懂,失败!

3 楼

同样问题有没有C/C++ 的??

4 楼

有点不大明白~

5 楼

找本数学书来看看就明白了,我记得是用微积分推导出来的公式,我这段程序直接用的现成公式。

我来回复

您尚未登录,请登录后再回复。点此登录或注册