myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Gemeinschaft » .NET-Komponenten und C#-Snippets » Berechnung von Verteilungen (z.B. Gaußsche Normalverteilung)
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Berechnung von Verteilungen (z.B. Gaußsche Normalverteilung)

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Diräkt Diräkt ist männlich
myCSharp.de-Mitglied

Dabei seit: 05.11.2009
Beiträge: 607
Entwicklungsumgebung: VS 2013
Herkunft: Schweiz


Diräkt ist offline

Berechnung von Verteilungen (z.B. Gaußsche Normalverteilung)

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Beschreibung:

Dieses Snippet soll die wichtigsten Verteilungen darstellen, ich war mal auf der Suche danach und habe nichts gefunden, desshalb das Snippet ;)


TRIANGULAR , DREIECK VERTEILUNG


C#-Code:
  public double Low { get; protected set; }
        public double Medium { get; protected set; } //PEAK
        public double High { get; protected set; }

        public double Width
        {
            get { return High - Low; }
        }


        public Dreieck(double low, double medium, double high)
        {
            Low = low;
            Medium = medium;
            High = high;
        }

        public double GetY(double x)
        {

            //case 1
            if (Low <= x && x <= Medium)
            {
                return (2 * (x - Low)) / ((High - Low) * (Medium - Low));
            }

            //case 2
            if (Medium < x && x <= High)
            {
                return (2 * (High - x)) / ((High - Low) * (High - Medium));
            }

            return 0;
        }

           public List<Props.Matrix> GetTable()
        {
            List<Props.Matrix> result = new List<Props.Matrix>();
            for (double x = Low; x < High; x++)
            {
                result.Add(new Props.Matrix(x, GetY(x)));
            }
            return result;
        }

        public List<Props.Matrix> Get3PointTable()
        {
            List<Props.Matrix> result = new List<Props.Matrix>();
            result.Add(new Props.Matrix(Low, 0));
            result.Add(new Props.Matrix(Medium, Medium));
            result.Add(new Props.Matrix(High, 0));

            return result;
        }

(Get3PointTable ist aus Performance-Gründen hier, damit man ein z.B Chart Control nicht unötig lange Punkte zeichnen lässt)


FIXED HEIGHT, FESTE HÖHE


C#-Code:
public double Wert { get; protected set; }


        public FesteHoehe(double wert)
        {
            Wert = wert;
        }

        public double GetY(double x)
        {
            return x;
        }

        public List<Props.Matrix> GetTable()
        {
            List<Props.Matrix> result = new List<Props.Matrix>();
            for (double x = 0; x < Wert; x += 10)
            {
                result.Add(new Props.Matrix(0, GetY(x)));
            }
            return result;
        }

        public List<Props.Matrix> Get1PointTable()
        {
            List<Props.Matrix> result = new List<Props.Matrix>();
            result.Add(new Props.Matrix(0, Wert));
            return result;
        }

        public string GetName()
        {
            return "Feste_Hoehe";
        }

(Get1PointTable ist aus Performance-Gründen hier, damit man ein z.B Chart Control nicht unötig lange Punkte zeichnen lässt)


NORMAL, GAUSSIAN NORMAL


C#-Code:
public double Deviation { get; protected set; }
        public double Mean { get; protected set; }

        private double _next = Double.NaN;


        public Gaussian_Normal(double mean, double deviation)
        {
            Deviation = deviation;
            Mean = mean;
        }

        public double GetY(double x)
        {
            //return Math.Exp(-(Math.Pow((x - Mean) / Deviation, 2) / 2)) / Math.Sqrt(2 * Math.PI) / Deviation;
            x = (x - Mean) / Deviation; // normierung
            return SQRT_2PI * Math.Exp(-0.5 * x * x) / Deviation;
        }

        public List<Props.Matrix> GetTable()
        {
            double from = Mean - Deviation * 3;
            double to = Mean + Deviation * 3;

            List<Props.Matrix> result = new List<Props.Matrix>();

            for (double x = from; x <= to; x += .05 * (to - from))
            {
                result.Add(new Props.Matrix(x, GetY(x)));
            }

            return result;
        }

        public string GetName()
        {
            return "Gaussian_Normal";
        }


LOGNORMAL


C#-Code:
public double Deviation { get; protected set; }
        public double Mean { get; protected set; }

        public LogNormal(double mean, double deviation)
        {
            Deviation = deviation;
            Mean = mean;
        }

        public double GetY(double x)
        {
            return Math.Exp(-Math.Pow(Math.Log(x) - Mean, 2.0) / 2.0 / Deviation / Deviation) / x / Deviation / SQRT_2PI; // 2*pi
        }

        public List<Props.Matrix> GetTable()
        {
            double from = Math.Exp(Mean - Deviation * 3);
            double to = Math.Exp(Mean + Deviation * 3);

            List<Props.Matrix> result = new List<Props.Matrix>();

            for (double x = from; x <= to; x += 0.1)
            {
                result.Add(new Props.Matrix(x, GetY(x)));
            }

            return result;
        }

        public string GetName()
        {
            return "Log_Normal";
        }

Gegenbenfalls findet ja jemand Verwendung dafür ;)

Beste Grüsse

Diräkt

Schlagwörter: verteilungen,triangular,normal,lognormal,gaussian,fixed heighet,feste höhe,dreieck

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Diräkt am 01.07.2011 21:36.

09.06.2011 12:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 8 Jahre.
Der letzte Beitrag ist älter als 8 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 27.05.2020 07:35