Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles...
-
Upload
lynne-hines -
Category
Documents
-
view
278 -
download
0
description
Transcript of Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles...
![Page 1: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/1.jpg)
Introduction to Scientific Computing
-- A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan
陈 文 斌[email protected]
复旦大学
![Page 2: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/2.jpg)
Chapter3 Piecewise Polynomial Interpolation
• Piecewise Linear Interpolation• Piecewise Cubic Hermite Interpolation• Cubic Splines
![Page 3: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/3.jpg)
0 1 2 3 4 5 6 7-1
-0.8-0.6-0.4-0.2
00.20.40.60.8
1Piecewise Linear Interpolation
![Page 4: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/4.jpg)
)()( iiii zzbazL ),( ii yx
ii
iiiii xx
yybya
1
1,
nnn xzxzL
xzxzLxzxzL
zL
11
322
211
if)(
if)(if)(
)(
Piecewise Linear
![Page 5: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/5.jpg)
function [a,b] = pwL(x,y)n = length(x); a = y(1:n-1);b = diff(y) ./ diff(x);
z=linspace(0,1,9);
[a,b]=pwL(z,sin(2*pi*z));
for i=1:n-1
b(i)=(y(i+1)- y(i))/ (x(i+1)- x(i));
end
b=(y(2:n)-y(1:n-1))./(x(2:n)-x(1:n-1))
b=diff(y)./diff(x)
Test code
![Page 6: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/6.jpg)
Evalution
],[ z ?)( zL
Problem: ?],,[ 1 ixxz ii
if z==x(n)
i =n-1;
else
i=sum(x<=z);
end
![Page 7: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/7.jpg)
Binary search
mid = floor((Left+Right)/2);
If z<x(mid)
Right=mid;
Else
Left =mid;
end
10000N 13.3 log2 Nn
![Page 8: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/8.jpg)
function i = Locate(x,z,g)% g (1<=g<=n-1) is an optional input parameter% search for i begins, the value i=g is tried.if nargin==3 if (x(g)<=z) & (z<=x(g+1)) i = g; return end;endn = length(x);if z = = x(n) i = n-1;elseLeft = 1; Right = n;while Right > Left+1 Binary_searchend
g: guss
![Page 9: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/9.jpg)
function LVals = pwLEval(a,b,x,zVals)
% Evaluates the piecewise linear polynomial defined by the column %(n-1)-vectors
m = length(zVals);
LVals = zeros(m,1);
g = 1;
for j=1:m
i = Locate(x,zVals(j),g);
LVals(j) = a(i) + b(i)*(zVals(j)-x(i));
g = i;
end
m-vector
![Page 10: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/10.jpg)
604.2)^9.(
101.)3.(
12
xx
![Page 11: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/11.jpg)
A priori determination of breakpoints
],[ 1 ii xxz
))((2
)()()( 1
)2(
ii xzxzfzLzf
8|)()(|
22hMzLzf ],[ z
2
22
2
188|)()(|
nMhMzLzf
8/)(1 2Mn Static
![Page 12: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/12.jpg)
Adaptive Piecewise Linear Interpolation
Problem
![Page 13: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/13.jpg)
Adaptive Piecewise Linear Interpolation
],[ xRxLacceptable
2)()(
2xRfxLfxRxLf
minhxLxR or
![Page 14: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/14.jpg)
![Page 15: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/15.jpg)
![Page 16: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/16.jpg)
![Page 17: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/17.jpg)
Piecewise Cubic Hermit Interpolation
![Page 18: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/18.jpg)
2
3,2
3,,0 4321 xxxx
0
Hermit cubic interpolant
![Page 19: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/19.jpg)
)()()()()( 22RLLL xzxzdxzcxzbazq
RRLL
RRLL
sxqsxqyxqyxq
)(',)('
)(,)(
LR
LRLRL
LLR
LL
LL
xxyy
xyyy
xyssd
xsyc
sbya
'
'2
'
![Page 20: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/20.jpg)
],[)( 4)4(
RL xxzMzf
LR xxhhMzqzf ,384
)()( 44
410,
10errorerrorhh
![Page 21: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/21.jpg)
)()()()()( 122
iiiiiiiii xzxzdxzcxzbazq
nnn xzxzq
xzxzqxzxzq
zC
11
322
211
if)(
if)(if)(
)(
Piecewise cubic polynomial
nisxCyxC iiii :1,)(',)(
For i=1:n-1
[a(i),b(i), c(i), d(i)=Hcubic(x(i),y(i),s(i),x(i+1),y(i+1),s(i+1))
End
![Page 22: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/22.jpg)
function [a,b,c,d] = pwC(x,y,s)
% Piecewise cubic Hermite interpolation.
n = length(x);
a = y(1:n-1);
b = s(1:n-1);
Dx = diff(x);
Dy = diff(y);
yp = Dy ./ Dx;
c = (yp - s(1:n-1)) ./ Dx;
d = (s(2:n) + s(1:n-1) - 2*yp) ./ (Dx.* Dx);
x,y,s: vector
![Page 23: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/23.jpg)
Evaluation
function Cvals = pwCEval(a,b,c,d,x,zVals)
m = length(zVals);
Cvals = zeros(m,1);
g=1;
for j=1:m
i = Locate(x,zVals(j),g);
Cvals(j) = d(i)*(zVals(j)-x(i+1)) + c(i);
Cvals(j) = Cvals(j)*(zVals(j)-x(i)) + b(i);
Cvals(j) = Cvals(j)*(zVals(j)-x(i)) + a(i);
g = i;
end
Locate
Cubic version of HornerN
![Page 24: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/24.jpg)
![Page 25: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/25.jpg)
Cubic spline interpolant
Given with
find a piecewise cubic interpolant with the property that S, S' and S'' are continuous.
),(),...,,( 11 nn yxyx,...1 nxx
Why need spline?
![Page 26: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/26.jpg)
Continuity at the interior knots
)()('2
)(')()(
12
21
2
iii
iii
ii
iiiiii
xzxzx
yss
xzx
syxzsyzq
ii
iii xx
yyy
1
1'
)](2)(4['2'2)('' 12
1
iii
iii
i
iii xzxz
xyss
xsyzq
![Page 27: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/27.jpg)
)](2)(4[22)( 212
1
'121
1
1'
1''1
ii
i
iii
i
iii xzxz
xyss
xsyzq
)32(2)( '11
''iii
iii yss
xxq
)23(2)( 21'
11
1''
1
iiii
ii ssyx
xq
2:1,3
)(2'
1'
1
2111
niyxyx
sxsxxsx
iiii
iiiiiii
![Page 28: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/28.jpg)
)(3)(21 '21
'123122112 yxyxsxsxxsxi
)(3)(22 '32
'234233223 yxyxsxsxxsxi
)(3)(23 '43
'345344334 yxyxsxsxxsxi
)(3)(24 '54
'456455445 yxyxsxsxxsxi
)(3)(25 '65
'567566556 yxyxsxsxxsxi
r
sxyxyxyxyxyxyxyxyx
sxyxyx
sssss
TTs
75'65
'56
'54
'45
'43
'34
'32
'23
12'21
'12
6
5
4
3
2
)(3)(3)(3)(3
)(3
)6:2(
![Page 29: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/29.jpg)
655
4545
3434
2323
121
22
22
2
xxxxxxx
xxxxxxxx
xxx
T
tridiagonal
![Page 30: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/30.jpg)
)2()2(2,23,2
3232
2323
1211
0020
200
nnnnnn
nnnn
ttxxxx
xxxxtt
T
nss ,1choice
2
'23
'32
'32
'23
1
)(3
)(3
n
nnnn
ryxyx
yxyxr
r rTs
![Page 31: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/31.jpg)
n=length(x);
Dx=diff(x);
yp=diff(y)./Dx;
T=zeros(n-2,n-2);
r=zeros(n-2,1);
for i=2:n-3
T(i,i)=2(Dx(i)+Dx(i+1));
T(i,i-1)=Dx(i+1);
T(i,i+1)=Dx(i);
r(i)=3(Dx(i+1)*yp(i)+Dx(i)*yp(i+1));
end
Help diag
![Page 32: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/32.jpg)
The complete spline
RnL ss ,1
'21
'12312212 3)(2 yxyxsxsxxx L
'12
'21
211221
3
)(2
nnnn
Rnnnnnn
yxyx
xsxxsx
Lxyxyxsxsxx 2'21
'1231221 3)(2
Rnnnnn
nnnnn
xyxyx
sxxsx
2'
12'
21
11221
3
)(2
![Page 33: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/33.jpg)
T(1,1)=2*(Dx(1)+Dx(2));
T(1,2)=Dx(1);
r(1)=3*(Dx(2)*yp(1)+Dx(1)*yp(2))-Dx(2)*muL;
T(n-2,n-2)=2*(Dx(n-2)+Dx(n-1));
T(n-2,n-3)=Dx(n-1);
r(n-2)=3*(Dx(n-1)*yp(n-2)+Dx(n-2)*yp(n-1))-Dx(n-2)*muR;
s=[muL;T\r(1:n-2);muR];
![Page 34: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/34.jpg)
The Natural Spline
)( 1''
1 xqL
)](2)(4['2'2)('' 12
1
iii
iii
i
iii xzxz
xyss
xsyzq
1
121
1
11 '22'2x
yssx
syL
12
'11 2
321 xsys L
11
'1 2
321
nR
nnn xsys
)(''1 nnR xq 0 RL
![Page 35: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/35.jpg)
T(1,1) = 2*Dx(1) + 1.5*Dx(2);
T(1,2) = Dx(1);
r(1) = 1.5*Dx(2)*yp(1) + 3*Dx(1)*yp(2) + Dx(1)*Dx(2)*muL/4;
T(n-2,n-2) = 1.5*Dx(n-2)+2*Dx(n-1);
T(n-2,n-3) = Dx(n-1);
r(n-2) = 3*Dx(n-1)*yp(n-2) + 1.5*Dx(n-2)*yp(n-1)- …
Dx(n-1)*Dx(n-2)*muR/4;
stilde = T\r;
s1 = (3*yp(1) - stilde(1) - muL*Dx(1)/2)/2;
sn = (3*yp(n-1) - stilde(n-2) + muR*Dx(n-1)/2)/2;
s = [s1;stilde;sn];
![Page 36: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/36.jpg)
The Not-a-Knot Spline
)()( 2'''
22'''
1 xqxq
22
'232
21
'121 22
xyss
xyss
)2(2 '232
2
2
1'121 yss
xxyss
)2(2 '222
2
2
1'11
nnnn
nnnn yss
xxyss
identical are )( and )( 21 xqxq
![Page 37: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/37.jpg)
q = Dx(1)*Dx(1)/Dx(2); T(1,1) = 2*Dx(1) +Dx(2) + q; T(1,2) = Dx(1) + q; r(1) = Dx(2)*yp(1) + Dx(1)*yp(2)+2*yp(2)*(q+Dx(1)); q = Dx(n-1)*Dx(n-1)/Dx(n-2); T(n-2,n-2) = 2*Dx(n-1) + Dx(n-2)+q; T(n-2,n-3) = Dx(n-1)+q; r(n-2) = Dx(n-1)*yp(n-2) + Dx(n-2)*yp(n-1) … +2*yp(n-2)*(Dx(n-1)+q); stilde = T\r; s1 = -stilde(1)+2*yp(1); s1 = s1 + ((Dx(1)/Dx(2))^2)*(stilde(1)+stilde(2)-2*yp(2)); sn = -stilde(n-2) +2*yp(n-1); sn = sn+((Dx(n-1)/Dx(n-2))^2)*(stilde(n-3) … +stilde(n-2)-2*yp(n-2)); s = [s1;stilde;sn];
![Page 38: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/38.jpg)
function [a,b,c,d] = CubicSpline(x,y,derivative,muL,muR)
% Cubic spline interpolation with prescribed end conditions.
% Usage:
% [a,b,c,d] = CubicSpline(x,y,1,muL,muR)
% S'(x(1)) = muL, S'(x(n)) = muR
% [a,b,c,d] = CubicSpline(x,y,2,muL,muR)
% S''(x(1)) = muL, S''(x(n)) = muR
% [a,b,c,d] = CubicSpline(x,y)
% S'''(z) continuous at x(2) and x(n-1)
![Page 39: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/39.jpg)
0 0.5 110-12
10-10
10-8
10-6
10-4
Knot Spacing = 0.0500 0.5 110-12
10-10
10-8
10-6
10-4
Knot Spacing = 0.005
Not-a-knot spline error
![Page 40: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/40.jpg)
0 1 2 3 4 5 6 7 8 9 10-1
-0.5
0
0.5
1
1.5
Bad end conditions
![Page 41: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/41.jpg)
-5 -4 -3 -2 -1 0 1 2 3 4 5-1.5
-1
-0.5
0
0.5
1
1.5 n = 9 Spline Interpolant of atan(x)
Matlab Spline Tools
z=linspace(-5,5);
x=linspace(-5,5,9);
y=atan(x);
Svals=spline(x,y,z);
plot(z,Svals)
Not-a-knot spline
![Page 42: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/42.jpg)
pp-representation
x=linspace(-5,5,9);
y=atan(x);
S=spline(x,y);
z=linspace(-5,5);
Svals=ppval(S,z)
plot(z,Svals)
pp-representation
[x, rho,L,k]=unmkpp(S)
The coefficients of the local polynomials are assembled in an L-by-k matrix rho
33,
22,3,4, )()()()( iiiiiii xzxzxzzS
1, )(j)rho(i, jk
iji xx
![Page 43: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/43.jpg)
33,
22,3,4, )()()()( iiiiiii xzxzxzzS
23,2,3, )(3)(2)(' iiiii xzxzzS
drho = [3*rho(:,1) 2*rho(:,2) rho(:,3)];
dS = mkpp(x,drho);
V = PPVAL(PP,XX) returns the value at the points XX of the piecewise
polynomial contained in PP, as constructed by SPLINE or the spline utility
z = linspace(-5,5);
Svals = ppval(S,z);
dSvals = ppval(dS,z);
![Page 44: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/44.jpg)
-5 -4 -3 -2 -1 0 1 2 3 4 500.10.20.30.40.50.60.70.80.9
1 Derivative of n = 9 Spline Interpolant of atan(x)
![Page 45: Introduction to Scientific Computing - - A Matrix Vector Approach Using Matlab Written by Charles F.Van Loan 陈 文 斌 复旦大学.](https://reader034.fdocuments.net/reader034/viewer/2022050719/5a4d1b8d7f8b9ab0599bfd88/html5/thumbnails/45.jpg)
n = 9;x = linspace(-5,5,n);y = atan(x);S = spline(x,y);[x,rho,L,k] = unmkpp(S);drho = [3*rho(:,1) 2*rho(:,2) rho(:,3)];dS = mkpp(x,drho); z = linspace(-5,5);Svals = ppval(S,z);dSvals = ppval(dS,z);atanvals = atan(z);Figure;plot(z,atanvals,z,Svals,x,y,'*');title(sprintf('n = %2.0f Spline Interpolant of atan(x)',n))datanvals = ones(size(z))./(1 + z.*z);figureplot(z,datanvals,z,dSvals)title(sprintf('Derivative of n = %2.0f Spline Interpolant of atan(x)',n))