Jörg Reinholz: Lineare Interpolation

Beitrag lesen

Moin!

Hi,

danke für deine Bemühung. Die Formel "y = y0 * (x1-x) / (x1-x0) + y1 * (x-x0) / (x1-x0)" is ide Aufgelöste Form von der, was ich als zaehle und nenner in meinem Programm habe. Beide geben dieselbe Ergebenisse zurück.

Das problem liegt anscheint im Datum und dessen Umwandlung in Sekunden. Je ich mich dem zweiten Wert (x2) annähere, desto verdichten sich die berechneten Werte:

double y0 = 1234.887;
double y1 = 2453.778;

Die berechneten Werte:
1316.1463999999999
1467.8306133333331
1665.0200906666664
1875.3555331555553
2068.1630221037035
2222.4090132622218
2330.3812070731847
2396.192829967486
2430.7439319869941
2446.0999773289977
2451.7305272877325
2453.3685054575462
2453.7234007276725
2453.7743600485114

Ich weiss es nicht, ob das so korrekt wäre-

Das ist nicht mehr linear und könnte eine Folge davon sein, dass Du y1 den Wert von y gibst. Richtig ist es auf keinen Fall, also hat Deine Mechanik einen Fehler.

Du willst womöglich folgendes:

X1 Y1 - gesetzte Werte
x y   - interpoliert :: y = Y1 + (Y2-Y1)/4     wenn delta x jeweils 1/4(x2-X1) ist.
x y   - interpoliert :: Y = Y + 2*(Y2-Y1)/4    wenn delta x jeweils 1/4(x2-X1) ist.
x y   - interpoliert :: Y = Y + 3*(Y2-Y1)/4    wenn delta x jeweils 1/4(x2-X1) ist.
X2 Y2
x y   - interpoliert :: y = Y2 + (Y3-Y2)/4     wenn delta x jeweils 1/4(x3-X2) ist.
x y   - interpoliert :: Y = Y + 2*(Y3-Y2)/4    wenn delta x jeweils 1/4(x3-X2) ist.
x y   - interpoliert :: Y = Y + 3*(Y3-Y2)/4    wenn delta x jeweils 1/4(x3-X2) ist.
X3 Y3
x y   - interpoliert :: y = Y3 + (Y4-Y3)/4     wenn delta x jeweils 1/4(x4-X3) ist.
x y   - interpoliert :: Y = Y + 2*(Y4-Y3)/4    wenn delta x jeweils 1/4(x4-X3) ist.
x y   - interpoliert :: Y = Y + 3*(Y4-Y3)/4    wenn delta x jeweils 1/4(x4-X3) ist.
X4 Y4
...

Du hast wie im Beispiel konstante Abstände zwischen den Punkten, kannst Dir also allerhand ersparen. Aber, Da, wo zum Zeitpunk X2 der Wert Y2 gemessen wurde, musst Du neu interpolieren und so weiter. Du bekommst dann aber nicht EINE Line über die gesamte Messstrecke, sondern n-1 Linien zwischen den Messpunkten (deren Zahl n sei). Die wird (voraussichtlich!) gezackt sein.

Du hast immer nicht kommuniziert, was Du wirklich willst. Eine gerade Linie oder eine gezackte Linie?

Willst Du jedoch genau eine gerade Linie über alle Messpunkte interpolieren, dann setze in "meine" Formel

y = y0 * (x1-x) / (x1-x0) + y1 * (x-x0) / (x1-x0)
  • für x0 das arithmetische Mittel der ersten (früheren) Hälfte der Messpunkte.
  • für y0 das arithmetische Mittel der zugehörigen Messwerte
  • für x1 das arithmetische Mittel der zweiten (späteren) Hälfte der Messpunkte.
  • für y1 das arithmetische Mittel der zugehörigen Messwerte

Ist die Zahl der Messpunkte ungerade, dann berechne die vier arithmetischen Mittel jeweils einschließlich des mittleren Messwertes.

Die von Dir gezeigten Zahlen lassen kaum Rückschlüsse auf den Fehler zu. Ich müsste das nachprogrammieren und dann Deine Fehler spekulativ nachahmen. Da gibt es aber sehr viele Möglichkeiten, die ich dann mit Deinen Resultaten vergleichen müsste - was mir schlicht zu viel Aufwand ist. Deinen Fehler sehe ich ggf. in Deinem Code. So lange es nur um Mathe geht ist die Sprache halbwegs (Bis auf die Feinheiten Deiner DateTime-Objekte z.B.) egal.

Jörg Reinholz

0 45

Lineare Interpolation

Casalblanca
  • c#
  1. 0
    Student07.05.2015
    1. 0
      Casalblanca
      1. 0
        Tabellenkalk
        • c#
        • programmiertechnik
        • statistik
  2. 1
    Jörg Reinholz
    1. 0
      Casalblanca
      1. 0
        Jörg Reinholz
        1. 0
          Casalblanca
          1. 0
            Jörg Reinholz
            1. 0
              Casalblanca
              1. 0
                Jörg Reinholz
                • c#
                • programmiertechnik
        2. 0
          dedlfix
      2. 0
        bernd
  3. 0
    Student26.05.15
    1. 0
      Jörg Reinholz
      1. 0
        Student27.05
        1. 0
          Jörg Reinholz
          1. 0
            Student27.05
            1. 0

              Lineare Interpolation - Eine Lösung in PHP

              Jörg Reinholz
              • php
              • statistik
              1. 4
                1unitedpower
                1. 0

                  Lineare Interpolation mit Zacken - Eine Lösung in PHP

                  Jörg Reinholz
                  1. 0

                    Mann, sind die Rechner schnell geworden...

                    Jörg Reinholz
                    1. 0
                      1unitedpower
                      1. 0
                        Jörg Reinholz
                        1. 0

                          lösung mit lagrange...

                          Student29.05
                          1. 1
                            Christian Kruse
                            1. 0
                              Student29.05
                              1. 5
                                Christian Kruse
                                1. 0
                                  Student29.05
                                  1. 1
                                    Christian Kruse
                                    1. 1
                                      Der Martin
                                      • programmiertechnik
                                      • software
                                  2. 3
                                    Camping_RIDER
                                    1. 0
                                      Student29.05
                                      1. 0
                                        Student29.05
                                        1. 0
                                          Der Martin
                                      2. 0
                                        Der Martin
                                        • software
                                        1. 0
                                          Student29.05
                          2. 0
                            1unitedpower
                            1. 0
                              Student29.05
                              1. 1
                                unkown
                              2. 0
                                1unitedpower
                          3. 0
                            Jörg Reinholz
                        2. 0
                          1unitedpower
                          1. 0
                            Christian Kruse
                          2. 0

                            PHP, Ausgabe- Pufferung. Performance

                            Jörg Reinholz