DragonTear
Legende
Hallo Community,
bräuchte mal die Hilfe von einem anderen Java Entwickler oder besser von einem Mathematiker.
Möchte für ein vielseitiges Projekt eine Monotone Kubische Interpolation vornehmen weil es zumindest laut Wiki Artikel, exakt das Verhalten ermöglicht das ich brauche: Monotone cubic interpolation - Wikipedia
Hab somit diesen Code hier gefunden: Spline interpolation in java. · GitHub
Angeblich soll es aus dem Sourcecode von Android stammen (oder wie ist die erste Zeile sonst zu interpretieren?).
Nun ergibt das für folgende Punkte:
Folgenden Graphen:
Die interpolierten Punkte schießen über das Maximum von 100 hinaus obwohl das Verfahren ja grade das verhindern soll.
Dies bestätigen auch die Werte. Der Scheitel ist bei 106.69:
Wenn ich stattdessen diese Punkte nehme:
Womit der höchste Punkt exakt in der Mitte ist, funktioniert es wie es soll. Der Scheitel ist dann bei 100.
Ist der Algorithmus also nicht für unterschiedliche Abstände auf der X-Achse geeignet?
Kann jemand den Code eventuell nachvollziehen?
Oder kennt ihr eine andere Open-Source Bibliothek mit dieser Funktionalität?
Hab irgendwie nur klassische Cubic-Interpolation gefunden.
Schon mal riesigen Dank im Vorraus!
bräuchte mal die Hilfe von einem anderen Java Entwickler oder besser von einem Mathematiker.
Möchte für ein vielseitiges Projekt eine Monotone Kubische Interpolation vornehmen weil es zumindest laut Wiki Artikel, exakt das Verhalten ermöglicht das ich brauche: Monotone cubic interpolation - Wikipedia
Hab somit diesen Code hier gefunden: Spline interpolation in java. · GitHub
Angeblich soll es aus dem Sourcecode von Android stammen (oder wie ist die erste Zeile sonst zu interpretieren?).
Nun ergibt das für folgende Punkte:
Code:
X : Y
0.0 : 0.0
30.0 : 100
40.0 : 0.0
Die interpolierten Punkte schießen über das Maximum von 100 hinaus obwohl das Verfahren ja grade das verhindern soll.
Dies bestätigen auch die Werte. Der Scheitel ist bei 106.69:
Code:
Interpolated points: 0 : 0.0
Interpolated points: 1 : 3.5481482
Interpolated points: 2 : 7.4962964
Interpolated points: 3 : 11.799999
Interpolated points: 4 : 16.414816
Interpolated points: 5 : 21.296297
Interpolated points: 6 : 26.400002
Interpolated points: 7 : 31.681482
Interpolated points: 8 : 37.0963
Interpolated points: 9 : 42.600006
Interpolated points: 10 : 48.14815
Interpolated points: 11 : 53.6963
Interpolated points: 12 : 59.2
Interpolated points: 13 : 64.614815
Interpolated points: 14 : 69.89629
Interpolated points: 15 : 75.0
Interpolated points: 16 : 79.881485
Interpolated points: 17 : 84.49629
Interpolated points: 18 : 88.8
Interpolated points: 19 : 92.748146
Interpolated points: 20 : 96.296295
Interpolated points: 21 : 99.4
Interpolated points: 22 : 102.01482
Interpolated points: 23 : 104.09629
Interpolated points: 24 : 105.6
Interpolated points: 25 : 106.48148
Interpolated points: 26 : 106.6963
Interpolated points: 27 : 106.200005
Interpolated points: 28 : 104.94815
Interpolated points: 29 : 102.89629
Interpolated points: 30 : 100.0
Interpolated points: 31 : 95.4
Interpolated points: 32 : 88.53333
Interpolated points: 33 : 79.8
Interpolated points: 34 : 69.600006
Interpolated points: 35 : 58.333332
Interpolated points: 36 : 46.399994
Interpolated points: 37 : 34.200005
Interpolated points: 38 : 22.133331
Interpolated points: 39 : 10.600002
Interpolated points: 40 : 0.0
Wenn ich stattdessen diese Punkte nehme:
Code:
X : Y
0.0 : 0.0
20.0 : 100
40.0 : 0.0
Ist der Algorithmus also nicht für unterschiedliche Abstände auf der X-Achse geeignet?
Kann jemand den Code eventuell nachvollziehen?
Oder kennt ihr eine andere Open-Source Bibliothek mit dieser Funktionalität?
Hab irgendwie nur klassische Cubic-Interpolation gefunden.
Schon mal riesigen Dank im Vorraus!