Seite 1 von 1

SciPy Interpolation Polynome ausprinten

Verfasst: Donnerstag 9. Januar 2020, 11:35
von laffeyh
Servus,

für eine Seminararbeit benutze ich SciPy um Funktionen und Werte zu interpolieren.
Dies mache ich zum Beispiel so:

from scipy.interpolate import interp1d
import numpy as np
import matplotlib.pyplot as plt
import random as rand
import scipy as sc

x = [0, 1, 2]
y = [0, 2, 0]
z = np.linspace(0,2, num=40)

f1 = interp1d(x, y, kind='linear')
f2 = sc.interpolate.CubicSpline(x, y)

plt.plot(x, y, 'o', z, f2(z), '-', z, f1(z), '--')
plt.show()


Dieses wird auch graphisch angezeigt, wie es auch soll.

Dazu hätte ich gerne die Polynome, welche für jedes Intervall benutzt werden.
Die interp1d() und CubicSpline() berechnen ein Interpolationspolynom für jedes Teilintervall.
Ich habe mir die Funktionen mal angeschaut und herausgefunden, dass die beiden Funktionen Funktionen von PPoly ausgeben, welche dann mit f2(z) und z in die Graphik eingefügt werden.

Dann habe ich versucht, irgendwie diese PPoly Funktionen auszuprinten, was jedoch nicht funktioniert.

Hat da jemand eine Idee, wie man die PPoly für jedes Teilintervall ausgibt?

Würde mich über eine Antwort freuen.

Mit freundlichen Grüßen,
Laffeyh

Re: SciPy Interpolation Polynome ausprinten

Verfasst: Donnerstag 9. Januar 2020, 15:15
von einfachTobi
Die Funktionen selbst bieten keine Möglichkeit dafür. Für lineare Funktionen ist die Ermittlung ja noch trivial. Mit `numpy.gradient()` kannst du dir die Steigung zwischen beliebig vielen Punkten ausgeben lassen. Da eine lineare Funktion die Form f(x) = m*x + n hat, kennst du alles nötige (n = y-Koordinate des ersten Punktes).