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.616 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. |
Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |