SciPy Interpolation Polynome ausprinten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
laffeyh
User
Beiträge: 1
Registriert: Donnerstag 9. Januar 2020, 11:24

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
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

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).
Antworten