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.
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Ich probier schon seit Sunden rum aber ich finde den Fehler nicht.
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
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.
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
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hinweis:
Math.Exp(Math.Log(...))
ist ziemlich sinnfrei...
Vergleich einfach mal deinen Code mit Normalverteilung
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.