www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenGanzrationale FunktionenAbleitung kub. Spline-Funktion
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Geschichte • Erdkunde • Sozialwissenschaften • Politik/Wirtschaft
Forum "Ganzrationale Funktionen" - Ableitung kub. Spline-Funktion
Ableitung kub. Spline-Funktion < Ganzrationale Fktn < Analysis < Oberstufe < Schule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Ganzrationale Funktionen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Ableitung kub. Spline-Funktion: Frage
Status: (Frage) beantwortet Status 
Datum: 16:37 Di 19.04.2005
Autor: Fabi_K

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Hallo,
ich würde gerne wissen, wie man die Ableitung zu einer kubischen Spline-Funktion bildet.
Die Funktion an sich habe ich hinbekommen.
Ich berechne x(t) und y(t) [bei bedarf auch z(t)]. t läuft von 0 bis t_max.
Für jede Dimension habe ich ein eigenes Polynom 3. Grades.
f(t) ist also das Ergebnis aus x(t) und y(t).
t berechnet sich aus den Punkten, die ich angegeben habe:
[mm] d_{k} [/mm] =  [mm] \wurzel{ x_{k}^{2}+y_{k}^{2}} [/mm]
[mm] t_{1} [/mm] = 1
[mm] t_{k} [/mm] = [mm] t_{k-1} [/mm] + [mm] d_{k-1} [/mm]    (k=2, ... , k=n)
wobei k für einen der Punkte steht, durch die die Splinefunktion laufen soll.

Für die Steigung von f(t) muss ich also f'(t) bilden.

Alternativ würde ich die Steigung aus f(t) und f(t+1) berechnen, was ich jedoch ungern so machen möchte.


Für alle die sich Fragen warum ich das wissen will:
Ich sitze an meiner Abschlussarbei, in die ich ein Programm schreiben soll, welches Punkte miteinander interpoliert. Auf dieser Strecke soll dann ein Auto fahren. Je nach Krümmung der Kurve soll dann die Fliehkraft, die auf das Auto wirkt, berechnet werden. Dafür benötige ich die Steigung von f(t).

[]Programm


Danke Schonmal
  Gruss Fabian

        
Bezug
Ableitung kub. Spline-Funktion: Wie machst du splines
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 20:51 Di 19.04.2005
Autor: leduart

Hallo
>  ich würde gerne wissen, wie man die Ableitung zu einer
> kubischen Spline-Funktion bildet.
>  Die Funktion an sich habe ich hinbekommen.
>  Ich berechne x(t) und y(t) [bei bedarf auch z(t)]. t läuft
> von 0 bis t_max.
>  Für jede Dimension habe ich ein eigenes Polynom 3.
> Grades.
>  f(t) ist also das Ergebnis aus x(t) und y(t).

Verstehe ich richtig: f(t) ist ein Vektor  f(t)= [mm] \vektor{x(t) \\ y(t)} [/mm]
Dann ist der Tangentialvektor t= [mm] \vektor{x'(t) \\ y'(t)} [/mm]

>  t berechnet sich aus den Punkten, die ich angegeben habe:
>  [mm]d_{k}[/mm] =  [mm]\wurzel{ x_{k}^{2}+y_{k}^{2}}[/mm]
>  [mm]t_{1}[/mm] = 1
>  [mm]t_{k}[/mm] = [mm]t_{k-1}[/mm] + [mm]d_{k-1}[/mm]    (k=2, ... , k=n)

[mm] x_{k},y_{k} [/mm] geben die Koordinaten der gegebenen Punkte in deinem gewählten KOOs an?
dann ist [mm] d_{k} [/mm] der Abstand von 0,0? wieso kommst du dann so auf [mm] t_{k}? [/mm] versteh ich nicht!
kannst du schreiben, wie du die Splinefkt herstellst.
Dein Programm müsste ich Quellcode haben, es läuft nicht auf meinem Mac

>  wobei k für einen der Punkte steht, durch die die
> Splinefunktion laufen soll.
>  
> Für die Steigung von f(t) muss ich also f'(t) bilden.
>  
> Alternativ würde ich die Steigung aus f(t) und f(t+1)
> berechnen, was ich jedoch ungern so machen möchte.
>  
>
> Für alle die sich Fragen warum ich das wissen will:
>  Ich sitze an meiner Abschlussarbei, in die ich ein
> Programm schreiben soll, welches Punkte miteinander
> interpoliert. Auf dieser Strecke soll dann ein Auto fahren.
> Je nach Krümmung der Kurve soll dann die Fliehkraft, die
> auf das Auto wirkt, berechnet werden. Dafür benötige ich
> die Steigung von f(t).

aus f' kann man keine Krümmung ausrechnen!
Gruss leduart

Bezug
                
Bezug
Ableitung kub. Spline-Funktion: Erklärung meiner Frage
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 16:43 Mi 20.04.2005
Autor: Fabi_K

Hallo Leduart, danke schonmal für deine Antwort.
>  Verstehe ich richtig: f(t) ist ein Vektor  f(t)=[mm]\vektor{x(t) \\ y(t)}[/mm]

f(t) ist eine Funktion, welche eine X- und eine Y-Koordinate liefert.
Also aus Programmierer Sicht füttere ich die Funktion 'f()' mit dem Wert von 't' und erhalte eine Record(Pascal)/Struct(C) in dem ein X- und ein Y-Wert stehen.
f(t).x und f(t).y

(Bisher kenne ich nur lineare Vektoren)

>  Dann ist der Tangentialvektor t=[mm]\vektor{x'(t) \\ y'(t)}[/mm]

Ich hoffe mal, daß sich f'(t) aus [mm] \vektor{x'(t) \\ y'(t)} [/mm] berechnen lässt. Da liegt ja meine Frage.

>  >  t berechnet sich aus den Punkten, die ich angegeben habe:
>  >  [mm]d_{k}[/mm] =  [mm]\wurzel{ x_{k}^{2}+y_{k}^{2}}[/mm]
>  >  [mm]t_{1}[/mm] = 1

Sorry, da habe ich mich verschrieben.
[mm]t_{1}[/mm] = 0

>  >  [mm]t_{k}[/mm] = [mm]t_{k-1}[/mm] + [mm]d_{k-1}[/mm]    (k=2, ... , k=n)
>  [mm]x_{k},y_{k}[/mm] geben die Koordinaten der gegebenen Punkte in
> deinem gewählten KOOs an?

Genau.

>  dann ist [mm]d_{k}[/mm] der Abstand von 0,0?

[mm] d_{k} [/mm] ist nur ein temporärer Wert, zur Berechnung von [mm] t_{k} [/mm]

> wieso kommst du dann so auf [mm]t_{k}?[/mm] versteh ich nicht!

für t gilt: [mm] t_{1} [/mm] < [mm] t_{k} [/mm] < [mm] t_{n} [/mm]    n ist die Anzahl an Punkten, durch die die Splinefunktion laufen soll.
Durch [mm]d_{k}[/mm] =  [mm]\wurzel{ x_{k}^{2}+y_{k}^{2}}[/mm] ist garantiert, daß [mm] d_{k} [/mm] einen Positiven Wert hat.
[mm] t_{k} [/mm] = [mm] t_{k-1} [/mm] + [mm] d_{k-1} [/mm] dient dazu, daß [mm] t_{k} [/mm] einen größeren Wert als [mm] t_{k-1} [/mm] hat.
Somit ist die Bedingung für t erfüllt.

>  kannst du schreiben, wie du die Splinefkt herstellst.

Für jedes Intervall berechne ich ein Polynom 3. Grades. Damit ich glatte Kurven erhalte, muss die 1. und 2. Ableitung an den Rändern der Intervalle gleich sein.
[mm] f'_{k-1}(t_{k}) [/mm] = [mm] f'_{k}(t_{k}) [/mm]      (k=2, ... , k=n-1)
[mm] f''_{k-1}(t_{k}) [/mm] = [mm] f''_{k}(t_{k}) [/mm]     (die Formel habe ich zwar nirgens gefunden, aber es sollte so stimmen).

Polynom 3. Grades.
[mm] f_{k}(t) [/mm] = [mm] A_{k}(t-t_{k})^{3} [/mm] + [mm] B_{k}(t-t_{k})^{2} [/mm] + [mm] C_{k}(t-t_{k}) [/mm] + [mm] D_{k} [/mm]

Die Koeffizienten für jedes Polynom rechne ich über ein lineares Gleichungssystem aus.
Dieses ist tridiagonal, symmetrisch, diagonal dominant und besitzt positive Diagonalelemente, ist also positiv definit (das alles sagt mir herzlich wenig :-) , aber vielleicht kannst du ja damit was anfangen)

[mm] \vmat{ 2( \Delta t_{1} + \Delta t_{2}) & \Delta t_{2} & & & \\ \Delta t_{2} & 2( \Delta t_{2} + \Delta t_{3}) & \Delta t_{3} & & \\ & \Delta t_{3} & 2( \Delta t_{3} + \Delta t_{4}) & \Delta t_{4} & \\ & ... & ... & ... \\ & & \Delta t_{n-2} & 2( \Delta t_{n-2} + \Delta t_{n-1}) } [/mm] * [mm] \vmat{ u''_{2} \\ u''_{3} \\ u''_{4} \\ ... \\ u''_{n-1} } [/mm] = [mm] \vmat{ 6(\bruch{\Delta u_{2}}{\Delta t_{2}} - \bruch{\Delta u_{1}}{\Delta t_{1}} )-\Delta t_{1}u''_{1} \\ 6(\bruch{\Delta u_{3}}{\Delta t_{3}} - \bruch{\Delta u_{2}}{\Delta t_{2}} ) \\ 6(\bruch{\Delta u_{4}}{\Delta t_{4}} - \bruch{\Delta u_{3}}{\Delta t_{3}} ) \\ ... \\ 6(\bruch{\Delta u_{n-1}}{\Delta t_{n-1}} - \bruch{\Delta u_{n-2}}{\Delta t_{n-2}} )-\Delta t_{n-1}u''_{n} } [/mm]

u''_{1} in der 1. Zeile und u''_{n} in der letzten Zeile sind bekannt und werden gewöhnlich mit 0 vorgegeben.
alle anderen u''_{k} sind unbekannt und können berechnet werden. Aus diesen werden die Koeffizienten der Polynome 3. Grades für jedes Intervall ausgerechnet.



>  Dein Programm müsste ich Quellcode haben, es läuft nicht
> auf meinem Mac

Ich habe das Programm in Borland Delphi geschrieben. Evtl. läuft es auch mit Kylix. Habe ich nicht getestet. Man müsste dann die XLC-Library für die Oberfläche benutzen. Bisher ist das VCL.
[]Quellcode
Wichtig sind die Units uSplineBase.pas und uSplineCompute.pas. Und dort die Methoden 'fCreateMatrix1()', 'fBuild_Ts()', 'pResolveUnknown1()' und 'pComputeKoeffs()'

>  aus f' kann man keine Krümmung ausrechnen!

Ist das jetzt eine Antwort auf meine Frage, oder ist das Wort Krümmung hier falsch gewählt?

mfg
  Fabian

PS: Die Generierung der Formeln als PNG-Bilder gefällt mir richtig gut :-D

Bezug
        
Bezug
Ableitung kub. Spline-Funktion: Ableitung f(t)
Status: (Antwort) fertig Status 
Datum: 19:49 Mi 20.04.2005
Autor: leduart

Hallo Fabian.
Erstens x'(t),y'(t) ist wirklich f'(t). Deine Wahl für [mm] t_{k} [/mm] versteh ich immer noch nicht wirklich, dein Ergebnis, [mm] t_{k}>t_{k-1} [/mm] erreicht man doch auch durch [mm] t_{k}=t_{k-1}+a [/mm] bei irgendeinem pos. Wert von a. oder, um es etwas natürlicher zu machen
[mm] d_{k}= \wurzel{(x_{k}-x_{k-1})^{2}+(y_{k}-y_{k-1})^{2}}. [/mm]
Aber das ist eigentlich egal.
Nur, wenn du f' hast weisst du über die Krümmung noch nichts. f'(t) ist ein Vektor (für festes t das was du einen linearen Vektor nennst. Er gibt die Tangentenrichtung im Pkt x(t), y(t)an. Die Krümmung ist nun definiert als Änderung des Tangentialvektors pro Bogenlänge. Wenn t also die Bogenlänge wäre f''.
Andere Definition der Krümmung: das Reziproke des Radius des Kreises der an der Stelle berührt und die gleiche 2.Ableitung hat. Das ist aber für dich schwierig! Will das dein Lehrer von dir?
Beste Methode, die mir einfällt: Mach aus f' einen Einheitsvektor (Vektor der Länge 1) :
[mm] \vec{e_{T}(t)}=f'(t)/|f'(t)| [/mm] mit |f'(t)|= [mm] \wurzel{x'(t)^{2}+y'(t)^{2}} [/mm]
Der Krümmungsvektor ist dann die Ableitung von  [mm] \vec{e_{T}(t)}/|f'| [/mm] die Krümmung selbst der Betrag davon.
Wenn du das nicht verstehst oder Schwierigkeiten mit dem Differenzieren hast, schreib noch mal!
Allerdings ist die Krümmung an deinen Punkten tk nicht stetig, d.h. sie macht i.A. Sprünge,d.h. dein Auto wird Schwierigkeiten haben. ( Im richtigen Strassenbau gleicht man deshalb nicht mit Splines aus!)
Ich hoff ich konnte dir was helfen.
Gruss leduart


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Ganzrationale Funktionen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]