shootf.txt

来自「VB常用数值算法集1 VB常用数值算法集1」· 文本 代码 · 共 52 行

TXT
52
字号
Sub SHOOTF(NVAR, V1(), V2(), DELV1(), DELV2(), N1, N2, X1, X2, XF, EPS, H1, HMIN, F(), DV1(), DV2())
    Dim Y(20), F1(20), F2(20), DFDV(20, 20), INDX(20), XP(200), YP(10, 200)
    Call LOAD1(X1, V1(), Y())
    Call ODEINT(Y(), NVAR, X1, XF, EPS, H1, HMIN, NOK, NBAD, XP(), YP())
    Call SCORE(XF, Y(), F1())
    Call LOAD2(X2, V2(), Y())
    Call ODEINT(Y(), NVAR, X2, XF, EPS, H1, HMIN, NOK, NBAD, XP(), YP())
    Call SCORE(XF, Y(), F2())
    J = 0
    For IV = 1 To N2
        J = J + 1
        SAV = V1(IV)
        V1(IV) = V1(IV) + DELV1(IV)
        Call LOAD1(X1, V1(), Y())
        Call ODEINT(Y(), NVAR, X1, XF, EPS, H1, HMIN, NOK, NBAD, XP(), YP())
        Call SCORE(XF, Y(), F())
        For I = 1 To NVAR
            DFDV(I, J) = (F(I) - F1(I)) / DELV1(IV)
        Next I
        V1(IV) = SAV
    Next IV
    For IV = 1 To N1
        J = J + 1
        SAV = V2(IV)
        V2(IV) = V2(IV) + DELV2(IV)
        Call LOAD2(X2, V2(), Y())
        Call ODEINT(Y(), NVAR, X2, XF, EPS, H1, HMIN, NOK, NBAD, XP(), YP())
        Call SCORE(XF, Y(), F())
        For I = 1 To NVAR
            DFDV(I, J) = (F2(I) - F(I)) / DELV2(IV)
        Next I
        V2(IV) = SAV
    Next IV
    For I = 1 To NVAR
        F(I) = F1(I) - F2(I)
        F1(I) = -F(I)
    Next I
    Call LUDCMP(DFDV(), NVAR, INDX(), DET)
    Call LUBKSB(DFDV(), NVAR, INDX(), F1())
    J = 0
    For IV = 1 To N2
        J = J + 1
        V1(IV) = V1(IV) + F1(J)
        DV1(IV) = F1(J)
    Next IV
    For IV = 1 To N1
        J = J + 1
        V2(IV) = V2(IV) + F1(J)
        DV2(IV) = F1(J)
    Next IV
    Erase INDX, DFDV, F2, F1, Y
End Sub

⌨️ 快捷键说明

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