Ich bin neu hier im Forum und auch neu sowohl bei Python als auch allgemein beim Programmieren - in der Schule zwar etwas mit Java rumgespielt, aber ohne jegliche Struktur.. Ich studiere Mathematik und muss ab und an auch Programmieraufgaben in Python lösen, das hat bisher auch immer ganz gut geklappt mit der knappen Einführung, die wir bekommen haben - jetzt steh ich aber gerade auf dem Schlauch:
Ich programmiere (oder besser, versuche es..) eine Interpolationsfunktion (Splineinterpolation, um genau zu sein), die liefert mir (richtig, soweit ich das getestet habe, auch wenns nichts zur Sache tut ) eine Zusammengesetze Funktion bzw. deren Koeffizienten, das schaut dann ungefähr so aus:
für x aus [0,1]: y=x
für x aus ]1,2]: y=2x-1
Jetzt soll ich "nur" die Funktion an beliebigen, gegebenen x-Werten auswerten, also sollte soetwas rauskommen:
f(0.5)=0.5
f(1.5)=2
und so weiter. Jetzt müsste ich das ganze allerdings in Python umsetzen, so weit bin ich gekommen:
Kurz zur Erklärung: in x stehen meine auszuwertenden x-Werte der Größe nach sortiert, in data stehen die Stützstellen meiner Interpolation ebenfalls sortiert nach Größe, in der 0. Spalte die x-Werte, in der 1. die y-Werte. in X stehen die x-Werte bereits mit dem passenden Exponenten verrechnet, in s meine koeffizienten, schaut dann so aus:
s
Code: Alles auswählen
[[-0.33333333 1. 1.33333333 -3. ]
[ 0.16666667 -2. 7.33333333 -7. ]]
Code: Alles auswählen
[[ 1.728 1.44 1.2 1. ]
[ 3.375 2.25 1.5 1. ]
[ 12.167 5.29 2.3 1. ]
[ 50.653 13.69 3.7 1. ]]
Code: Alles auswählen
f=1
for j in range(0,h):
while x[j]<data[f,0]:
y[j]=np.inner(s[f-1],X[j])
break
else:
if x[j]==data[f,0]:
y[j]=data[f,1]
else:
f+=1
Forensuche hab ich benutzt, aber nichts gefunden, ich hab diverse Tutorien durchgeschaut, aber nichts gefunden. Liegt evtl. auch daran, dass mir keine kurze Umschreibung meines Problems einfällt, mit der man sinnvoll bei Freund Google oder in Foren suchen könnte. Ich zerbrech mir seit 14 Uhr nur über den Schritt den Kopf und komm einfach nicht weiter.. Also ich würde mich über einen kleinen Tipp sehr freuen!
Falls ich irgendwelche wichtigen Informationen vergessen hab - sorry, einfach nachfragen! Ich versuch dann, die so schnell wie möglich nachzuliefern.
Viele Grüße,
Jul