n-dimensionale Spline Interpol < Interpol.+Approx. < Numerik < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:34 Do 21.02.2008 | Autor: | plan.b |
Aufgabe | Gegeben die Stützstellen [mm] (x_{1},x_{2},...,x_{n})_{i} \in \IR^{n} [/mm] und die zugehörigen Werte [mm] y_{i}=f(x_{1},x_{2},...,x_{n}) [/mm] , i=1,2,...
Finde den n-dimensionalen kubischen Spline.
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Implementieren muss ich hierbei den Spline nicht, denn ich nutze folgende Java Klasse (hatte gesucht und dieser erscheint mir sehr gut):
http://www.ee.ucl.ac.uk/~mflanaga/java/PolyCubicSpline.html
(man sollte sich den Konstruktor mal schnell anschauen)
Problem:
Für jede Koordinate (Stützstelle) [mm] (x_{1},x_{2},...,x_{n}) [/mm] habe ich einen y-Wert. Der angegebene Code verlangt aber für n Dimensionen auch ein n-dimensionales y-Array.
Mit Splines kenne ich mich schon ein wenig aus, aber habe ich da etwas falsch verstanden?? Egal in wie vielen Dimensionen ich bin, es sollte doch stets so viele Stützwerte geben wie eben Stützstellen, oder?
Für jeglichen Tipp bin ich sehr dankbar!
Gruss
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:45 Do 21.02.2008 | Autor: | Zneques |
Hallo,
Es gibt leider eine Sache die in deiner Erklärung nicht richtig deutlich wird. Ich vermute aber, dass die daran liegt, dass es dir selbst nicht so klar ist.
Ich sehe zwei Möglichkeiten :
1)
Für deine Funktion gilt:
[mm] f(x_1)=y_1, f(x_2)=y_2, f(x_3)=y_3, [/mm] ...
Deine Funktion ist dann also nur eindimensional. ( [mm] \IR\to\IR [/mm] )
Damit müsstest du den Constructor mit (x,y) initialisieren, wobei
[mm] x=(x_1,x_2, [/mm] ...). D.h. [mm] x[0][0]=x_1, x[0][1]=x_2, x[0][2]=x_3, [/mm] ...
[mm] y_i=interpolate(x) [/mm] wobei x=(x) also nur x[0]=x
2)
Für deine Funktion gilt:
[mm] f(x_1,x_2,x_3,...)=y_1, f(x_{1,2},x_{2,2},x_{3,2},...)=y_2, [/mm] ...
Deine Funktion ist dann also n-dimensional. ( [mm] \IR^n\to\IR [/mm] )
Damit müsstest du den Constructor mit (x,y) initialisieren, wobei
[mm] x=\vektor{(x_1,x_2, ...)\\x_{1,2},x_{2,2},...\\...} [/mm] und y array mit y[1][1]..., y[x-index1.dim][x-index2.dim]..., ... .
[mm] y_i=interpolate(x_1,x_2,x_3,...)
[/mm]
Ciao.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:15 Do 21.02.2008 | Autor: | plan.b |
Hi,
und besten Dank für die Antwort!
Es ist genau der Fall den du unter 2) schilderst; zu [mm] \vec{x}_{i}=(x_{1},x_{2},...x_{n})_{i} [/mm] existiert genau ein [mm] y_{i}. [/mm] Es ist eine [mm] \IR^{n}\to\IR [/mm] Abbildung.
Wie die x-Vektoren aussehen müssen hast du richtig angegeben. Wie aber muss das y-Feld aussehen? Das ist mir aus deiner Antwort nicht ganz klar.
btw: hast recht, so total klar ist mir die Sache wirklich nicht.
Denn bspw. für n=3 und i=10 verlangt der Konstruktor [mm] 10^{3} [/mm] y-Werte. Ich habe aber nur 10. Also ich will nicht alle Kombinationen der Komponenten aus den [mm] \vec{x}_{i}.
[/mm]
Hoffe ich konnte es diesmal besser erklären.
Gruss
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 20:32 Do 21.02.2008 | Autor: | Zneques |
Ich möchte dich ja nicht in tiefe Depressionen stürzen, aber ich glaube deine vage Vermutung ist richtig.
Für Einträge im y-Array gilt:
[mm] y[a][b][c]...=f(x_a,x_{b,2},x_{c,3},...)
[/mm]
Die Klasse verlangt also ein vollständiges Gitter zum Interpolieren.
Du musst also für alle Kombinationen der Komponenten aus den [mm] \vec{x}_{i} [/mm] die y-Werte angeben.
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 20:40 Do 21.02.2008 | Autor: | plan.b |
artet mittlerweile in Kopfschmerzen aus =)
Trotzdem Danke dass du dir Gedanken darum gemacht hast!
Hast du vielleicht 'ne alternative Idee zu meinem multidim. Spline-Ansatz?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 08:18 Fr 22.02.2008 | Autor: | clwoe |
machs in Matlab, da bist du zehnmal schneller
Java oder so ist dafür völlig ungeeignet!
Gruß,
clwoe
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:20 So 24.02.2008 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|