AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Interpolation mit Splinefunktionen

Ein Thema von Dipl Phys Ernst Winter · begonnen am 13. Mai 2009 · letzter Beitrag vom 21. Mai 2009
Antwort Antwort
Seite 1 von 3  1 23   
Dipl Phys Ernst Winter

Registriert seit: 14. Apr 2009
Ort: Jena
103 Beiträge
 
Delphi 3 Professional
 
#1

Interpolation mit Splinefunktionen

  Alt 13. Mai 2009, 20:01
Interpolation mit Splinefunktionen
Die Interpolation einer Funktion y = f(x), die mit n + 1 Stützstellen x0, x1,... xn definiert ist, beginnt mit wachsendem n zwischen den Stützstellen zu oszillieren (Satz von Faber).
Aus dieser Erkenntnis entwickelten sich die Verfahren zur Interpolation mit Splinefunktionen. Der Name ist aus der englischen Bezeichnung eines Zeichengerätes mit einem biegsamen Stahlband hergeleitet.
Kubische Splinefunktionen
Am häufigsten werden kubische Splinefunktionen verwendet, die mit stetiger Steigung und Krümmung durch die Stützpunkte gehen.
Durch die Stützpunkte und die an den inneren Stützpunkten zu fordernde Gleichheit von Funktionswert, 1. und 2. Ableitung stehen 4n-2 Gleichungen zur Berechnung der 4n Koeffizienten bereit. Für die 2 fehlende sind 2 Randbedingungen hinzuzufügen.

Ich habe alles notwendige in der Unit Spline zusammengefasst, sie exportiert
- eine Funktionen zur Erzeugung von Splinefunktionen und
- Funktionen zur Berechnung der Funktionswerte, der Werten der 1. und 2. Ableitung und einer Stammfunktion..
Delphi-Quellcode:
function MakeSpline(Flag, n: integer; var P: array of TP;
                    c0, cn: extended; var K: array of TK):boolean;
erzeugt das Koeffizientenarray K einer Splinefunktion aus n Stützstellen und zwei Randbedingungen. Flag, c0 und cn legen die Randbedingungen fest:
Flag Art der Randbedingungen
0 Natürliche Spline: c0, yn'' = cn
1 Spline mit s'(0) = c0, s''(n) = cn
2 Spline mit s'(0) = c0, s'(n) = cn
3 Spline mit s'(n) = cn, s''(0) = c(0)
4 Periodische Spline
In K gibt die Funktion die Koeffizienten des Ansatzes (1) zurück. Mit MakeSpline=true wird angezeigt, dass die Koeffizienten in K gültig sind. Bei MakeSpline=false ist ein Fehler aufgetreten.
Delphi-Quellcode:
function Spl(n: integer; x: extended; var P: array of TP;
                                       var K: array of TK): extended;
function SplAbl1(n: integer; x: extended; var P: array of TP;
                                          var K: array of TK): extended;
function SplAbl2(n: integer; x: extended; var P: array of TP;
                                          var K: array of TK): extended;
function SplStamm(n: integer; x: extended; var P: array of TP;
                          var K: array of TK; var Stamm: array of extended): extended;
berechnen Werte von Splinefunktionen bzw. ihren 1. und 2. Ableitungen. Die Spline wird mit den Arrays P der Stützstellen und K der Koeffizienten übergeben. Das aufrufenden Programms hat dafür zu sorgen, dass x im Definitionsbereich [x0, xn] liegt, wobei geringe Bereichsüberschreitungen durch Rundungsfehler zulässig sind.
Man kann eine Splinefunktion analytisch Integrieren und gewinnt so die zugehörige Stammfunktion zur Berechnung bestimmter Integrale. Dies ist ein effektives Verfahren zur numerischen Integration.
Angehängte Dateien
Dateityp: zip kubspline_612.zip (221,5 KB, 269x aufgerufen)
Dateityp: zip profile_776.zip (479,5 KB, 172x aufgerufen)
Autor: DP Ernst Winter
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#2

Re: Interpolation mit Splinefunktionen

  Alt 14. Mai 2009, 13:02
Und was willst du mit dem Beitrag jetzt sagen? Wenn das in die Code-LIB soll dann solltest du schon den Quellcode anhängen, bzw. den Quellcode im Post mit beifügen. Ansonsten hilt der Beitrag nix und ist nur Werbung.

