Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Explicit
- Public Deriv_Approx As Boolean
- Sub Funct(f, c, x)
- Dim n&, i&
- n = UBound(x)
- ReDim f(1 To n)
- For i = 1 To n
- f(i) = Exp(c(1) * x(i)) + c(2)
- Next i
- End Sub
- Sub DFunct(df, c, x)
- Dim m&, n&, i&, j&, t#, df0(), tol#
- m = UBound(c)
- n = UBound(x)
- ReDim df(1 To n, 1 To m)
- If Deriv_Approx Then
- DFunctApprox df, c, x
- Else
- For i = 1 To n
- df(i, 1) = x(i) * Exp(c(1) * x(i))
- df(i, 2) = 1
- Next i
- End If
- End Sub
- Private Sub DFunctApprox(df, c, x)
- Dim h#, m&, n&, j&, i&, t(), f0(), f1()
- h = 10 ^ -4
- m = UBound(c)
- ReDim t(1 To m)
- For j = 1 To m
- For i = 1 To m
- If i = j Then
- t(i) = c(i) + h / 2
- Else
- t(i) = c(i)
- End If
- Next i
- Funct f1, t, x
- For i = 1 To m
- If i = j Then
- t(i) = c(i) - h / 2
- Else
- t(i) = c(i)
- End If
- Next i
- Funct f0, t, x
- n = UBound(f1)
- If j = 1 Then ReDim df(1 To n, 1 To m)
- For i = 1 To n
- df(i, j) = (f1(i) - f0(i)) / h
- Next i
- Next j
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement