fit.txt

来自「VB常用数值算法集 内含有解线性代数方程组」· 文本 代码 · 共 54 行

TXT
54
字号
Sub FIT(X(), Y(), NDATA, SIG(), MWT, A, B, SIGA, SIGB, CHI2, Q)
    SX = 0#
    SY = 0#
    ST2 = 0#
    B = 0#
    If MWT <> 0 Then
        SS = 0#
        For I = 1 To NDATA
            WT = 1# / (SIG(I) ^ 2)
            SS = SS + WT
            SX = SX + X(I) * WT
            SY = SY + Y(I) * WT
        Next I
    Else
        For I = 1 To NDATA
            SX = SX + X(I)
            SY = SY + Y(I)
        Next I
        SS = NDATA
    End If
    SXOSS = SX / SS
    If MWT <> 0 Then
        For I = 1 To NDATA
            T = (X(I) - SXOSS) / SIG(I)
            ST2 = ST2 + T * T
            B = B + T * Y(I) / SIG(I)
        Next I
    Else
        For I = 1 To NDATA
            T = X(I) - SXOSS
            ST2 = ST2 + T * T
            B = B + T * Y(I)
    Next I
    End If
    B = B / ST2
    A = (SY - SX * B) / SS
    SIGA = Sqr((1# + SX * SX / (SS * ST2)) / SS)
    SIGB = Sqr(1# / ST2)
    CHI2 = 0#
    If MWT = 0 Then
        For I = 1 To NDATA
            CHI2 = CHI2 + (Y(I) - A - B * X(I)) ^ 2
        Next I
        Q = 1#
        SIGDAT = Sqr(CHI2 / (NDATA - 2))
        SIGA = SIGA * SIGDAT
        SIGB = SIGB * SIGDAT
    Else
        For I = 1 To NDATA
            CHI2 = CHI2 + ((Y(I) - A - B * X(I)) / SIG(I)) ^ 2
        Next I
        Q = GAMMQ(0.5 * (NDATA - 2), 0.5 * CHI2)
    End If
End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?