Zu Splines: Der Name kommt aus dem Schiffsbau.
Von welchen Splines sprichst du? Anscheinend nicht von Beziére-Splines (die interpolieren nicht, sondern approximieren nur). Also B-Splines oder NURBS etc.? (solltest du eventl. erwähnen).
Deine Programme hab ich jetzt aber nicht getestet.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.378 Beiträge
 
#3

Re: Interpolation mit Splinefunktionen

  Alt 14. Mai 2009, 13:10
Zitat von brechi:
Deine Programme hab ich jetzt aber nicht getestet.
Wäre vielleicht besser gewesen, dann hättest du vielleicht gemerkt, dass es sich um selbstextrahierende Archive handelt. Erst gucken, dann pupen.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
15.459 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Interpolation mit Splinefunktionen

  Alt 14. Mai 2009, 13:16
Zitat von brechi:
Und was willst du mit dem Beitrag jetzt sagen? Wenn das in die Code-LIB soll dann solltest du schon den Quellcode anhängen, bzw. den Quellcode im Post mit beifügen. Ansonsten hilt der Beitrag nix und ist nur Werbung.
Offenbar bist Du mit dem falschen Fuß aufgestanden. Die Sourcen sind dabei und für diesen ätzenden Tonfalls gibt's derzeit echt keinen Grund.
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
jbaertle

Registriert seit: 2. Mär 2007
Ort: München
20 Beiträge
 
Delphi 7 Professional
 
#5

Re: Interpolation mit Splinefunktionen

  Alt 14. Mai 2009, 13:29
Wer sich für weitere (allerdings etwas angestaubte, aber funktionsfähige) numerische Routinen interessiert, findet unter efg's Delphi Math Functions doch tatsächlich einen Link zu einer frühen Version der Numerical Recipes in Pascal (nicht Delphi).
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.026 Beiträge
 
Delphi XE3 Enterprise
 
#6

Re: Interpolation mit Splinefunktionen

  Alt 14. Mai 2009, 14:01
Sowas kann man immer mal wieder gebrauchen. Hatte mal Temperaturwerte zu interpolieren.

Ein praktisches Problem habe ich bei interpolationsroutinen aber meist gehabt. Die Beispiele waren immer mit festgelegten Arrays und nie mit dynamischen. Leider weiss man oft einfach noch nicht wie lange die Routinen Messwerte sammeln soll. Da mathematische Routinen Geduld und Knobelgeist erforden ist das sicher etwas für die CodeLib !

// Grüße Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

Re: Interpolation mit Splinefunktionen

  Alt 14. Mai 2009, 14:48
Tja lag wohl an der EXE-warum ich des nicht geladen habe
Wie wärs mit nem ZIP-Archiv?
  Mit Zitat antworten Zitat
Dipl Phys Ernst Winter

Registriert seit: 14. Apr 2009
Ort: Jena
103 Beiträge
 
Delphi 3 Professional
 
#8

Re: Interpolation mit Splinefunktionen

  Alt 14. Mai 2009, 15:07
"brechi"
Zitat:
Wie wärs mit nem ZIP-Archiv?
Ich halte ein selbstentpackendes Archiv für allgemeiner.
Für ein Zip-Archiv wird ein Entpacker gebraucht. Ob den wirklich jeder hat?
Autor: DP Ernst Winter
  Mit Zitat antworten Zitat
Dipl Phys Ernst Winter

Registriert seit: 14. Apr 2009
Ort: Jena
103 Beiträge
 
Delphi 3 Professional
 
#9

Re: Interpolation mit Splinefunktionen

  Alt 14. Mai 2009, 15:14
"mschaefer"
Zitat:
Leider weiss man oft einfach noch nicht wie lange die Routinen Messwerte sammeln soll.
Immer erst schön sammeln und dann Interpolieren.

NP: Messwerte sollte man meistens Approximieren statt sie zu Interpolieren!
Autor: DP Ernst Winter
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#10

Re: Interpolation mit Splinefunktionen

  Alt 14. Mai 2009, 15:21
Du kannst es ja zusätzlich noch als ZIP-Anhängen, dann würd ich mir das auch noch anschauen, sobla ich zu Hause bin. Interessant ist es auf jeden Fall und wenn der Source dabei sein sollte auch passend für die CodeLib.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf