[JAVA] Monotone Cubic Interpolation - Hat jemand damit Erfahrung?

DragonTear

Legende
Thread Starter
Mitglied seit
06.02.2014
Beiträge
15.997
Ort
Im sonnigen Süden
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:
Code:
X : Y
0.0 : 0.0
30.0 : 100
40.0 : 0.0
Folgenden Graphen:
Spline.JPG
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
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!
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Macht in deinem Beispiel eine monotone Interpolation über den kompletten Wertebereich überhaupt Sinn?
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh