Spline-Funktion

MgnsRb shared this question 4 years ago
Answered

Wie kann ich aus SPline Funktionen Frunktionswerte ziehen, wenn ich einfach bspw. s(-120) eingebe kommt ein Wert in negativer Millionen höhe raus wobei es eigentluch ein positiver Wert zwischen 1 und 0 sein sollte.


Vielen Dank im Vorraus

Comments (8)

photo
1

Please post your file

photo
1

Here it is

photo
1

Du willst einen Funktionswert abfragen ( bspw. s(-120) ).

Das geht nur mit Funktionen. Spline() ist ähnlich wie Kurve() ist keine Funktion.

Aber man kann sie (oft resp. Teile davon) in eine Funktion umwandeln. Dies indem man auf ihr sehr viele Punkte setzt und diese Punkte an den Befehl TrendPoly() übergibt.

  • l1 = Folge(Punkt(s, n), n, 0, 1, 1 / 500)
  • p(x) = TrendPoly(l1, 18)

damit ergibt p(-120) den Wert 0.036434306934607

Mit Erhöhung des Ranges in TrendPoly(<PunkteListe>,<Rang>) wird die Aproximation genauer braucht aber mehr Zeit und kann auch ins Schwingen geraten.

photo
1

Vielen vielen Dank für Ihre erneute Antwort. Sie helfen mir wirklich weiter.


Ich hätte nur noch eine letzte Frage könnten Sie mir Ihren Befehl "l1 = Folge(Punkt(s, n), n, 0, 1, 1 / 500)" erkären er lässt sich mir nicht wirklich erklären.

Vielen Dank im Vorraus.

photo
photo
1

l1 = Folge(Punkt(s, n), n, 0, 1, 1 / 500)

Zähle die Variable "n" hoch bei 0 beginnend bis zum Wert 1 in Schritten von 1/500 (die Variable "n" ist nur innerhalb von Folge gültig)

Mit jedem Wert von n führe den ersten Ausdruck in Folge(Punkt(s,n),.......) aus. Das ist ein Punkt mit den Koordinaten (x,y) der auf der Spline (s) liegt und den Pfadparameter "n" hat (also 0/500, 1/500, 2/500 usw bis 500/500). Das entspicht 501 Punkten auf der Spline (gleichmässig verteilt) resp. 500 Zwischenräumen zwischen den Punkten.

Der Pfadparameter gibt den Ort eines Punktes auf einem Pfad an (in unserm Falls die Spline). 0 entspricht dem "linken" Ende, 0.5 entspricht der Mitte, 1 entspricht dem "rechten Ende". Die Punkte dazwischen haben einen (meist) proportionalen Wert zB 1/3 am Ende des ersten Drittel.

photo
1

Es tut mir leid, dass ich Sie nochmals störe, aber wenn 0 der Start wert und 1 der Endwert ist. Warum werden Punkte im Intervall der ganzen Spline Funktion und nicht nur I, Intervall 0 bis 1 gezogen und wie könnte ich nur aus einem bestimmten Intervall Punkte ziehen.

Vielen Dank für Ihre Geduld mit mir.

photo
photo
1

Beim Pfadparameter handelt sich nicht um einen ganzzahligen Intervall. Vielmehr ist es ein beliebiger Wert zwischen 0 und 1.

Im Besipiel ist der Interwall von n gleich 0.002 = 1/500 (also ebenfalls nicht 1, da der letzte Parameter in Folge() verwendet wurde, der, wenn man ihn weggelassen hätte, per deaufault = 1 gewesen wäre).

Wie könnte ich nur Punkte aus einem bestimmten Intervall ziehen: zB: Folge(.......,n,0.5,0.75,1/500) das wären die Punkte im 3ten viertel der Spline.

Dieses Forum ist dazu da um Fragen zu stellen. Niemand braucht sich dafür zu entschuldigen. Auch das Nachhaken ist erwünscht.

photo
1

Nachtrag zur Zusatzfrage "bestimmter Intervall":

Man könnte zwei verschiebbare Punkte auf die Spline setzen (zB mit den Namen: L und R) und diese links und rechts vom gewünschten Teilstück setzen (durch verschieben). Dann könnte man die Punkte zwischen L und R (beide inklusive) wie folgt erzeugen:

Folge(Punkt(s,n), n, PfadParameter(L), PfadParameter(R), 1/500)

(An dieser Stelle stand mal ein inzwischen gelöschter Unsinn meinerseits)

Note: Dann, wenn ein benannter Punkt (also ein Punkt mit einem eigenen Namen) per Tool oder dem Befehl Punkt(<Pfad>) erzeugt wurde, dann merkt sich GGB intern zum Namen des Punktes auch den Pfad-Namen. Der Befehl PfadParameter(<Punkt-Name>) "weiss" dann welcher Pfad gemeint ist. Ein bestimmter Punkt in einer Liste hat keinen Namen. Selbst wenn er auf einem Pfad erzeugt wurde hat GGB keinen Bezug zu diesem Pfad der Befehl PfadParameter(Element(<Liste>,<Index>)) erzeugt dann "undefiniert".

© 2023 International GeoGebra Institute