inverse error function
How about we get rid of Excel's erf, and use our own?
This is much more accurate.
I've eliminated WorksheetFunction also.
Not much Error checking, but this should give you some ideas.
HTH. :)
Option Explicit
Const SqrPi As Double = 1.77245385090552
Sub TestIt()
Debug.Print InverseErf(0.1)
Debug.Print InverseErf(0.5)
Debug.Print InverseErf(0.9)
End Sub
Function InverseErf(n)
If n < 0 Or n = 1 Then Exit Function
Dim g As Double
Dim j As Long
g = 0
For j = 1 To 15
g = g + (Exp(g * g) * SqrPi * (n - Erf(g))) / 2
Next j
InverseErf = g
End Function
Function Erf(z)
Dim k As Long
Dim F As Double '(F)actorial
Dim n As Double
Dim d As Double
Dim Ans As Double
If z = 0 Then Exit Function
F = 1
With WorksheetFunction
For k = 0 To 25
n = (-1) ^ k * z ^ (2 * k + 1)
d = F * (2 * k + 1)
Ans = Ans + n / d
F = F * (k + 1)
Next k
Ans = Ans * 2 / SqrPi
End With
Erf = Ans
End Function
--
HTH :)
Dana DeLouis
Windows XP & Excel 2007
"Wan" wrote in message
...
How can I find an inverse error function on Excel, using functions that
are
available?
|