www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de