Spline-Interpolation
Guten Tag an alle,
ich bereite mich für die Numerik-Klausur vor. Da bin ich an eine aufgabe gestoßen, bei der ich nicht weiter komme. es geht um Spline-Interpolation
ich habe folgendes gegeben:
0 1 2 3 4
0 1 4 1 0
ich habe noch angegeben:
geben sie für den interpolierenden spline s das polynom explizit an.
Hinweis: aufgrund der symmetrie gilt: s'(2)=0
könnt ihr mir bitte helfen? es ist sehr sehr wichtig für mich.
danke im vorraus |
ok ich hatte mir das schonmal angeguckt,
man soll als erstes die deltas ausrechnen, das habe ich dann auch gemacht:
n=4
deltas von t dt:
[1,1,1,1]
deltas von f df:
[1,3,-3,-1]
wie mache ich dann weiter? |
Ich nehme an es geht um einen vollständigen kubischen Spline?[attach]20601[/attach]
Kommentar: Sieht viel aus, ist es hier aber nicht. Aber nur, weil die Daten so schön symmetrisch sind und wir nur eine Unbekannte s haben. Hier empfielt es sich vom vorgehen im Workshop in soweit abzuweichen, dass man nur die Grundidee übernimmt, aber nicht alle Variablen die dort gefordert sind ausrechnet.
Bitte erst mal nur überfliegen, die eigentlichen Rechnungen kommen unten
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
|
>> spline3
Es wird ein kubischer Spline berechnet. Spezifizierung folgt.
Beachte: Der Datensatz hat die Form
Knoten: t_0 ,..., t_n
Funktionswerte: f(t_0),...,f(t_n)
Knotenpunkte eingeben: [0,1,2,3,4]
Funktionswerte eingeben: [0,1,4,1,0]
n =
4
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
1 1 1 1
Berechnung der Deltas df_0,...,df_n-1
df =
1 3 -3 -1
Berechnung der Brüche df0/dt0,...,df_n-1/dt_n-1
dfdt =
1 3 -3 -1
Berechnung der Betas b_1,...,b_n-1
b =
1 1 1
Berechnung der Alphas a_1,...,a_n-1 (vorläufig)
a =
4 4 4
Berechnung der Gammas c_1,...c_n-1
c =
1 1 1
Berechnung der rs r_1,...,r_n-1 (vorläufig)
r =
12 0 -12
------------------------------------------------------------------------------
Bitte wählen: 0 - natürlicher Spline
1 - vollst. Spline
Deine Wahl: 1
Bitte s_0 eingeben: 0
Bitte s_n eingeben: 0
------------------------------------------------------------------------------
Berechnung der Alphas a_1,...,a_n-1 (vollst. Spline)
a =
4 4 4
Berechnung der rs r_1,...,r_n-1 (vollst. Spline)
r =
12 0 -12
Aufstellen der Matrix M
M =
4 1 0
1 4 1
0 1 4
Berechnung der Lösung s von Ms=r: s_1,...,s_n-1
3.0000 -0.0000 -3.0000
Der komplette Vektor s:
s =
0 3.0000 -0.0000 -3.0000 0
Matrix der Restriktionen in Newton-Darstellung
RN =
0 0 1.0000 1.0000
1.0000 3.0000 0 -3.0000
4.0000 -0.0000 -3.0000 3.0000
1.0000 -3.0000 2.0000 -1.0000
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
0 0 0 1.0000
4.0000 -12.0000 12.0000 -3.0000
-44.0000 60.0000 -24.0000 3.0000
64.0000 -48.0000 12.0000 -1.0000
Vergleichsfunktion eingeben? (0=ja, 1=nein) 1
Stellen auswerten? (0=ja, 1=nein) |
|
Ohne PC würde ich das aber nicht rechnen. Wir suchen 4 Restriktionen. Wegen der symmetrie der Daten, auf die ja nochmal hingewiesen wird, wissen wir, dass die Restriktionen symmtrisch zu x=2 sind. Daher reduzieren wir die Aufgabe auf die Intervalle [0,1][1,2].
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
|
>> spline3
Es wird ein kubischer Spline berechnet. Spezifizierung folgt.
Beachte: Der Datensatz hat die Form
Knoten: t_0 ,..., t_n
Funktionswerte: f(t_0),...,f(t_n)
Knotenpunkte eingeben: [0,1,2]
Funktionswerte eingeben: [0,1,4]
n =
2
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
1 1
Berechnung der Deltas df_0,...,df_n-1
df =
1 3
Berechnung der Brüche df0/dt0,...,df_n-1/dt_n-1
dfdt =
1 3
Berechnung der Betas b_1,...,b_n-1
b =
1
Berechnung der Alphas a_1,...,a_n-1 (vorläufig)
a =
4
Berechnung der Gammas c_1,...c_n-1
c =
1
Berechnung der rs r_1,...,r_n-1 (vorläufig)
r =
12
------------------------------------------------------------------------------
Bitte wählen: 0 - natürlicher Spline
1 - vollst. Spline
Deine Wahl: 1
Bitte s_0 eingeben: 0
Bitte s_n eingeben: 0
------------------------------------------------------------------------------
Berechnung der Alphas a_1,...,a_n-1 (vollst. Spline)
a =
4
Berechnung der rs r_1,...,r_n-1 (vollst. Spline)
r =
12
Aufstellen der Matrix M
M =
4
Berechnung der Lösung s von Ms=r: s_1,...,s_n-1
3
Der komplette Vektor s:
s =
0 3 0
Matrix der Restriktionen in Newton-Darstellung
RN =
0 0 1 1
1 3 0 -3
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
0 0 0 1
4 -12 12 -3 |
|
Wir sehen, es kommen die gleichen Restriktionen raus. Nun stellen wir mittels Newton-Hermite die beiden Restriktionen auf, die Unbekannte erste Ableitung bei x=1 nennen wir s.
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
R0:=0+0*(x-0)+1*(x-0)^2+(s-2)*(x-0)^2*(x-1);
2 2
R0 := x + (s - 2) x (x - 1)
> R0 := expand(R0);
2 3 2 3
R0 := 3 x + x s - x s - 2 x
> R01 := diff(R0,x);
2 2
R01 := 6 x + 3 x s - 2 s x - 6 x
> R02 := diff(R01,x);
R02 := 6 + 6 s x - 2 s - 12 x
|
|
So, das ganze noch für die zweite Restriktion, dann x=1 einsetzen und die zweiten Ableitungen gleich setzen, s ausrechnen.
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
|
R1:=1+s*(x-1)+(3-s)*(x-1)^2+(s-6)*(x-1)^2*(x-2);
2 2
R1 := 1 + s (x - 1) + (3 - s) (x - 1) + (s - 6) (x - 1) (x - 2)
> R1 := expand(R1);
2 2 3 3
R1 := 16 + 8 s x - 4 s + 27 x - 36 x - 5 x s + x s - 6 x
> R11 := diff(R1,x);
2 2
R11 := 8 s + 54 x - 36 - 10 s x + 3 x s - 18 x
> R12 := diff(R11,x);
R12 := 54 - 10 s + 6 s x - 36 x
> 6+6*s*1-2*s-12*1 = 54-10*s+6*s*1-36*1;
-6 + 4 s = 18 - 4 s
> R6 := solve({-6+4*s = 18-4*s});
R6 := {s = 3}
|
|
Kommen wir auf s=3, wie auch im Programmoutput.
code: |
1:
2:
3:
|
Der komplette Vektor s:
s =
0 3 0 |
|
Nun kannst du selbst einsetzen und die Restriktionen konkret ausrechnen. |
Zitat: |
könnt ihr mir bitte helfen? es ist sehr sehr wichtig für mich. |
Eine Rückmeldung wäre nett gewesen... |