Ankündigung

Einklappen
Keine Ankündigung bisher.

Polynominterpolation in PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Polynominterpolation in PHP

    Hallo Community,

    als Programmierer hat man leider nicht immer Mathematik studiert - und so habe ich leider noch keinen Ansatz gefunden, ein Polynom n-ten Grades in PHP (noch ein Link dazu) zu berechnen.

    Vorliegen tun mir Datenpaare im Array aus Timestamp und Wert. Sieht z.B. so aus:

    PHP-Code:
    Array
    (
        [
    1280157007] => 44
        
    [1280153408] => 18
        
    [1280149809] => 35
        
    [1280146207] => 40
        
    [1280142609] => 35
        
    [1280139006] => 27
        
    [1280135405] => 1
        
    [1280131805] => 1
        
    [1280128205] => 1
        
    [1280124605] => 30
        
    [1280121006] => 1
        
    [1280117406] => 38
        
    [1280113807] => 31
        
    [1280110206] => 43
        
    [1280106606] => 24
        
    [1280103006] => 35
        
    [1280099406] => 27
        
    [1280095806] => 37
        
    [1280092205] => 43
        
    [1280088605] => 37
        
    [1280085006] => 55
        
    [1280081406] => 40

    Ein Polynom des 2. Grades (lineare Funktion) habe ich gerade noch hinbekommen, aber am n-ten Grad komme ich absolut nicht weiter.

    Hat jemand einen Ansatz, wer das schonmal gelöst hat, ein paar Links? (habe in Verbindung mit PHP nicht viel zu dem Thema gefunden, auch in Verbindung mit anderen Programmiersprachen nicht unbedingt viel)

    Freue mich über jeden Tipp.

    Grüße aus Hannover,
    Steffen


  • #2
    Und was soll man jetzt mit dieser "Frage" anfangen?
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Zitat von nikosch Beitrag anzeigen
      Und was soll man jetzt mit dieser "Frage" anfangen?
      Die Frage war die Frage nach einem Link, einem Tipp, vielleicht einer Klasse oder eine praktischen Programmier-Anwendung, die sich mit genau dieser mathematischen Aufgabe befasst.

      LG

      Kommentar


      • #4
        Ein Array ist noch kein Polynom.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Docs For Class Math_Polynomial

          Kommentar


          • #6
            Lösungsformeln [Bearbeiten]

            Prinzipiell gibt es mehrere Möglichkeiten, die Nullstellen eines Polynoms zu bestimmen. Allgemeine Iterationsverfahren, wie das Newton-Verfahren und die Regula Falsi oder auf Polynome spezialisierte Iterationsverfahren, wie das Bairstow-Verfahren oder das Weierstraß-(Durand-Kerner)-Verfahren sind einerseits auf jedes Polynom anwendbar, verlieren allerdings bei mehrfachen oder dicht beieinanderliegenden Nullstellen an Genauigkeit und Konvergenzgeschwindigkeit.

            Für quadratische Gleichungen, kubische Gleichungen und quartische Gleichungen gibt es allgemeine Lösungsformeln, für Polynome höheren Grades gibt es Lösungsformeln, sofern diese spezielle Formen haben:
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Hab vor 2 Wochen Klausur zur nummerischen Methoden geschrieben.

              Möchtest du das komplette Polynom aufstellen oder nur einen bestimmten Punkt berechnen? Um ein ganzen Polynom zu berechnen kannst du das Newton-Verfahren verwenden. Das ist relativ einfach und sollte akzeptable Lösungen bringen.

              Falls du noch mehr Infos brauchst kannste bescheid sagen, dann kann ich dir mal die Vorlesungsunterlagen bzw. das Vorgehen als PDF schicken.

              Kommentar


              • #8
                Moin alle zusammen,

                erstmal danke für die Antworten.

                Natürlich ist ein Array kein Polynom... wir wollen mit Hilfe der Punkte im Array (x = Array-Key, y = Array-Wert) fehlende Diagramm-Punkte berechnen... dafür wird das Polynom benötigt.

                Die Zahlen sollen in einem Diagramm dargestellt werden. Da die Timestamps im Array nicht im gleichen Abstand sind, sind die Punkte an komplett verschiedenen Stellen. Deswegen sollen die echten Diagramm-Punkte (die dann alle den gleichen Abstand voneinander haben) mit einem Polynom n-ten Grades berechnet werden.

                @Florian: Wir möchten also eigentlich einzelne Punkte berechnen... es reicht wenn die die PHP-Funktionen immer einen Punkt berechnet, dann können wir das mit einer Schleife für alle Punkte machen. Wäre super, wenn Du mir deine Unterlagen als PDF zur Verfügung stellen könntest. Danke dir.

                Lg,
                Steffen

                Kommentar


                • #9
                  Hier war das Übungsblatt zu dem Thema: http://www5.in.tum.de/lehre/vorlesun...t/angabe05.pdf

                  Aufgabe 1, Aitken-Neville berechnet immer genau EINEN beliebigen Punkt der durch die anderen Punkte approximiert wird.

                  Aufgabe 2, Newton stellt das komplette Polynom (n+1 Punkte => Polynom n-ten Grades) auf. Danach kannst du mit dem Polynom beliebig viele Punkte (schnell) berechnen.

                  Wenn es nur selten und dabei nur ein paar Punkte berechnet werden müssen dann reicht auch Aitken-Neville wahrscheinlich. Das Vorgehen sollte eigentlich aus den Aufgaben hervorgehen, ansonsten kannst du mich ja noch mal per PN anschreiben, die Lösung hat der Lehrstuhl wohl vom Web genommen.

                  Kommentar


                  • #10
                    Hallo Florian,

                    danke dir, das hilft mir schonmal extremst weiter.

                    Um welchen Grad des Polynoms handelt es sich denn bei dieser Aitken-Neville-Methode? Gibt ja scheinbar Polynome vom 2 Grad bis über den 6 Grad bis hin zum n-ten Grad. Ich verstehe leider auch sowieso nicht, was da der Unterschied ist.

                    Danke dir.

                    LG,
                    Steffen

                    Kommentar


                    • #11
                      Wie ich bereits gesagt habe berechnest du bei Aitken-Neville kein Polynom aus sondern nur einen Punkte der durch die restlichen Punkte approximiert wird. Ergo hast du kein Polynom.

                      Kommentar


                      • #12
                        Ah okay, super.

                        Das heißt also quasi: Je mehr Ausgangspunkte ich habe, desto genauer wird der errechnete Punkte.

                        Ich denke, das bringt uns eine deutlich höhere Genauigkeit. Bis jetzt haben wir den fehlenden Punkt immer über eine lineare Funktion anhand des letzten und des folgenden Punktes berechnet.

                        Danke dir nochmals.

                        LG,
                        Steffen

                        Kommentar


                        • #13
                          Der Thread klingt sehr interessant, auch wenn ich nicht glaube, dass das "Errechnen" fehlender Werte sinnvoll ist. Wir wollten das aber einmal in ähnlicher Weise nutzen, in dem wir weiche Linienverläufe bei Liniendiagrammen ausrechnen wollten. Im Moment war leider keine Zeit, das umzusetzen.

                          @stb2050: Wäre super, wenn du uns hier auf dem Laufenden halten könntest, was deinen Fortschritt anbelangt.
                          "Mein Name ist Lohse, ich kaufe hier ein."

                          Kommentar


                          • #14
                            Zitat von stb2050 Beitrag anzeigen
                            Die Zahlen sollen in einem Diagramm dargestellt werden. Da die Timestamps im Array nicht im gleichen Abstand sind, sind die Punkte an komplett verschiedenen Stellen. Deswegen sollen die echten Diagramm-Punkte (die dann alle den gleichen Abstand voneinander haben) mit einem Polynom n-ten Grades berechnet werden.
                            Habt ihr euch wirklich Gedanken gemacht, was das für Folgen für das Diagramm hat/haben kann? Ein Polynom n-ten Grades durch alle Punkte z.B. hat bei den Daten aus deinem ersten Post zu Folge, dass du ein Polynom vom Grad >3 durch die drei Punkte (x,1) legst und dadurch zwischen diesen Punkten größere Bögen liegen und auf keinen Fall Punkte der Form (x,1).
                            Polynome n-ten Gerades machen nur Sinn, wenn die Punkte auch wirklich ein Polynom n-ten gerades beschreiben und nicht wie hier eher "zufällig" sind!

                            Zudem sollte man sich Gedanken machen was das Polynom wirklich beschreiben soll: Entweder einen möglichen Verlauf zwischen den Punkten oder einen Verlauf der auf jeden Fall durch alle Punkte geht, aber der Graph zwischen diesen ist egal...

                            Ich würde mit für den ersten Fall (möglicher "realer" Verlauf) mal Splines ansehen, wodruch man u.U. nicht mehr alle Punkte erreicht, aber wirklich einen Grpah erhält, welcher zwischen den Punkten verlaufen könnte.

                            Kommentar


                            • #15
                              Genau denselben Gedanken hatte ich auch gerade. Hier ist wohl eher die Suche nach einer sinnvollen Mittelwertsberechnung gefragt.
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X