Seite 1 von 1

Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Mi, 27. Mai 2020 17:35
von Eugeny Lutsenko
Hat jemand eine Funktion, ein array von Daten durch ein Polynom eines gegebenen Grades zu approximieren?

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Mi, 27. Mai 2020 18:09
von HaPe
Hallo Eugeny !
Hat jemand eine Funktion, ein array von Daten durch ein Polynom eines gegebenen Grades zu approximieren?
So wie es Excel mit der Funktion Trendlinie -> Trendlinienoptionen -> Polynomisch auch macht?

Bild

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Sa, 30. Mai 2020 16:20
von Eugeny Lutsenko
Ja, genau so. Aber ich brauche überhaupt keinen Dialog. Es genügt, der Funktion ein eindimensionales array von Quelldaten zu übergeben und ein eindimensionales array von polynomkoeffizienten zurückzugeben. Und als Parameter den Grad des Polynoms angeben

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Sa, 30. Mai 2020 16:53
von HaPe
Hallo Eugeny !
Aber ich brauche überhaupt keinen Dialog.
Vielleicht geht das mit dem Programm DataFit: http://www.oakdaleengr.com/
Ein Kollege verwendet dieses Programm zur Erstellung von Polynom-Funktion anhand von Thermoelement-Kalibierkurven.

Hier steht etwas dazu:
http://www.oakdaleengr.com/datafit.htm
Non-graphical execution – DataFit can also be run non-graphically from other programs. Simply create a configuration template (either on your own or through the interface), save it, and call DataFit from your program. You can choose handshaking options, such as DDE (Dynamic Data Exchange), progress indicators, and message box displays. Macros support parameterization, which allow you to quickly batch process hundreds of datasets in a single run.

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Mo, 01. Jun 2020 20:21
von mikehoffmann
Hallo Eugeny:

Code: Alles auswählen

FUNCTION Main

   LOCAL n
   SET ALTE TO zing.txt
   SET ALTE ON

   FOR n := 0 TO 5 Step 0.1
      QOut(n,InterPolate({{0,2}, {1,3}, {2,12}, {5,147}},n))
   NEXT n
   Inkey(0)

RETURN NIL



FUNCTION Interpolate(xyPairs,x)

   LOCAL n := Len(xyPairs)
   LOCAL result := 0
   LOCAL term
   LOCAL i,j

   FOR i := 1 TO n

       term := xyPairs[i][2]

       FOR j := 1 TO n

           IF (i # j)
              term := term*(x-xyPairs[j][1])/(xyPairs[i][1]-xyPairs[j][1])
           ENDIF

       NEXT j

       result += term

    NEXT i

RETURN result

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Di, 02. Jun 2020 10:11
von Eugeny Lutsenko
Hallo HaPe und mikehoffmann!

Ihre Informationen sind sehr interessant und nützlich. ich werde jetzt versuchen, es zu benutzen. Danke!
mikehoffmann! Kann die QOut-Funktion nicht anzeigen...

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Di, 02. Jun 2020 16:57
von mikehoffmann
Hello Eugeny,
sorry for QOut. You can also write "? n,InterPolate({{0,2}, {1,3}, {2,12}, {5,147}},n)".
Best regards
Michael

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Mi, 03. Jun 2020 5:40
von Eugeny Lutsenko
Danke, mikehoffmann!

Ich habe es herausgefunden und versucht, aber etwas hat nicht wirklich funktioniert. Ich werde es noch versuchen. Ich habe alles nachts gemacht, gefoltert...

Vielen Dank! Jetzt hat es geklappt:
Bild
Eine dünne schwarze Linie - gerade Linien, die an Referenzpunkten aufgebaut sind. Die Dicke VIOLETTE Linie ist die Bézier-Kurve. Die rote Linie ist ein Polynom des N-TEN Grades. Alles gibt es hier: http://lc.kubagro.ru/Bezier.zip. Es ist sichtbar, dass sich das Polynom korrekter verhält als die Bézierkurve

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Mi, 03. Jun 2020 9:31
von mikehoffmann
Hallo Eugeny,
ich muss Dir danken. Vor fast 40 Jahren habe ich den Algorithmus, der an sich recht einfach ist und gute Ergebnisse liefert, schon mal genutzt. Damals habe ich ihn für eine Kaminquerschnittsberechnung in BASIC genutzt. Leider ist mir der Algorithmus verschütt gegangen. Dank Deiner Nachfrage habe ich intensiver im Internet gesucht und ihn wieder gefunden. Juhuu! Ich werde ihn nun nutzen, um in Flugzeug-Leistungstabellen zu interpolieren. (Druckhöhe, Temperatur, Leistung, Drehzahl, Geschwindigkeit, Verbrauch, Start- und Landestrecken) Diese Interpolation wird dann sogar mehrstufig sein.
Viele Grüße
Michael

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Mi, 03. Jun 2020 22:10
von Eugeny Lutsenko
Hi, mikehoffmann!
Ja, ich habe auf den Algorithmus geachtet. Ich mochte ihn. Ähnelt der sequenziellen Normalisierung des Variablen Bereichs [0,1]. Aber mit dem hinzufügen neuer Werte. Ich verstehe nicht wirklich, wie das mit Polynomen des N-TEN Grades zusammenhängt. Mehr wie eine Art originelles Anti-Aliasing. Aber das Ergebnis ist gut und ähnelt der Verwendung von Polynomen. Ich bin froh, dass du diesen Algorithmus zum zweiten mal gefunden hast. Ich werde es auch benutzen. Danke für den Hinweis.

Re: Annäherung von Daten an ein Polynom eines gegebenen Grades

Verfasst: Do, 04. Jun 2020 22:16
von Eugeny Lutsenko
Antialiasing von vorhersageszenarien mit Polynomen im Eidos-System angewendet:
Bild
Ich mag, wie es gelaufen ist. So habe ich mir das vorgestellt. Also danke. Das wäre immer noch eine funktionierende Funktion für die Berechnung aller Punkte der Bézierkurve, die auf den Referenzpunkten aufgebaut ist... Ich habe algorithmen und solche Funktionen im Internet gesehen, aber Sie sind alle so gemacht, dass Sie in Alaska schwer zu replizieren sind