hmm: php Funktionen gesucht

Hi Leute,

ich muss folgende Funktionen in php implementieren, kent jemand eine php bibliothek die diese funktionen schon hat oder hat für irgendwas davon einen passenden code parat?

ich brauche:

  1. eine funktion, die zufällszahlen generiert die normalverteilt sind zu parametern müh und sigma (polar methode bringt nix, da diese nur standartnormalverteilte zufallszahlen generiert)

  2. eine funktion die mir zu jedem wert den passenden wert der dichtefunktion der normalverteilung zu müh und sigma liefert

  3. eine klasse die mir spliens berechnet, über geben wird eine reihe mit doublewerten, herauskommen soll ein objekt dass mir zu dem punkt eine passende funktion liefert (kubische spliens)

  1. @@hmm

    1. eine funktion, die zufällszahlen generiert die normalverteilt sind zu parametern müh und sigma (polar methode bringt nix, da diese nur standartnormalverteilte zufallszahlen generiert)

    z-Transformation andersrum.

    LLAP 🖖

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. z-Transformation andersrum.

      danke. bist du dir da sicher?

      das man per z transformation standartnormalverteilte zufallsvariablen bauen kann ist beweis bar, aber sicher dass ich per sima * "standartnormalverteilte ZV" + müh eine zu müh, sigma normalverteilte zufallsvariable bekomme? das klingt zwar auf den ersten blick richtig, könnte aber falsch sein.

      hier der php code (polarmethode + umgekehrte z transformation:

      function generateNormZV($mueh, $sigma) { 
      
          do { 
            $y1 = mt_rand() / mt_getrandmax(); 
            $y2 = mt_rand() / mt_getrandmax(); 
            $q = pow(2 * $y1 - 1, 2) + pow(2 * $y2 - 1, 2); 
          } 
          while ($q > 1); 
         
          $p = sqrt((-2 * log($q)) / $q); 
         
          $z1 = (2 * $y1 - 1) * $p; 
          $z2 = (2 * $y2 - 1) * $p; 
      
      	return array($sigma * $z1 + $mueh, $sigma * $z2 + $mueh); 
      
        }
      

      was haltet ihr von dem code?

      edit: bevor es zu fragen kommt, die zufalsvariablen sollen natürlich im intervall [0,1] liegen

      1. und die dichte einer normalverteilung zu sigma, müh ist gegeben durch

        f(x) = 1/(sigma * sqrt(2 * pi)) * exp(-1/2 * (x-müh)/sigma)^2

        mit na abfrage ob sigma gleich null ist die frage nachder dichte auch gegessen

        bleibt (wenn der polarcode oben stimmt) nurnoch die frage nach einer classe für spliens

        1. und die dichte einer normalverteilung zu sigma, müh ist gegeben durch

          f(x) = 1/(sigma * sqrt(2 * pi)) * exp(-1/2 * (x-müh)/sigma)^2

          kleiner fehler, formel müsste so aussehen: f(x) = 1/(sigma * sqrt(2 * pi)) * exp(-1/2 * ((x-müh)/sigma)^2)

          hier der code:

          function _dichteNorm($zv, $mueh, $sigma){
          
          	if($sigma == 0){
          		return 0;
          	}
          	else{
          		$b = ($zv - $mueh)/$sigma;
          		return ( (exp(- 1/2 * ($b * $b)) / ($sigma * sqrt(2 * pi)) );
          	}
          }
          
          1. Hallo hmm,

            kleiner fehler, formel müsste so aussehen:
            f(x) = 1/(sigma * sqrt(2 * pi)) * exp(-1/2 * ((x-müh)/sigma)^2)

            großer Fehler, Formel müsste so aussehen:

            $$f(x) = \frac {1}{\sigma\sqrt{2\pi}} e^{-\frac {1}{2} \left(\frac{x-\mu}{\sigma}\right)^2}$$

            Du kannst einfach aus der Wikipedia kopieren: Alles was zwischen <math> und </math> steht, zwischen $$ und $$ schreiben.

            Bis demnächst
            Matthias

            --
            Signaturen sind bloed (Steel) und Markdown ist mächtig.
            1. @@Matthias Apsel

              $$f(x) = \frac {1}{\sigma\sqrt{2\pi}} e^{-\frac {1}{2} \left(\frac{x-\mu}{\sigma}\right)^2}$$

              Das waren noch Zeiten, als man für diese Formel einfach nur einen 10-DM-Schein aus der Tasche ziehen musste.

              LLAP 🖖

              --
              „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  2. Hallo,

    mir fehlen zwar die mathematischen Grundlagen, und das Themengebiet ist mir auch so unsympathisch, dass ich sie mir nicht aneignen möchte.

    Aber könntest du es bitte den anderen einfacher machen, indem du die Bezeichner so schreibst, wie es auch sonst üblich ist? Deine Bezeichnungen sind doch sehr verwirrend, finde ich.

    müh und sigma

    Ich kenne Müh' und Not. Für gewöhnlich schreibt man my und sigma, oder noch besser μ und ς.

    (polar methode bringt nix, da diese nur standartnormalverteilte zufallszahlen generiert)

    Und bitte Standar_d_ mit 'd' am Ende (außer im Russischen und Verwandten: Стандарт).

    1. eine klasse die mir spliens berechnet

    Spleens? Oder doch eher Splines?

    So long,
     Martin

    1. Hallo Der Martin,

      Ich kenne Müh' und Not. Für gewöhnlich schreibt man my und sigma, oder noch besser μ und ς.

      Dein Sigma ist ein … was anderes. σ ist das korrekte Zeichen für die Standardabweichung.

      Bis demnächst
      Matthias

      --
      Signaturen sind bloed (Steel) und Markdown ist mächtig.
      1. @@Matthias Apsel

        ς. Dein Sigma ist ein … was anderes.

        Das Schluss-Sigma.

        Gab’s in der lateinischen Schrift auch: Schluss-s.

        BTW, in der hebräischen Schrift gibt es fünf Buchstaben, die am Wortende (also links) eine andere Form haben.

        In der arabischen Schrift haben alle(?) Buchstaben 4 unterschiedliche Formen, je nachdem, ob sie am Anfang, in der Mitte, am Ende oder einzeln stehen. Im Gegensatz zu anderen Schriften werden diese aber durch denselben Zeichencode dargestellt; die unterschiedlichen Formen zu rendern übernimmt die Schriftart.

        LLAP 🖖

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
        1. Hallo Gunnar Bittersmann,

          Danke für die Hintergrundinfos.

          LLAP 🖖

          Was steht nach LLAP? Wird unter Win8.1 nicht angezeigt. Ich vermute, es ist das V zwischen Mittel- und Ringfinger.

          Bis demnächst
          Matthias

          --
          Signaturen sind bloed (Steel) und Markdown ist mächtig.
          1. @@Matthias Apsel

            Was steht nach LLAP? Wird unter Win8.1 nicht angezeigt.

            U+1F596

            Ich vermute, es ist das V zwischen Mittel- und Ringfinger.

            Die Vermutung lag nahe.

            LLAP 🖖

            --
            „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
          2. Hallo,

            LLAP 🖖

            Was steht nach LLAP? Wird unter Win8.1 nicht angezeigt.

            nicht nur da. Die DejaVu Sans Mono, die ich unter Linux Mint als bevorzugte Monospace-Schrift habe, kennt das Zeichen anscheinend auch nicht.

            Ich vermute, es ist das V zwischen Mittel- und Ringfinger.

            Klingt einleuchtend, aber das wäre mir erstens nicht eingefallen, zweitens wäre ich nicht auf die Idee gekommen, dass es das als Unicode-Zeichen geben könnte.

            Ciao,
             Martin

      2. Guten Abend,

        Ich kenne Müh' und Not. Für gewöhnlich schreibt man my und sigma, oder noch besser μ und ς.

        Dein Sigma ist ein … was anderes.

        ... ein sigma eben. Ehrlich gesagt, ich habe aus der Zeichentabelle das Zeichen aus dem Greek-Block rausgepickt, das sigma heißt. Jetzt sehe ich, dass es ein Greek Letter Sigma und ein Greek Letter Final Sigma gibt. Hat Gunnar ja schon erklärt.

        Mir sind zwar in der Vergangenheit auch schon die beiden Varianten aufgefallen, bzw. der Unterschied zwischen ihnen, aber ich habe das bisher auf das Design der jeweiligen Schriftart geschoben.

        σ ist das korrekte Zeichen für die Standardabweichung.

        In Ordnung. Wie gesagt, nicht meine Baustelle.

        So long,
         Martin

        PS: Ist das Buch schon eingetroffen?

        1. Hallo Der Martin,

          PS: Ist das Buch schon eingetroffen?

          Ja, heute morgen, der Klappentext Verspricht so einiges. Ich hab sogar schon was holländisches gelernt. Bauernfrühstück.

          Bis demnächst
          Matthias

          --
          Signaturen sind bloed (Steel) und Markdown ist mächtig.