[WS] Spline-Interpolation - Beispiele

Neue Frage »

tigerbine Auf diesen Beitrag antworten »
[WS] Spline-Interpolation - Beispiele
Gliederung


Kleine Programmsammlung
  1. Linearer Spline

  2. Quadratischer Spline

  3. Kubischer Spline

  4. Lokaler kubischer Spline


Splinewettkampf (trig. Funtkion)
  1. Linearer Spline

  2. Quadratischer Spline

  3. Kubischer Spline


Das ganze noch einmal - mit B-Splines
  1. Splinewettkampf

  2. Linearer B-Spline

  3. Quadratischer B-Spline

  4. Kubischer B-Spline


Unterschied Funktion und Kurve
  1. Interpolierende Funktion

  2. Interpolierende Kurve 1

  3. Interpolierende Kurve 2



Auswirkungen geänderter Parameter
  1. Ändern eines Datensatzes

  2. Ändern eines Koeffizienten


Einfaches Beispiel für kubischen Spline

Drei Punkte mit Splines verbinden
tigerbine Auf diesen Beitrag antworten »
1. Linearer Spline
Im Anhang dieses Beitrags befindet sich ein Matlab-file (spline1.m) zur Berechnung von linearen Splines. Es ist als eine Art "Rechenknecht" für die im Theorie-Teil aufgeführte Berechnungsvorschrift gedacht.

Ein Beispiel

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:
Es wird ein linearer Spline berechnet.
 
Beachte: Der Datensatz hat die Form
         Knoten:           t_0 ,...,  t_n
         Funktionswerte: f(t_0),...,f(t_n)
 
Knotenpunkte eingeben:   [0,1,2,3]
Funktionswerte eingeben: [2,3,5,4]
 
n =
     3
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
     1     1     1
 
Berechnung der Deltas df_0,...,df_n-1
df =
     1     2    -1
 
Matrix der Restriktionen in Newton-Darstellung
RN =
     2     1
     3     2
     5    -1
 
Matrix der Restriktionen in Monom-Darstellung: 1,x
RM =
     2     1
     1     2
     7    -1



Werden quadratische Polynome reproduziert?
Nein, es stehen ja nur lineare Polynome zur Verfügung.

Werden kubische Polynome reproduziert?
Nein, es stehen ja nur lineare Polynome zur Verfügung.
tigerbine Auf diesen Beitrag antworten »
2. Quadratischer Spline
Im Anhang dieses Beitrags befindet sich ein Matlab-file (spline2.m) zur Berechnung von quadratischen Splines. Es ist als eine Art "Rechenknecht" für die im Theorie-Teil aufgeführte Berechnungsvorschrift gedacht.

Wir wollen nun einmal schauen, ob nun auch quadratische Funktionen reproduziert werden können.

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:
Es wird ein quadratischer Spline berechnet.
 
Beachte: Der Datensatz hat die Form
         Spline-Knoten:       t_0,...,t_n
         Spline-Werte:        u_0,...,u_n
 
         IP-Stellen:          r_1 ,...,  r_n
         IP-Funktionswerte:   f(r_1),...,f(r_n)
 
Spline-Knoten eingeben :      t=[-1,0,1]
u_0 eingeben:               u_0=1
u_n eingeben:               u_n=1
 
IP-Stellen eingeben:        r=[-0.5,0.5]
IP-Funktionswerte eingeben: f=[0.25,0.25]
 
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
     1     1
 
Berechnung der Deltas a_1,...,a_n
a =
          0.5          0.5
 
Berechnung der Deltas b_0,...,b_n
b =
          0.5          0.5
 
Berechnung der beta_0,...,beta_n-2
beta =
     1
 
Berechnung der alpha_1,...,alpha_n-1
alpha =
     6
 
Berechnung der gamma_1,...,gamma_n-1
gamma =
     1
 
Berechnung der y_1,...,y_n-1
y =
     0
 
Aufstellen der Matrix M
M =
     6
 
Berechnung der Lösung u von Mu=y: u_1,...,u_n-1
     0
 
Der komplette Vektor u: 
u =
     1     0     1
 
Matrix der Restriktionen in Newton-Darstellung
RN =
            1         -1.5            1
            0          0.5            1
 
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²
RM =
     0     0     1
     0     0     1
 
Vergleichsfunktion eingeben? (0=ja, 1=nein) 0
 
Funktion eingeben. Variabel vt verwenden, Beispiel: vt.^2: vt.^2



Die Restriktionen lauten also:







Werden auch lineare Polynome reproduziert?
Ja.

Werden auch noch kubische Polynome reproduziert?
Nein, es stehen ja nur quadratische Funktionen zur Verfügung.
tigerbine Auf diesen Beitrag antworten »
3. Kubischer Spline
Zitat:
Workshop-Spline-Interpolation-Theorie
  • Natürlicher Spline



    Die Bedingung wird deswegen als natürlich bezeichnet, weil die zweite Ableitung im Wesentlichen die Krümmung einer Funktion darstellt. Daher hat dieser Spline die geringste Krümmung.

    Sie erweist sich allerdings als schlecht, da hier dann z.B. die Funktion nicht durch einen kubischen Spline reproduziert wird.

  • Vollständiger Spline



    Sofern diese Werte bekannt sind, wird ein kubisches Polynom durch den Spline reproduziert.


Versuchen wir das einmal zu verifizieren.










1. Durchlauf
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:
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]
Funktionswerte eingeben: [0,1,8,27]
 
n =
     3
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
     1     1     1
 
Berechnung der Deltas df_0,...,df_n-1
df =
     1     7    19
 
Berechnung der Brüche df0/dt0,...,df_n-1/dt_n-1
dfdt =
     1     7    19
 
 
 
Berechnung der Betas   b_1,...,b_n-1
b =
     1     1
 
Berechnung der Alphas  a_1,...,a_n-1 (vorläufig)
a =
     4     4
 
Berechnung der Gammas  c_1,...c_n-1
c =
     1     1
 
Berechnung der rs      r_1,...,r_n-1 (vorläufig)
r =
    24    78
 
------------------------------------------------------------------------------
Bitte wählen: 0 - natürlicher Spline
              1 - vollst. Spline
 
Deine Wahl: 0
------------------------------------------------------------------------------
 
Berechnung der Alphas  a_1,...,a_n-1 (nat. Spline)
a =
          3.5          3.5
 
Berechnung der rs      r_1,...,r_n-1 (nat. Spline)
r =
         22.5         49.5
 
Aufstellen der Matrix M
M =
          3.5            1
            1          3.5
 
Berechnung der Lösung s von Ms=r: s_1,...,s_n-1
          2.6         13.4
 
Der komplette Vektor s: 
s =
          0.2          2.6         13.4         21.8
 
Matrix der Restriktionen in Newton-Darstellung
RN =
            0          0.2          0.8          0.8
            1          2.6          4.4            2
            8         13.4          5.6         -2.8
 
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
            0          0.2            0          0.8
         -1.2          3.8         -3.6            2
         37.2        -53.8         25.2         -2.8
 



Sieht doch gar nicht so schlecht aus. Dennoch wird die Funktion nicht reproduziert (), wie eine genaue Betrachtung zeigt:


natürlicher kubischer Spline










2. Durchlauf
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:
 
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]
Funktionswerte eingeben: [0,1,8,27]
 
n =
     3
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
     1     1     1
 
Berechnung der Deltas df_0,...,df_n-1
df =
     1     7    19
 
Berechnung der Brüche df0/dt0,...,df_n-1/dt_n-1
dfdt =
     1     7    19
 
 
 
Berechnung der Betas   b_1,...,b_n-1
b =
     1     1
 
Berechnung der Alphas  a_1,...,a_n-1 (vorläufig)
a =
     4     4
 
Berechnung der Gammas  c_1,...c_n-1
c =
     1     1
 
Berechnung der rs      r_1,...,r_n-1 (vorläufig)
r =
    24    78
 
------------------------------------------------------------------------------
Bitte wählen: 0 - natürlicher Spline
              1 - vollst. Spline
 
Deine Wahl: 1
Bitte s_0 eingeben: 0
Bitte s_n eingeben: 27
------------------------------------------------------------------------------
 
Berechnung der Alphas  a_1,...,a_n-1 (vollst. Spline)
a =
     4     4
 
Berechnung der rs      r_1,...,r_n-1 (vollst. Spline)
r =
    24    51
 
Aufstellen der Matrix M
M =
     4     1
     1     4
 
Berechnung der Lösung s von Ms=r: s_1,...,s_n-1
            3           12
 
Der komplette Vektor s: 
s =
            0            3           12           27
 
Matrix der Restriktionen in Newton-Darstellung
RN =
            0            0            1            1
            1            3            4            1
            8           12            7            1
 
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
            0            0 -4.4409e-016            1
  2.6645e-015 -7.1054e-015  6.6613e-015            1
  1.0658e-014 -7.1054e-015  1.7764e-015            1
 



Nun wird die Funktion reproduziert, es gilt . (Wer es nicht glaubt, möge es von Hand nachrechnen. Augenzwinkern )


vollständiger kubischer Spline








Werden auch Polynome von Grad 4 reproduziert?
Nein, denn der es stehen nur kubische Polynome zur Verfügung.
tigerbine Auf diesen Beitrag antworten »
4. Lokal kubischer Spline
Wieder dieselben Splineknoten, Funktionswerte und Deltas






























Den Vektor s braucht man hier nicht über ein LGS zu berechnen, sondern das sind hier die Werte der ersten Ableitung der Funktion in den Splineknoten:
















Damit erhält man die Restriktionen:











tigerbine Auf diesen Beitrag antworten »
Splinewettkampf
Nun sollen die in (1)-(3) vorgestellten Splines miteinander verglichen werden. Dazu wählen wir die Funktion



 
 
tigerbine Auf diesen Beitrag antworten »
1. Linearer Spline
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:
Es wird ein linearer Spline berechnet.
 
Beachte: Der Datensatz hat die Form
         Knoten:           t_0 ,...,  t_n
         Funktionswerte: f(t_0),...,f(t_n)
 
Knotenpunkte eingeben:   [0.05,0.06,0.075,0.09,0.13,0.21,0.4]
Funktionswerte eingeben: [0.0456,-0.0491,0.0520,-0.0894,0.1283,-0.2097,0.2394]
 
n =
     6
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
         0.01        0.015        0.015         0.04         0.08         0.19
 
Berechnung der Deltas df_0,...,df_n-1
df =
      -0.0947       0.1011      -0.1414       0.2177       -0.338       0.4491
 
Matrix der Restriktionen in Newton-Darstellung
RN =
       0.0456        -9.47
      -0.0491         6.74
        0.052      -9.4267
      -0.0894       5.4425
       0.1283       -4.225
      -0.2097       2.3637
 
Matrix der Restriktionen in Monom-Darstellung: 1,x
RM =
       0.5191        -9.47
      -0.4535         6.74
        0.759      -9.4267
     -0.57922       5.4425
      0.67755       -4.225
     -0.70607       2.3637
 
Vergleichsfunktion eingeben? (0=ja, 1=nein) 0
 
Funktion eingeben. Variable vt verwenden, Beispiel: vt.^2: vt.*sin(1./vt)
tigerbine Auf diesen Beitrag antworten »
2. Quadratischer Spline
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:
Es wird ein quadratischer Spline berechnet.
 
Beachte: Der Datensatz hat die Form
         Spline-Knoten:       t_0,...,t_n
         Spline-Werte:        u_0,...,u_n
 
         IP-Stellen:          r_1 ,...,  r_n
         IP-Funktionswerte:   f(r_1),...,f(r_n)
 
Spline-Knoten eingeben :      t=[0.025,0.055,0.0675,0.0825,0.11,0.17,0.305,0.45]
u_0 eingeben:               u_0=0.0186
u_n eingeben:               u_n=0.3578
 
IP-Stellen eingeben:        r=[0.05,0.06,0.075,0.09,0.13,0.21,0.4]
IP-Funktionswerte eingeben: f=[0.0456,-0.0491,0.0520,-0.0894,0.1283,-0.2097,0.2394]
 
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
         0.03       0.0125        0.015       0.0275         0.06        0.135        0.145
 
Berechnung der Deltas a_1,...,a_n
a =
        0.005       0.0075       0.0075         0.02         0.04        0.095         0.05
 
Berechnung der Deltas b_0,...,b_n
b =
        0.025        0.005       0.0075       0.0075         0.02         0.04        0.095
 
Berechnung der beta_0,...,beta_n-2
beta =
       6.6667          120       66.667        96.97       33.333       17.593
 
Berechnung der alpha_1,...,alpha_n-1
alpha =
       513.33       413.33        369.7       153.03       74.074       35.357
 
Berechnung der gamma_1,...,gamma_n-1
gamma =
       53.333       66.667       13.636       8.3333       3.1189       13.103
 
Berechnung der y_1,...,y_n-1
y =
      -5.5467         -2.5      -2.5233      -6.7675       2.1726      -4.8303
 
Aufstellen der Matrix M
M =
       513.33       53.333            0            0            0            0
          120       413.33       66.667            0            0            0
            0       66.667        369.7       13.636            0            0
            0            0        96.97       153.03       8.3333            0
            0            0            0       33.333       74.074       3.1189
            0            0            0            0       17.593       35.357
 
Berechnung der Lösung u von Mu=y: u_1,...,u_n-1
    -0.010576   -0.0022043    -0.004796    -0.044243     0.056169     -0.16456
 
Der komplette Vektor u: 
u =
       0.0186    -0.010576   -0.0022043    -0.004796    -0.044243     0.056169     -0.16456       0.3578
 
Matrix der Restriktionen in Newton-Darstellung
RN =
       0.0186         1.08      -410.51
    -0.010576      -7.7048       1116.6
   -0.0022043       7.2272      -986.67
    -0.004796      -11.281       492.31
    -0.044243       8.6271      -173.84
     0.056169      -6.6467       52.754
     -0.16456       4.2523      -12.995
 
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²
RM =
     -0.52153       31.868      -410.51
        4.098      -136.11       1116.6
      -5.4851       147.83      -986.67
       4.5812      -96.203       492.31
      -3.4791       50.349      -173.84
       3.0694      -26.693       52.754
      -3.0469       13.414      -12.995
 
Vergleichsfunktion eingeben? (0=ja, 1=nein) 0
 
Funktion eingeben. Variable vt verwenden, Beispiel: vt.^2: vt.*sin(1./vt)
tigerbine Auf diesen Beitrag antworten »
3. Kubischer Spline
natürlicher kub. Spline

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:
91:
92:
93:
94:
95:
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.05,0.06,0.075,0.09,0.13,0.21,0.4]
Funktionswerte eingeben: [0.0456,-0.0491,0.0520,-0.0894,0.1283,-0.2097,0.2394]
 
n =
     6
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
         0.01        0.015        0.015         0.04         0.08         0.19
 
Berechnung der Deltas df_0,...,df_n-1
df =
      -0.0947       0.1011      -0.1414       0.2177       -0.338       0.4491
 
Berechnung der Brüche df0/dt0,...,df_n-1/dt_n-1
dfdt =
        -9.47         6.74      -9.4267       5.4425       -4.225       2.3637
 
 
 
Berechnung der Betas   b_1,...,b_n-1
b =
        0.015        0.015         0.04         0.08         0.19
 
Berechnung der Alphas  a_1,...,a_n-1 (vorläufig)
a =
         0.05         0.06         0.11         0.24         0.54
 
Berechnung der Gammas  c_1,...c_n-1
c =
         0.01        0.015        0.015         0.04         0.08
 
Berechnung der rs      r_1,...,r_n-1 (vorläufig)
r =
     -0.22395      -0.1209     -0.88629       0.7992       -1.841
 
------------------------------------------------------------------------------
Bitte wählen: 0 - natürlicher Spline
              1 - vollst. Spline
 
Deine Wahl: 0
------------------------------------------------------------------------------
 
Berechnung der Alphas  a_1,...,a_n-1 (nat. Spline)
a =
       0.0425         0.06         0.11         0.24          0.5
 
Berechnung der rs      r_1,...,r_n-1 (nat. Spline)
r =
    -0.010875      -0.1209     -0.88629       0.7992      -2.1246
 
Aufstellen der Matrix M
M =
       0.0425         0.01            0            0            0
        0.015         0.06        0.015            0            0
            0         0.04         0.11        0.015            0
            0            0         0.08         0.24         0.04
            0            0            0         0.19          0.5
 
Berechnung der Lösung s von Ms=r: s_1,...,s_n-1
     -0.34505      0.37897      -9.2308       7.5962      -7.1358
 
Der komplette Vektor s: 
s =
      -14.032     -0.34505      0.37897      -9.2308       7.5962      -7.1358       7.1134
 
Matrix der Restriktionen in Newton-Darstellung
RN =
       0.0456      -14.032       456.25        45625
      -0.0491     -0.34505       472.34       -59760
        0.052      0.37897      -653.71        44451
      -0.0894      -9.2308       366.83      -7824.7
       0.1283       7.5962      -147.77       1392.3
      -0.2097      -7.1358       49.997      -131.57
 
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
      -4.9559       328.15      -6843.7        45625
       17.807      -810.01        12126       -59760
      -26.157       948.56       -11322        44451
       11.952      -321.74       2792.5      -7824.7
      -8.2976       145.56      -802.13       1392.3
       5.8146      -56.041       157.89      -131.57
 
Vergleichsfunktion eingeben? (0=ja, 1=nein) 0
 
Funktion eingeben. Variable vt verwenden, Beispiel: vt.^2: vt.*sin(1./vt)



vollständiger kub. Spline

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:
91:
92:
93:
94:
95:
96:
97:
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.05,0.06,0.075,0.09,0.13,0.21,0.4]
Funktionswerte eingeben: [0.0456,-0.0491,0.0520,-0.0894,0.1283,-0.2097,0.2394]
 
n =
     6
------------------------------------------------------------------------------
Berechnung der Deltas dt_0,...,dt_n-1
dt =
         0.01        0.015        0.015         0.04         0.08         0.19
 
Berechnung der Deltas df_0,...,df_n-1
df =
      -0.0947       0.1011      -0.1414       0.2177       -0.338       0.4491
 
Berechnung der Brüche df0/dt0,...,df_n-1/dt_n-1
dfdt =
        -9.47         6.74      -9.4267       5.4425       -4.225       2.3637
 
 
 
Berechnung der Betas   b_1,...,b_n-1
b =
        0.015        0.015         0.04         0.08         0.19
 
Berechnung der Alphas  a_1,...,a_n-1 (vorläufig)
a =
         0.05         0.06         0.11         0.24         0.54
 
Berechnung der Gammas  c_1,...c_n-1
c =
         0.01        0.015        0.015         0.04         0.08
 
Berechnung der rs      r_1,...,r_n-1 (vorläufig)
r =
     -0.22395      -0.1209     -0.88629       0.7992       -1.841
 
------------------------------------------------------------------------------
Bitte wählen: 0 - natürlicher Spline
              1 - vollst. Spline
 
Deine Wahl: 1
Bitte s_0 eingeben: -7.2487
Bitte s_n eingeben: 2.6013
------------------------------------------------------------------------------
 
Berechnung der Alphas  a_1,...,a_n-1 (vollst. Spline)
a =
         0.05         0.06         0.11         0.24         0.54
 
Berechnung der rs      r_1,...,r_n-1 (vollst. Spline)
r =
     -0.11522      -0.1209     -0.88629       0.7992      -2.0491
 
Aufstellen der Matrix M
M =
         0.05         0.01            0            0            0
        0.015         0.06        0.015            0            0
            0         0.04         0.11        0.015            0
            0            0         0.08         0.24         0.04
            0            0            0         0.19         0.54
 
Berechnung der Lösung s von Ms=r: s_1,...,s_n-1
      -2.4983      0.96944      -9.4395       7.5518      -6.4517
 
Der komplette Vektor s: 
s =
      -7.2487      -2.4983      0.96944      -9.4395       7.5518      -6.4517       2.6013
 
Matrix der Restriktionen in Newton-Darstellung
RN =
       0.0456      -7.2487      -222.13        91930
      -0.0491      -2.4983       615.89       -66706
        0.052      0.96944      -693.07        46148
      -0.0894      -9.4395       372.05      -7982.9
       0.1283       7.5518      -147.21       1492.2
      -0.2097      -6.4517       46.397      -237.61
 
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
      -13.937       796.37       -14931        91930
       20.329       -916.9        13624       -66706
      -27.282       987.51       -11769        46148
        12.18      -327.87       2846.8      -7982.9
      -8.6371       152.52      -848.54       1492.2
       7.3827      -76.335       241.24      -237.61
 
Vergleichsfunktion eingeben? (0=ja, 1=nein) 0
 
Funktion eingeben. Variable vt verwenden, Beispiel: vt.^2: vt.*sin(1./vt)
tigerbine Auf diesen Beitrag antworten »
Splinewettkampf in neuem Gewand
Erneut betrachten wir die Funktion






Wir wollen nun überprüfen, ob wir mittels Rechnung mit Basissplines zu den gleichen Ergebnisse kommen und worin die Vorteile dieser Rechenweise liegen. Die B-Spline Basis kann man sich zum Beispiel mit maple ausgeben lassen. Dazu verwendet man zum Beispiel für einen linearen Basisspline durch die Knoten -1,0, wobei -1 ein Doppelknoten ist, den folgenden Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
>readlib(spline): readlib(bspline):
>
>bspline(1,t,[-1,-1,0]

                          { 0         t < -1
                          {
                          { -t        t < 0
                          {
                          { 0         0 <= t


Die Gestalt der interpolierenden Splines des "Spline-Wettkampfs" soll hier nur in Form von Linearkombinationen der Basis-Splines angegeben werden. Wer es genauer Wissen möchte, kann sich ja wie gezeigt die Basis-Splines ausgeben lassen. Augenzwinkern
tigerbine Auf diesen Beitrag antworten »
Lin. /quad / kub. interpolierender B-Spline
  • linearer B-Spline
    [attach]9041[/attach]

    code:
    1:
    
    S(t)= + (0.0456473) * B_0(t)+ (-0.0491068) * B_1(t)+ (0.0520464) * B_2(t)+ (-0.0894) * B_3(t)+ (0.128305) * B_4(t)+ (-0.209743) * B_5(t)+ (0.239389) * B_6(t)  


  • quadratischer B-Spline
    [attach]9042[/attach]

    code:
    1:
    
    S(t)= + (0.0186278) * B_0(t)+ (0.188868) * B_1(t)+ (-0.0936553) * B_2(t)+ (0.107566) * B_3(t)+ (-0.210676) * B_4(t)+ (0.318015) * B_5(t)+ (-0.518107) * B_6(t)+ (-0.00504517) * B_7(t)+ (0.637997) * B_8(t) 


  • natürlicher kubischer B-Spline
    [attach]9043[/attach]

    code:
    1:
    
    S(t)= + (0.0456473) * B_0(t)+ (-0.0011535) * B_1(t)+ (-0.118155) * B_2(t)+ (0.151123) * B_3(t)+ (-0.302357) * B_4(t)+ (0.506073) * B_5(t)+ (-0.851462) * B_6(t)+ (-0.21118) * B_7(t)+ (0.239389) * B_8(t)  


  • vollständiger kubischer B-Spline
    [attach]9044[/attach]

    code:
    1:
    
    S(t)= + (0.0456473) * B_0(t)+ (0.0323139) * B_1(t)+ (-0.141793) * B_2(t)+ (0.158283) * B_3(t)+ (-0.308127) * B_4(t)+ (0.513388) * B_5(t)+ (-0.894028) * B_6(t)+ (-0.0139445) * B_7(t)+ (0.239389) * B_8(t) 


tigerbine Auf diesen Beitrag antworten »
Linearer B-Spline
Wir wollen die vorherigen Aussagen erneut visualisieren. Mit einem linearen B-Spline können wir also kein quadratisches oder kubisches Polynom reproduzieren. Wir betrachten das Intervall (mit den Knoten) [-1,0,1]. Dann haben die Basisvektoren (mit Mehrfachknoten am Rand) die Gestalt:

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:
B_0=                        
                          { 0         t < -1
                          {
                          { -t        t < 0
                          {
                          { 0         0 <= t


B_1=
                          {   0           t < -1
                          {
                          { t + 1         t < 0
                          {
                          { -t + 1        t < 1
                          {
                          {   0           1 <= t

                        
B_2=
                          { 0        t < 0
                          {
                          { t        t < 1
                          {
                          { 0        1 <= t
                     



Lineares Polynom
[attach]9047[/attach]

code:
1:
S(t)= + (-1) * B_0(t)+ (0) * B_1(t)+ (1) * B_2(t) 


Quadratisches Polynom
[attach]9045[/attach]

code:
1:
S(t)= + (1) * B_0(t)+ (0) * B_1(t)+ (1) * B_2(t) 


Kubisches Polynom
[attach]9046[/attach]

code:
1:
S(t)= + (-1) * B_0(t)+ (0) * B_1(t)+ (1) * B_2(t)
tigerbine Auf diesen Beitrag antworten »
quadratischer B-Spline
Mit einem quadratischen B-Spline können wir kein kubisches Polynom reproduzieren. Wir betrachten das Intervall (mit den Knoten) [-1,0,1] und den IP-Stellen [-1,-0.5,0.5,1]. Dann haben die Basisvektoren (mit Mehrfachknoten) auf dem Gitter [-1,-1,-1,0,1,1,1] die Gestalt:

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:
B_0=
                  {         0                 t < -1
                  {
                  {        2
                  { (t + 1)  - 2 t - 1        t < 0
                  {
                  {         0                 0 <= t


B_1=
                  {            0                    t < -1
                  {
                  {              2
                  { - 3/2 (t + 1)  + 2 t + 2        t < 0
                  {
                  {                    2
                  {     1/2 - t + 1/2 t             t < 1
                  {
                  {            0                    1 <= t

B_2=

                  {        0                t < -1
                  {
                  {              2
                  {   1/2 (t + 1)           t < 0
                  {
                  {                2
                  { 1/2 + t - 3/2 t         t < 1
                  {
                  {        0                1 <= t

B_3=
                  { 0         t < 0
                  {
                  {  2
                  { t         t < 1
                  {
                  { 0         1 <= t



lineares Polynom
[attach]9048[/attach]

code:
1:
S(t)= + (-1) * B_0(t)+ (-0.5) * B_1(t)+ (0.5) * B_2(t)+ (1) * B_3(t) 



quadratisches Polynom
[attach]9049[/attach]

code:
1:
S(t)= + (1) * B_0(t)+ (0) * B_1(t)+ (0) * B_2(t)+ (1) * B_3(t)



kubisches Polynom
[attach]9050[/attach]

code:
1:
S(t)= + (-1) * B_0(t)+ (0.25) * B_1(t)+ (-0.25) * B_2(t)+ (1) * B_3(t) 
tigerbine Auf diesen Beitrag antworten »
kubischer B-Spline
Mit einem kubischen B-Spline können wir nun auch ein kubisches Polynom reproduzieren. Wie zu erwarten, kann ein Polynom vom Grad 4 nicht reproduziert werden. Wählen wir sogar den natürlichen B-Spline, so können wir noch nicht einmal ein quadratisches Polynom reproduzieren. Wir betrachten das Intervall mit den Knoten (Mehrfachknoten am Rand). Dann haben die Basissplines die folgende Gestalt:

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:
B_0=

           {                0                        t < -1
           {
           {         3            2
           { -(t + 1)  + 3 (t + 1)  - 3 t - 2        t < 0
           {
           {                0                        0 <= t


B_1=

           {                   0                          t < -1
           {
           {            3              2
           { 7/4 (t + 1)  - 9/2 (t + 1)  + 3 t + 3        t < 0
           {
           {                        2        3
           {     1/4 - 3/4 t + 3/4 t  - 1/4 t             t < 1
           {
           {                   0                          1 <= t

B_2=

           {            0                    t < -1
           {
           {         3              2
           { -(t + 1)  + 3/2 (t + 1)         t < 0
           {
           {               2    3
           {    1/2 - 3/2 t  + t             t < 1
           {
           {            0                    1 <= t


B_3=

            {               0                      t < -1
            {
            {                    3
            {         1/4 (t + 1)                  t < 0
            {
            {                    2        3
            { 1/4 + 3/4 t + 3/4 t  - 7/4 t         t < 1
            {
            {               0                      1 <= t


B_4=

            { 0         t < 0
            {
            {  3
            { t         t < 1
            {
            { 0         1 <= t



  • Vollständiger kubischer B-Spline

    lineares Polynom
    [attach]9051[/attach]

    code:
    1:
    
    S(t)= + (-1) * B_0(t)+ (-0.666667) * B_1(t)+ (0) * B_2(t)+ (0.666667) * B_3(t)+ (1) * B_4(t)


    quadratisches Polynom
    [attach]9052[/attach]

    code:
    1:
    
    S(t)= + (1) * B_0(t)+ (0.333333) * B_1(t)+ (-0.333333) * B_2(t)+ (0.333333) * B_3(t)+ (1) * B_4(t) 


    kubisches Polynom
    [attach]9053[/attach]

    code:
    1:
    
    S(t)= + (-1) * B_0(t)+ (0) * B_1(t)+ (0) * B_2(t)+ (0) * B_3(t)+ (1) * B_4(t) 


    Polynom vierten Grades
    [attach]9054[/attach]

    code:
    1:
    
    S(t)= + (1) * B_0(t)+ (-0.333333) * B_1(t)+ (0.333333) * B_2(t)+ (-0.333333) * B_3(t)+ (1) * B_4(t) 



  • natürlicher kubischer B-Spline

    lineares Polynom
    [attach]9055[/attach]

    code:
    1:
    
    S(t)= + (-1) * B_0(t)+ (-0.5) * B_1(t)+ (0.5) * B_2(t)+ (1) * B_3(t)


    quadratisches Polynom
    [attach]9056[/attach]

    code:
    1:
    
    + (1) * B_0(t)+ (0) * B_1(t)+ (0) * B_2(t)+ (1) * B_3(t) 


    kubisches Polynom
    [attach]9058[/attach]

    code:
    1:
    
    + (-1) * B_0(t)+ (0.25) * B_1(t)+ (-0.25) * B_2(t)+ (1) * B_3(t)  


    Polynom vierten Grades
    [attach]9059[/attach]

    code:
    1:
    
    S(t)= + (1) * B_0(t)+ (-0.25) * B_1(t)+ (-0.25) * B_2(t)+ (1) * B_3(t)  

tigerbine Auf diesen Beitrag antworten »
Interpolierende Funktion
Zunächst soll ein natürlicher kubischer Spline durch eine Menge von Punkten gelegt werden. Daber werden diese aufsteigend nach der x-Koordinate sortiert.

[attach]9071[/attach]

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:
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.2,0.8,0.95,1.01,1.21,1.57,1.6,2.14,2.7,3.1,3.21,3.5,3.54,3.74,4.05]
Funktionswerte eingeben: [0.7,0.3,1.11,1.67,2.01,0.6,0.93,3.17,2.54,0.98,2.26,0.45,1.87,0.31,0.76] 
 
n =
    14
------------------------------------------------------------------------------

Matrix der Restriktionen in Newton-Darstellung
RN =
  1.0e+003 *
    0.0007   -0.0025    0.0030    0.0051
    0.0003    0.0030    0.0160    0.0460
    0.0011    0.0088    0.0082   -0.3606
    0.0017    0.0085   -0.0341    0.0046
    0.0020   -0.0049    0.0028    0.0976
    0.0006    0.0098    0.0416   -1.0515
    0.0009    0.0113   -0.0132    0.0154
    0.0032    0.0015   -0.0046   -0.0143
    0.0025   -0.0082    0.0107    0.0784
    0.0010    0.0129   -0.0118   -0.7749
    0.0023    0.0010   -0.0248    0.5429
    0.0004    0.0322    0.0822   -5.1950
    0.0019    0.0305   -0.1914    0.7099
    0.0003   -0.0177    0.0617   -0.0995
 
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
  1.0e+005 *
    0.0000   -0.0000   -0.0000    0.0001
   -0.0002    0.0008   -0.0010    0.0005
    0.0033   -0.0102    0.0106   -0.0036
   -0.0005    0.0009   -0.0005    0.0000
   -0.0021    0.0050   -0.0039    0.0010
    0.0423   -0.0800    0.0503   -0.0105
   -0.0014    0.0020   -0.0010    0.0002
    0.0016   -0.0021    0.0009   -0.0001
   -0.0167    0.0182   -0.0066    0.0008
    0.2375   -0.2278    0.0728   -0.0077
   -0.1984    0.1795   -0.0541    0.0054
    2.2617   -1.9291    0.5484   -0.0519
   -0.3578    0.2908   -0.0787    0.0071
    0.0657   -0.0489    0.0121   -0.0010
 


code:
1:
2:
S(t)= + (0.7) * B_0(t)+ (0.200681) * B_1(t)+ (-0.423467) * B_2(t)+ (0.755254) * B_3(t)+ (2.20821) * B_4(t)+ (2.52114) * B_5(t)+ (-0.736029) * B_6(t)+ (2.96734) * B_7(t)+ (2.84296) * B_8(t)+ (4.51593) * B_9(t)+ (-1.34738) * B_10(t)+ (4.25591) * B_11(t)+ (-3.35568) * B_12(t)+ (4.38443) * B_13(t)+ (-2.25156) * B_14(t)+ (-0.378515) * B_15(t)+ (0.76) * B_16(t) 
tigerbine Auf diesen Beitrag antworten »
2. Interpolierende Kurve 1
Schaut man die Punkte in obigem Bild an, so könnte man auch deren Reihenfolge ändern, mit dem Ziel einen Weg durch diese zu legen. Dann müssen wir die Splinepunkte allerdings anders vergeben.

Man könnte mit die Paare sowie bilden. Das würde die folgenden Splines liefern:

  • x-Koordinate (in Abhängigkeit von t)

    [attach]9072[/attach]

    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:
    
    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,5,6,7,8,9,10,11,12,13,14]
    Funktionswerte eingeben: [0.2,0.8,1.57,1.6,0.95,1.01,1.21,2.14,2.7,3.21,3.54,3.1,3.5,3.74,4.05]
     
    n =
        14
    ------------------------------------------------------------------------------
     
    Matrix der Restriktionen in Newton-Darstellung
    RN =
        0.2000    0.5182    0.0818    0.0818
        0.8000    0.7637    0.0063   -0.2391
        1.5700    0.5372   -0.5072   -0.0353
        1.6000   -0.5125   -0.1375    0.4402
        0.9500   -0.3473    0.4073   -0.3356
        1.0100    0.1317    0.0683    0.3323
        1.2100    0.6006    0.3294   -0.4036
        2.1400    0.8557   -0.2957    0.1821
        2.7000    0.4464    0.0636   -0.0048
        3.2100    0.5688   -0.2388   -0.2928
        3.5400   -0.2016   -0.2384    0.5861
        3.1000   -0.0922    0.4922   -0.4416
        3.5000    0.4506   -0.2106    0.1804
        3.7400    0.2098    0.1002   -0.0501
     
    Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
    RM =
        0.2000    0.5182   -0.0000    0.0818
        0.5210   -0.4447    0.9629   -0.2391
       -1.1100    2.0017   -0.2603   -0.0353
      -13.9484   14.8401   -4.5398    0.4402
       35.7066  -22.4012    4.7705   -0.3356
      -47.7863   27.6946   -5.2486    0.3323
      111.1710  -51.7841    7.9978   -0.4036
      -89.7275   34.3153   -4.3021    0.1821
        5.9790   -1.5746    0.1842   -0.0048
      215.9331  -71.5593    7.9602   -0.2928
     -663.0055  192.1222  -18.4079    0.5861
      704.9317 -180.9515   15.5079   -0.4416
     -370.0002   87.7814   -6.8865    0.1804
      136.4451  -29.0906    2.1036   -0.0501
    



  • y-Koordinate (in Abhängigkeit von t)

    [attach]9073[/attach]

    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:
    
    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,5,6,7,8,9,10,11,12,13,14]
    Funktionswerte eingeben: [0.7,0.3,0.6,0.93,1.11,1.67,2.01,3.17,2.54,2.26,1.87,0.98,0.45,0.31,0.76]
     
    n =
        14
    ------------------------------------------------------------------------------
    
    Matrix der Restriktionen in Newton-Darstellung
    RN =
        0.7000   -0.5798    0.1798    0.1798
        0.3000   -0.0405    0.3405   -0.1989
        0.6000    0.4416   -0.1116   -0.0543
        0.9300    0.1641    0.0159    0.2362
        1.1100    0.4321    0.1279   -0.3604
        1.6700    0.3275    0.0125    0.6053
        2.0100    0.9578    0.2022   -1.0208
        3.1700    0.3414   -0.9714    0.8680
        2.5400   -0.7335    0.4535   -0.3110
        2.2600   -0.1375   -0.2525   -0.0839
        1.8700   -0.7264   -0.1636    0.2568
        0.9800   -0.7968    0.2668   -0.0831
        0.4500   -0.3462    0.2062    0.1055
        0.3100    0.1718    0.2782   -0.1391
     
    Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
    RM =
        0.7000   -0.5798    0.0000    0.1798
        1.0786   -1.7157    1.1359   -0.1989
       -0.0776    0.0187    0.2687   -0.0543
       -7.9212    7.8623   -2.3458    0.2362
       30.2574  -20.7717    4.8127   -0.3604
      -90.4503   51.6530   -9.6723    0.6053
      260.7888 -123.9666   19.5977   -1.0208
     -387.0580  153.6820  -20.0664    0.8680
      216.5686  -72.6780    8.2286   -0.3110
       51.0368  -17.5007    2.0978   -0.0839
     -289.6534   84.7064   -8.1229    0.2568
      162.6573  -38.6511    3.0914   -0.0831
     -163.2793   42.8331   -3.6990    0.1055
      374.2281  -81.2071    5.8426   -0.1391
    

tigerbine Auf diesen Beitrag antworten »
3. Interpolierende Kurve 2
Trägt man die über t berechneten x und y-Werte gegeneinander auf, so erhalten wir dieses Bild:

[attach]9074[/attach]


Wie man eine noch glattere kurve durch die Punkte legen kann, steht im angehängten PDF-file
tigerbine Auf diesen Beitrag antworten »
1. Änderungen des Datensatzes
wir haben nun Splines als Stückweise polynomiale Funktionen kennengelernt. Nun soll einmal die Frage motiviert werden, wie ändert sich der interpolierende Spline, wenn man einen Datenpunkt ändert? Wir sehen, das sich zwar der komplette Spline ändert, je weiter wir uns aber von dem geänderten Datenpunkt entfernen, umso kleiner wird die Veränderung.

[attach]9077[/attach]

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:
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,5,6,7,8,9]
Funktionswerte eingeben: [1,5,3,7,9,0,2,8,4,6]
 
n =
     9
------------------------------------------------------------------------------
Matrix der Restriktionen in Newton-Darstellung
RN =
    1.0000    6.0077   -2.0077   -2.0077
    5.0000   -0.0153   -1.9847    4.0384
    3.0000    0.0537    3.9463   -2.1457
    7.0000    5.8006   -3.8006   -3.4554
    9.0000   -5.2560   -3.7440    6.9673
         0   -5.7767    7.7767   -2.4139
    2.0000    7.3628   -1.3628   -4.3118
    8.0000    0.3254   -4.3254    5.6610
    4.0000   -2.6644    4.6644   -2.3322
 
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
  1.0e+003 *
    0.0010    0.0060    0.0000   -0.0020
   -0.0050    0.0241   -0.0181    0.0040
    0.0444   -0.0501    0.0190   -0.0021
    0.0798   -0.0854    0.0308   -0.0035
   -0.5873    0.4149   -0.0943    0.0070
    0.5854   -0.2887    0.0464   -0.0024
    0.9953   -0.4937    0.0806   -0.0043
   -2.4253    0.9723   -0.1289    0.0057
    1.6672   -0.5624    0.0630   -0.0023



[attach]9079[/attach]
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:
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,5,6,7,8,9]
Funktionswerte eingeben: [1,5,3,-1,9,0,2,8,4,6]
 
n =
     9
------------------------------------------------------------------------------
Matrix der Restriktionen in Newton-Darstellung
RN =
    1.0000    5.0843   -1.0843   -1.0843
    5.0000    1.8315   -3.8315   -0.5787
    3.0000   -6.4102    2.4102    7.3992
   -1.0000    5.8094    4.1906  -13.0181
    9.0000    1.1725  -10.1725   11.6732
         0   -7.4992    9.4992   -3.6747
    2.0000    7.8245   -1.8245   -3.9744
    8.0000    0.2011   -4.2011    5.5722
    4.0000   -2.6289    4.6289   -2.3144
 
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
  1.0e+003 *
    0.0010    0.0051    0.0000   -0.0011
    0.0005    0.0066   -0.0015   -0.0006
   -0.0633    0.1023   -0.0494    0.0074
    0.4879   -0.4489    0.1344   -0.0130
   -1.0923    0.7363   -0.1619    0.0117
    0.8262   -0.4148    0.0683   -0.0037
    0.8909   -0.4472    0.0737   -0.0040
   -2.3836    0.9561   -0.1268    0.0056
    1.6544   -0.5581    0.0625   -0.0023


Schauen wir uns auch noch einmal das Beispiel mit der gestörten Nullfunktion an. Im [WS] Polynominterpolation - Theorie weicht man, gerade an den Rändern des Itervalls [a,b] mit steigendem Polynomgrad immer mehr von der Funktion ab. Dies sieht mit einem kubischen Spline schon deutlich besser aus.

[attach]9081[/attach]
tigerbine Auf diesen Beitrag antworten »
2. Änderung eines Koeffizienten
Man erkennt, dass sich der Spline bei Änderung eines c-Wertes nur auf dem Träger des zugehörigen B-Spline verändert.

[attach]9090[/attach]

code:
1:
S(t)= + (3) * B_0(t)+ (5.01112) * B_1(t)+ (9.03335) * B_2(t)+ (2.86658) * B_3(t)+ (3.50031) * B_4(t)+ (13.1322) * B_5(t)+ (-2.02901) * B_6(t)+ (0.983848) * B_7(t)+ (10.0936) * B_8(t)+ (0.641703) * B_9(t)+ (11.3396) * B_10(t)+ (9.11319) * B_11(t)+ (8) * B_12(t) 


[attach]9086[/attach]

code:
1:
S(t)= + (3) * B_0(t)+ (5.01112) * B_1(t)+ (9.03335) * B_2(t)+ (2.86658) * B_3(t)+ (3.50031) * B_4(t)+ (13.1322) * B_5(t)+ (2) * B_6(t)+ (0.983848) * B_7(t)+ (10.0936) * B_8(t)+ (0.641703) * B_9(t)+ (11.3396) * B_10(t)+ (9.11319) * B_11(t)+ (8) * B_12(t)


Und das ganze noch einmal in der ersten Berechnungsvariante. Hier wurde ein s-Wert geändert.

[attach]9087[/attach]

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
 -221.0025 -146.4682  -30.5003   -2.0334
  111.8055  103.1378   31.9012    3.1668
   36.1920   27.5243    6.6967    0.3663
  -11.7930  -44.4533  -29.2921   -5.6319
    1.0000   -6.0742    9.0870    7.1612
    1.0000   -6.0742    9.0870   -2.0129
    3.0969  -12.3649   15.3777   -4.1098
  -81.3965  114.3752  -47.9923    6.4519
  246.6476 -213.6689   61.3557   -5.6979
 -267.7489  172.1285  -35.0936    2.3396
 


[attach]9088[/attach]

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
 -221.0025 -146.4682  -30.5003   -2.0334
  111.8055  103.1378   31.9012    3.1668
   36.1920   27.5243    6.6967    0.3663
   79.2656  137.6640   84.5312   17.1328
    1.0000   -6.0742   31.8517   29.9258
    1.0000   -6.0742    9.0870   -2.0129
    3.0969  -12.3649   15.3777   -4.1098
  -81.3965  114.3752  -47.9923    6.4519
  246.6476 -213.6689   61.3557   -5.6979
 -267.7489  172.1285  -35.0936    2.3396
 
Steffen Bühler Auf diesen Beitrag antworten »

Nun folgt ein kleines Beispiel für das Berechnen eines kubischen Splines.

Folgende zwei Kurven sollen verbunden werden:



Es handelt sich hier um zwei Normalparabeln. Die erste ist in Normallage. Die zweite ist nach unten geklappt, um 2 nach rechts und und um 1 nach oben verschoben. Hier die vollständigen Graphen:



Der Spline soll also die Punkte (1|1) mit Steigung 2 und (2|1) mit Steigung 0 verbinden. Somit muss sein Graph durch diese Punkte gehen und dort auch die richtige Steigung haben.

Ein kubischer Spline wird durch folgende Gleichung beschrieben:



Die Ableitung dieser Funktion ist



Also wird Punkt (1|1) mit Position und Steigung eingesetzt:




Und dasselbe für Punkt (2|1):




Somit haben wir vier Gleichungen für die vier Koeffizienten a, b, c und d.

Es ergibt sich






und damit die Funktion für den kubischen Spline:



Hier sieht man, wie schön diese Funktion die beiden Punkte verbindet:



Und hier noch einmal stückweise:

Steffen Bühler Auf diesen Beitrag antworten »
Drei Punkte mit Splines verbinden
Das folgende Beispiel ist etwas komplizierter, auch wenn es zunächst recht simpel erscheint. Gegeben sind nun lediglich die drei Punkte , die durch zwei Splines verbunden werden sollen.

Gesucht sind also zwei kubische Funktionen sowie . Die erste soll und verbinden, die zweite dann und .

Somit muss durch und gehen:





Und muss durch und gehen:





Außerdem sollen Steigung und Krümmung der beiden Funktionen im Punkt identisch sein:





Nun haben wir sechs Gleichungen für die acht Unbekannten . Die letzten zwei bekommen wir, indem für die Krümmung in den Außenpunkten beliebige Werte gewählt werden. Hier werden beide Krümmungen auf Null gesetzt:





Mit diesen acht Gleichungen ergeben sich folgende Werte für die Koeffizienten:

















Dies ergibt diese zwei Graphen:



Hier noch einmal stückweise:



Man erkennt den sprung-, knick- und ruckfreien Übergang bei sowie die verschwindende Krümmung an den Außenpunkten.

Prinzipiell funktioniert das Ganze dann natürlich auch mit beliebig vielen Punkten.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »