Laden...

Fehler bei der standartisierten Normalverteilung

Erstellt von softwarefreak vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.009 Views
Thema geschlossen
S
softwarefreak Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren
Fehler bei der standartisierten Normalverteilung

Hallo,
an dieser Rechnung stimmt irgendwas nicht. Er liefert ein falsches Ergebnis:

Standartisierte Normalverteilung

lblResult.Text = (1.0 / Math.Sqrt(2 * Math.PI) * Math.Exp(Math.Log(-1.0 / 2.0 * Math.Pow(u,2)))).ToString("f3");

Vielen Dank.

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo softwarefreak,

dass Addition, Subtraktion, Multiplikation, Division und Co im Framework falsch implementiert sind bezweifle ich.

Das ist schon der zweite Beitrag, der heisst "geht nicht, macht mal".

Beim ersten Mal wurdest du schon auf den Thread hingewiesen, der das eigentlich klarstellen sollte.

Zu deinem Problem: Einfach mal den Debugger anschmeissen. Dann weisst du wos hängt.

Mach dir Teilrechnungen, brech die Gleichung auf und debuggen. Ich bin mir sicher du kommst drauf.

Gruss

Coffeebean

S
softwarefreak Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren

Ich probier schon seit Sunden rum aber ich finde den Fehler nicht.

64 Beiträge seit 2012
vor 10 Jahren

Bitte besonders Punkt 5 beachten:
[Hinweis] Wie poste ich richtig?

Wenn ihr keine Fehler- oder Exceptionmeldung bekommt, beschreibt das Fehlverhalten möglichst genau. Mit "funktioniert nicht" alleine ist uns leider nicht geholfen; genausowenig mit "verstehe ich nicht". Bitte schreibt genau, was ihr probiert habt; was ihr nicht versteht und stellt konkrete Fragen. Wenn etwas nicht funktioniert, beschreibt sowohl den IST- als auch den SOLL-Zustand.

++Rekursion ++
(lat. , die) siehe Rekursion

S
softwarefreak Themenstarter:in
6 Beiträge seit 2013
vor 10 Jahren

Hallo,
ich habe einen Breakpoint gesetzt und bin alles Schritt für Schritt durchgegangen. Mir ist nichts aufgefallen. Dann habe ich die Rechnung in 3 Teile unterteilt. Habe den Fehler aber nicht gefunden.

C
224 Beiträge seit 2009
vor 10 Jahren

Hallo softwarefreak,

bei der Standardnormalverteilung gibt es eine Dichte- und eine Verteilungsfunktion.
Wikipedia: Standardnormalverteilung

Hier die Dichtefunktion:


        private static double DichteStandardnormalverteilung(double o, double x, double u)
        {
            //Dichtefunktion der Standardnormalverteilung
            //Formel:
            //
            //                                  2
            //                      1  ( x-u   )
            //           1        - -  ( ----- )
            // f(x) = --------- e   2  (  o    )
            //            ___
            //         o /2pi
            //

            double ergebnis
                = (1d / (o * Math.Sqrt(2d * Math.PI))) * Math.Exp
                (
                    -0.5d * Math.Pow(((x - u) / o), 2d)
                )
            ;
            return ergebnis;
        }

Falls Dich auch die Verteilungsfunktion interessiert, sie verwendet die Erf Funktion:
johndcook:Erf

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo softwarefreak,

Hallo,
ich habe einen Breakpoint gesetzt und bin alles Schritt für Schritt durchgegangen. Mir ist nichts aufgefallen. Dann habe ich die Rechnung in 3 Teile unterteilt. Habe den Fehler aber nicht gefunden.

Dann zerteile es in mehr Teile und überprüfe jeden Teilbereich. Irgendwo wird der Fehler schon liegen 😉

Gruss

Coffeebean

4.938 Beiträge seit 2008
vor 10 Jahren

Hinweis:


Math.Exp(Math.Log(...))

ist ziemlich sinnfrei...

Vergleich einfach mal deinen Code mit Normalverteilung

Hinweis von herbivore vor 10 Jahren

Du hast leider die Chance nicht genutzt, um wenigstens anzugeben, wie der IST- vom SOLL-Wert abweicht, obwohl dir schon extra [Hinweis] Wie poste ich richtig? Punkt 5 vorgelesen wurde. Es ist schon schlimm genug, wenn wir dir die Informationen aus der Nase ziehen müssen, aber wenn du selbst dann nicht damit herausrückst, dann können wir auch nicht helfen.

Thema geschlossen