Die Integration der Normalverteilung ist nicht analytisch lösbar. Die hier vorgestellte VB6-Funktion erreicht für das Integral eine Präzision von 4 Stellen. Fundstelle des Verfahrens: Eingabeparameter: Standardwert (z-Wert) ' ----------------------------- Beginn des Quellcodes ------------------------- Function Integral_der_Normalverteilung(ByVal Standardwert As Double) As Double ' Berechnung des Integrals der Standard-Normalverteilung ' im Intervall von -unendlich bis zum vorgegebenen Standardwert ' Behandlung der Extrembereiche für Standardwerte: ' Standardwert <= -4.2 ---> Integral wird auf .00001 gesetzt ' Standardwert => 4.2 ---> Integral wird auf .99999 gesetzt ' erforderliche Hilfskonstanten Const a1 As Double = 0.000124818987 Const b1 As Double = 0.001075204047 Const c1 As Double = 0.005198775019 Const d1 As Double = 0.019198292004 Const e1 As Double = 0.059054035642 Const f1 As Double = 0.151968751364 Const g1 As Double = 0.319152932694 Const h1 As Double = 0.5319230073 Const i1 As Double = 0.797884560593 Const a2 As Double = 0.000045255659 Const b2 As Double = 0.00015252929 Const c2 As Double = 0.000019538132 Const d2 As Double = 0.000676904986 Const e2 As Double = 0.001390604284 Const f2 As Double = 0.00079462082 Const g2 As Double = 0.002034254874 Const h2 As Double = 0.006549791214 Const i2 As Double = 0.010557625006 Const j2 As Double = 0.011630447319 Const k2 As Double = 0.009279453341 Const l2 As Double = 0.005353579108 Const m2 As Double = 0.002141268741 Const n2 As Double = 0.000535310849 Const o2 As Double = 0.999936657524 ' Hilfsvariable Dim z As Double, y As Double, h As Double, v As Double, w As Double ' Speicher für interne Zwischenergebnisse Dim term1 As Double, term2 As Double, term3 As Double If Standardwert >= 4.2 Then Integral_der_Normalverteilung = 0.99999: Exit Function If Standardwert <= -4.2 Then Integral_der_Normalverteilung = 0.00001: Exit Function ' Näherungsverfahren If Standardwert = 0 Then z = 0 Else y = Abs(Standardwert) / 2 If y >= 3 Then z = 1 ElseIf y < 1 Then w = y * y term1 = ((((a1 * w - b1) * w + c1) * w - d1) * w + e1) * w - f1 z = (((term1 * w + g1) * w - h1) * w + i1) * y * 2 Else y = y - 2 term1 = ((((-a2 * y + b2) * y - c2) * y - d2) * y + e2) * y - f2 term2 = (term1 * y - g2) * y + h2 term3 = ((term2 * y - i2) * y + j2) * y - k2 z = (((term3 * y + l2) * y - m2) * y + n2) * y + o2 End If End If If Standardwert > 0 Then Integral_der_Normalverteilung = (z + 1) / 2 Else Integral_der_Normalverteilung = (1 - z) / 2 End If End Function ' ----------------------------- Ende des Quellcodes --------------------------- Dieser Tipp wurde bereits 17.675 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung sevGraph (VB/VBA) Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |