210
CHƯƠNG 3: NỘI SUY VÀ XẤP XỈ HÀM
§1.NỘISUYLAGRANGE
Trongthựctếnhiềukhitacầntínhgiátrịcủahàmy =f(x)tạimộtgiátrị
xtrongmộtđoạn[a,b]nàođómàchỉbiếtmộtsốnhấtđịnhcác
giátrịcủa
hàm tại một số điểm cho trước. Các giá trị nàyđược cung cấp qua thực
nghiệmhaytínhtoán.Vìvậynảysinhvấnđềtoánhọclàtrênđoạna≤x≤
b
chomộtloạtcácđiểmx
i(i=0,1,2 )vàtạicácđiểmxinàygiátrịcủahàmlà
y
i=f(xi)đãbiếtvàtacầntìmy=f(x)dựatrêncácgiátrịđãbiếtđó.Lúcđóta
cầntìmđathức:
P
n(x)=aoxn+a1x
n‐1
+…+an‐1x+an
saochoP
n(xi)=f(xi)=yi.ĐathứcPn(x)đượcgọilàđathứcnộisuycủahàm
y=f(x).Tachọn đathứcđểnộisuyhàmy=f(x)vìđathứclàloạihàmđơn
giản,luôncóđạohàmvànguyênhàm.Việctínhgiátr
ịcủanótheothuậttoán
Hornercũngđơngiản.
BâygiờtaxâydựngđathứcnộisuykiểuLagrange.GọiL
ilàđathức:
)xx) (xx)(xx) (xx(
)xx) (xx)(xx) (xx(
=
n
0i
iin
)x(L)x(f)x(P
TathấyP
n(x)làmộtđathứcbậcnvìcácLi(x)làcácđath ứcbậcnvà
thoảmãnđiềukiệnP
n(xi)=f(xi)=yi.TagọinólàđathứcnộisuyLagrange.
Vớin=1tacóbảng
x x
0 x1
y y0 y1
Đathứcnộisuysẽlà:
P
1(x)=yoL0(x)+y1L1(x1)
10
1
0
xx
xx
L
−
−
=
01
1(x)làmộtđathứcbậcnhấtđốivớix
Vớin=2tacóbảng
x x
0 x1 x2
y y0 y1 y2
Đathứcnộisuysẽlà:
P
2(x)=yoL0(x)+y1L1(x1)+y2L2(x2)
)xx)(xx(
)xx)(xx(
L
2010
21
0
−−
−−
=
)xx)(xx(
)xx)(xx(
L
2101
20
1
−−
−−
=
)xx)(xx(
l=l+y(m)*p;
end
212
Chohàmdướidạngbảng:
x‐2‐1 1 2
y‐6 0 0 6
vàtìmy(2.5)tadùngchươngtrình
ctlagrange.m:
clearall,clc
x
=[‐2‐112];
y=[
‐6006];
l=lagrange(x,y);
yx=polyval(l,2.5)
§2.NỘISUYNEWTON
Bâygiờtaxétmộtcáchkhácđểxâydựngđathứcnộisuygọilàphương
phápNewton.Trướchếttađưavàomộtkháiniệmmớilàtỉhiệu
Giảsửhàmy=y(x)cógiá
trịchotrongbảngsau:
x x
0 x1 x2
−
=
v.v.
Vớiy(x)=P
n(x)làmộtđathứcbậcnthìtỉhiệucấp1tạix,x0:
0
0nn
0n
xx
)x(P)x(P
]x,x[P
−
−
=
làmộtđathứcbậc(n‐1).Tỉhiệucấp2tạix,x
0,x1:
1
10n0n
10n
xx
]x,x[P]x,x[P
]x,x,x[P
−
−
=
làmộtđathứcbậc(n‐2)v.vvàtớitỉhiệucấp(n+1)thì:
213
Pn[x,xo, ,xn]=0
từđiểmx
ncódạngnhưsau:
P
n(x)=yn+(x‐xn)y[xn,xn‐1]+(x‐xn)(x‐xn‐1)y[xn,xn‐1,xn‐2]+ +
(x‐x
n)(x‐xn‐1) (x‐x1)y[xn, ,x0]
Trườnghợpcácnútcáchđềuthìx
i=x0+ihvớii=0,1, ,n.Tagọisai
phântiếncấp1tạiilà:
∆y
i=yi+1‐yi
vàsaiphântiếncấphaitạii:
∆
2
yi=∆(∆yi)=yi+2‐2yi+1+yi
vàsaiphântiếncấpnlà:
∆
n
yi=∆(∆
n‐1
yi)
Khiđótacó:
[]
h
y
x,xy
0
10
0
n
0
2
000n
y
!n
)1nt()1t(t
y
!2
)1t(t
yty)htx(P ∆
+−
⋅
⋅
⋅
−
+⋅⋅⋅+∆
−
+∆+=+
thìtanhậnđượcđathứcNewtontiếnxuấtpháttừx
0trongtrườnghợpnút
cáchđều.Vớin=1tacó:
P
1(x0+ht)=y0+∆y0
Vớin=2tacó:
0
2
)1t(t
yty)htx(P ∇
−+
⋅
⋅
⋅
+
+⋅⋅⋅+∇
+
+∇+=+
Taxâydựnghàm
newton()đểnộisuy:
function[n,DD]=newton(x,y)
%Duavao:x=[x0x1 xN]
%y=[y0y1 yN]
%Layra:n=hesocuadathucNewtonbacN
N=length(x)‐1;
DD=zeros(N+1,N+1);
DD(1:N+1,1)=yʹ;
fork=2:N+1
form=1:N+2‐k
DD(m,k)=(DD(m+1,k‐1)‐DD(m,k‐1))/(x(m+k‐1)‐x(m));
end
end
a=DD(1,:);
n=a(N+1);
fork=N:‐1:1
xxy
xxy
)x(P
−
−
−
=
Đâylàmộtđathứcbậc1:
01
0
1
10
1
001
xx
xx
y
xx
xx
y)x(P
−
−
+
−
−
=
Khix=x
0thì:
0
01
216
02
212
001
012
xx
xx)x(P
xx)x(P
)x(P
−
−
−
=
vàlàmộtđathứcbậc2:
)xx)(xx(
)xx)(xx(
y
)xx)(xx(
)xx)(xx(
y
)xx)(xx(
)xx)(xx(
y)x(P
1202
10
2
2101
−
−
=
Khix=x
1thì:
1
02
121
101
1012
y
xx
xxy
xxy
)x(P =
−
−
−
=
Khix=x
2thì:
2
02
222
20201
2012
y
xx
n=length(xData);
y=yData;
fork=1:n‐1
y(1:n‐k)=((x‐xData(k+1:n)).*y(1:n‐k)
+(xData(1:n‐k)‐x).*y(2:n‐k+1))
./(xData(1:n‐k)‐xData(k+1:n));
217
end
a=y(1);
Chocáccặpsố(1,3),(2,5),(3,7),(4,9)và(5,11),đểtìmytạix=2.5tadùng
chươngtrình
ctaitkennevile.m:
clearall,clc
x=
[1234];
y=[3579];
yx=aitkenneville(x,y,2.5)
§4.NỘISUYBẰNGĐƯỜNGCONGSPLINEBẬCBA
Khisốđiểmchotrướcdùngkhinộisuytăng,đathứcnộisuycódạng
sóngvàsaisốtăng.Taxéthàmthực:
2
1
f31(x)
18x
plot(xx,yy,ʹk‐ʹ,xx,yy2,ʹbʹ)
subplot(223)
plot(xx,yy,ʹk‐ʹ,xx,yy3,ʹbʹ)
vànhậnđượckếtquả.
Đểtránhhiệntượngsaisốlớnkhi
số điểm mốc tăng ta dùng nội suy nối
trơn(spline). Trên cácđoạn nội suy ta
thay hàm bằng mộtđường cong.
Các
đườngcongnàyđượcghéptrơntạicác
điểmnối.Tachọncácđườngcongnàylà
hàmbậc3vìhàmbậc1vàbậchaikhó
bảođảmđiềukiệnnốitrơn.
Cho
mộtloạtgiátrịnộisuy(x1,y1),…,(xi,y i),…,(xn,yn).Trênmỗiđoạnta
cómộthàmbậc3.Nhưvậygiữanútivà(i+1) tacóhàmf
i,i+1(x),nghĩalàta
dùng(n‐1)hàmbậc3f
1,2(x),f2,3(x),…,fn‐1,n(x)đểthaythếchohàmthực.Hàm
f
i,i+1(x)códạng:
f
i,i+1(x)=ai+bi(x‐xi)+ci(x‐xi)
2
+di(x‐xi)
3
(1)
Hàmnàythoảmãn:
f
Muốnnốitrơntacần cóđạohàmbậcnhấtliêntụcvàdođó:
i1,i i i,i1 i i
f (x) f (x) k
−+
′′ ′′
==
Lúcnàycácgiátrịkchưabiết,ngoạitrừk
1=kn=0(tacáccácmútlàđiểm
uốn).Điểmxuấtphátđểtínhcáchệsốcủaf
i,i+1(x)làbiểuthứccủa
i,i 1 i
f(x)
+
′
′
.Sử
dụngnộisuyLagrangechohaiđiểmtacó:
i,i 1 i i i i 1 i 1
f(x)kL(x)kL(x)
+++
′′
=+
Trongđó:
y
x
x
ii1
k(x x ) k (x x)
f(x)
xx
++
+
+
−− −
′′
=
−
Tíchphânbiểuthứctrênhailầntheoxtacó:
33
ii1i1i
i,i 1 i i 1 i
ii1
k(x x ) k (x x)
f (x) A(x x ) B(x x)
6(x x )
++
++
+
−− −
=+−−−
−
TrongđóAvàBlàcáchằngsốtíchphân
SốhạngcuốitrongphươngtrìnhtrênthườngđượcviếtlàCx+D.
=−
−
Tươngtự,điềukiệnf
i,i+1(xi+1)=yi+1chota:
i1
i1 i i1
ii1
y
k(x x)
B
xx 6
+
++
+
−
=−
−
Kếtquảlà:
3
ii1
i,i 1 i i 1 i i 1
ii1
3
i1 i
ii i1
ii1
ii1i1i
+
−
Đạohàmcấp2k
itạicácnútbêntrongđượctínhtừđiềukiện:
i1,i i i,i1 i
f (x) f (x)
−+
′′
=
Saukhibiếnđổitacóphươngtrình:
i1 i1 i i i1 i1 i1 i i1
i1 i i i1
i1 i i i1
k(xx)2k(xx)k(xx)
yyyy
6
xxxx
−− − + + +
−+
−+
−+ − + −
⎛⎞
−−
=−
⎜⎟
−−
‐6*(yData(2:n‐1)‐yData(3:n))
./(xData(2:n‐1)‐xData(3:n));
[c,d,e]=band3(c,de);
k=band3sol(c,d,e,k);
i=findseg(xData,x);
h=xData(i)‐xData(i+1);
y=((x‐xData(i+1))^3/h‐(x‐xData(i+1))*h)*k(i)/6.0
‐((x‐xData(i))^3/h‐(x‐xData(i))*h)*k(i+1)/6.0
+yData(i)*(x‐xData(i+1))/h
‐yData(i+1)*(x‐xData(i))/h;
Tacóchươngtrình
ctcubicspline.mdùngnộisuy:
clearall,clc
x1=0:0.1:5;
y1=(x1+1).^2;
while1
x=input(ʹx=ʹ);
ifisempty(x)
fprintf(ʹKetthucʹ);
break
221
end
y=cubicspline(xData,yData,x)
fprintf(ʹ\nʹ)
kk
b
ababa2n12kab
xx cos
2222(n1)2
−+− +−+
′
=+= π+
+
k=1,2,…,n (2)
CácnútnộisuynàyđượcgọilàcácnútChebyshev.Đathứcnộisuydựatrên
cácnútChebyschevgọilàđathứcnộisuyChebyshev.
Taxéthàmthực:
2
1
f(x)
18x
=
+
Tachọnsốnútnộisuylầnlượtlà5,9,11vàxâydựngcácđathứcNewton
(hayLagrange)c
4(x),c8(x)vàc10(x)điquacácnútnàyvàvẽđồthịcủahàm
thựccũngnhưsaisốkhinộisuybằngchươngtrình
ctcomchebynew.mvớicác
Nkhácnhau.
x1=[‐1‐0.500.51.0];
y1=f31(x1);
n1=newton(x1,y1);
%dothisaiso
Khităngsốđiểmmốc,nghĩalàtăngbậccủađathứcChebyschev,saisốgiảm.
ĐathứcChebyshevbậcnđượcxácđịnhbằng:
T
n+1(xʹ)=cos((n+1)arccos(xʹ))(3)
vàcácnútChebyshevchobởi(1)lànghiệmcủa(3).
Tacó:
n1
n
nn1n1
T (x ) cos(arccos(x ) narccos( x ))
cos(arccos(x ))cos(narccos(x ) sin(arccos(x ))sin(narccos(x ))
x T (x ) 0.5 cos((n 1)arccos(x ) cos((n 1)arccos(x )
x T (x ) 0.5T (x ) 0.5T (x )
+
+−
′′′
=+
′′′′
=−
′′ ′ ′
=+ + −−
⎡⎤
⎣⎦
′′ ′ ′
=+ −
nên:
5
‐20ʹx
3
+5xʹ
T
6(xʹ)=32xʹ
6
‐48xʹ
4
+18xʹ
2
‐1
T
7(xʹ)=64xʹ
7
‐112xʹ
5
+56xʹ
3
‐7xʹ
Hàmf(x)đượcxấpxỉbằng:
N
2ab
mm
xx
b
a2
m0
f(x) d T (x )
n
k
k0
2
d f(x )T (x )
n1
2m(2n12k)
f(x )cos m 1,2, ,n
n1 2(n1)
=
=
′
=
+
+−
=π=
++
∑
∑
(8)
Taxâydựnghàm
cheby()đểtìmđathứcnộisuyChebyshev:
function[c,x,y]=cheby(f,N,a,b)
%vao:f=tenhamtrendoan[a,b]
%Ra:c=CachesocuadathucNewtonbacN
%(x,y)=cacnutChebyshev
ifnargin==2
a=‐1;
b=1;
=
+
ta dùngchương
trình
ctcheby.m:
clearall,clc
N=2;
a=‐2;
b=2;
[c,x1,y1]=cheby(ʹf31ʹ,N,a,b)%dathucChebyshev
%sosanhvoidathucLagrange/Newton
k=[0:N];
xn=cos((2*N+1‐2*k)*pi/2/(N+1));%pt.(1):nutChebyshev
x=((b‐a)*xn+a+b)/2;%pt.(2)
y=f31(x);
n=newton(x,y)
l=lagrange(x,y)
§6.XẤPXỈHÀMBẰNGPHÂNTHỨCHỮUTỈ
XấpxỉPadédùngđểxấpxỉhàmf(x)tạix0bằnghàmhữutỉ:
m0
m,n 0
n0
Q(x x)
P(xx)
D(x x)
00
2mn
01 0 2 0 mn 0
f(x) T (x) f(x ) f (x )( x x )
f(x) f (x)
(x x) (x x)
2! (m n)!
a a (x x ) a (x x ) a (x x )
+
+
+
+
+
′
≈=+−
′′
+−++ −
+
=+ − + − ++ −
L
L
(2)
Đểđơngiảntacoix
0=0.TacầntínhcáchệsốcủaDn(x)vàQm(x)saocho:
m
mn
n
Q(x)
T(x) 0
++++ =
⎪
⎩
L
L
(4)
m1 m 1 m1 2 mn1 n
m2 m1 1 m 2 mn2 n
mn mn1 1 mn2 2 m n
aadad ad0
aadad ad0
aadad ad0
+−−+
++ −+
++− +−
++ ++ =
⎧
⎪
++++ =
⎪
⎨
⎪
⎪
++++=
⎩
L
L
L
mm=min(m‐1,N);
q(m)=a(m:‐1:m‐mm)*[1;d(1:mm)];%pt.(4)
end
num=q(M+1:‐1:1)/d(N);den=[d(N:‐1:1)ʹ1]/d(N);%giamdan
ifnargout==0%vehamthuc,khaitrientaylorvaham
Pade
ifnargin<6
x0=xo‐1;
xf=xo+1;
end
x=x0+[xf‐x0]/100*[0:100];
yt=feval(f,x);
x1=x‐xo;
yp=polyval(num,x1)./polyval(den,x1);
yT=polyval(a(M+N+1:‐1:1),x1);
clf,plot(x,yt,ʹkʹ,
x,yp,ʹrʹ,x,yT,ʹbʹ)
end
Đểxấpxỉhàme
x
tadùngchươngtrìnhctpadeapp.m:
f1=inline(ʹexp(x)ʹ,ʹxʹ);
M=3;
N=2;%baccuaQ(x)vaD(x)
xo=0;%tamcuachuoiTaylor
[n,d]=padeapp(f1,xo,M,N)%tinhcachesocuaQ(x)/P(x)
x0=‐3.5;
32
131211101
2
0302010
2
1312111
h(x ) H x H x H x H y
h(x ) H x H x H x H y
h(x ) 3H x 2H x H y
h(x ) 3H x 2H x H y
⎧
=+++=
⎪
=+++=
⎪
⎨
′′
=++=
⎪
⎪
′′
=++=
⎩
(2)
Cácđạohàmbậcnhấtđượctínhgầnđúngbằng:
20
00
0
13
−ε = − ε ,(x1,y1)
Hàm
hermit()tạonênphươngtrình(2):
functionH=hermit(x0,y0,dy0,x1,y1,dy1)
A=[x0^3x0^2x01;x1^3x1^2x11;
3*x0^22*x010;3*x1^22*x110];
b=[y0y1dy0dy1]’;%Pt.(2)
H=(A\b)’;
Hàm
hermits()dùnghàmhermit()đểtínhcáchệsốcủađathứcHermittrên
nhiềuđoạnvàgiátrịnộisuy:
function[H,yi]=hermits(x,y,dy,xi)
%TimcachesocuacdathucHermitetrencdoan
clc
forn=1:length(x)‐1
H(n,:)=hermit(0,y(n),dy(n),x(n+1)‐x(n),y(n+1),dy(n+1));
228
end
yi=ppval(mkpp(x,H),xi)
Đểnộisuytadùngchươngtrìnhcthermite.m:
clearall,clc
x=
=
=
∑
(1a)
iDFT:
N1
j
2nk/N
n0
1
x[n] X(k)e
N
−
π
=
=
∑
(1b)
NóichunghệsốDFTcủaX(k)làmộtsốphứcvànóxácđịnhbiênđộvàpha
của thành phần tín hiệu có tần số số Ω
k = k Ω0(rad), tươngứng với tần số
tươngtựω
k=kω0=kΩ0/T=2πk/NT(rad/s).TagọiΩ0=2π/Nvàω0= 2π/NTlà
cáctầnsốcơbảnsốvàtươngtự(tầnsốphângiải)vìđâylàhiệutầnsốcóthể
phânbiệtbởiNđiểmDFT.
DFT và DFS có cùng bản chất
nhưng khác nhau về phạm vi thời
gian/tầnsố.Cụthểlàtínhiệux[n]vàDFTX[k]củanókéodàihữuhạntrên
phạmvithờigian/tầnsố{0≤n≤N‐1}và{0
≤k≤N‐1}.Tínhiệux[n]được
fork=0:N‐1
X(k+1)=x*exp(‐j*2*pi*k*n/N).ʹ;
end%DFT
k=[0:N‐1];
forn=0:N‐1
xr(n+
1)=X*exp(j*2*pi*k*n/N).ʹ;
end%IDFT
time_dft=toc
plot(k,abs(X))
pause,holdon
tic
X1=fft(x);%FFT
xr1=ifft(X1);%IFFT
time_fft=toc%duarathoigianthuchien
clf,plot(k,abs(X1),ʹrʹ)%phobiendo
Chạyđoạnlệnhvàsosánhthờigianthựchiện1024đi ểmtínhDFT/iDFTvà
FFT/iFFT.
230
2.ÝnghĩavậtlýcủabiếnđổiFourrierrờirạc:Đểhiểuđượcýnghĩavậtlícủa
FFttathựchiện cáclệnhtrongchươngtrình
ctmeanning.m.Chươngtrìnhcho
taphổbiênđộcủatínhiệu
x(t)=sin(1.5πt)+0.5cos(3πt)(2)
đượclấymẫumỗiTs.
TừcáckếtquảtathấykhiT=0.1vàN =32thìX
a(k)lớntạik=2vàk=5.
subplot(421)
stem(t,xan,ʹ.ʹ)
k=0:N‐1;
Xa=fft(xan);
dscrp=norm(xan‐real(ifft(Xa)))
subplot(423)
stem(k,abs(Xa),ʹ.ʹ)
N=32;
n
=[0:N‐1];
231
T=0.1;
t=n*T;
xan=sin(w1*t)+0.5*sin(w2*t);
subplot(422)
stem(t,xan,ʹ.ʹ)
k=0:N‐1;
Xa=fft(xan);
Dscrp=norm(xan‐real(ifft(Xa)))
subplot(424)
stem(k,abs(Xa),ʹ.ʹ)
N=64;
n=[0:N‐1];
T=0.05;
t=n*T;
xbn=sin(w1*t)+0.5*sin(w2*t);
subplot(425)
stem(t,xbn,
ʹ.ʹ)
j2 kt/ NT
k1
1
ˆ
x(t) X(k)e
N
1
X(0) 2 Real X(k )e X(N/ 2)cos( /T)
N
π
<
−
π
=
=
⎧⎫
⎡⎤
=+ + π
⎨⎬
⎣⎦
⎩⎭
∑
∑
%
(5)
Taxâydựnghàmnộisuy
interpdfs():
function[xi,Xi]=interpdfs(T,x,Ws,ti)
%T:chulilaymau
w2=.5*pi;%haitanso
N=32;
n=[0:N‐1];
T=0.1;
t=n*T;
x=sin(w1*t)+0.5*sin(w2*t)+(rand(1,N)‐0.5);%0.2*sin(20*t);
ti=[0:T/5:(N‐1)*T];
subplot(411),plot(t,x,ʹk.ʹ)%solieubandau
title(ʹSolieubandauvaketquanoisuyʹ)
[xi,Xi]=interpdfs(T,x,1,ti);
holdon,plot(ti,xi,ʹrʹ)%taitaotinhieu
k=[0:N‐1];
subplot(412),stem(k,abs(Xi),ʹk.ʹ)%phobandau
title(ʹPhobandauʹ)
[xi,Xi]=interpdfs(T,x,1/2,ti);
subplot(413),stem(k,abs(Xi),ʹr.ʹ)%phodaloc
title(ʹPhodalocʹ)
subplot(414),plot(t,x,ʹk.ʹ,ti,xi,ʹrʹ)%tin
hieudaloc
title(ʹTinhieudalocʹ)
§9.XẤPXỈHÀMBẰNGPHƯƠNGPHÁPBÌNHPHƯƠNGBÉNHẤT
1.Kháiniệmchung
:Trongcácmụctrướctađãn ội suygiátrịcủahàm.Bài
toánđólàchomộthàmdướidạngbảngsốvàphảitìmgiátrịcủahàmtạimột
giátrịcủađốis
ốkhôngnằmtrongbảng.
Trongthựctế,bêncạnhbàitoánnộisuytacòngặpmộtdạngbàitoán
khác.Đólàtìmcôngthứcthựcnghiệmcủamộthàm.
Nộidungbàitoán
[]
{}
nn
2
2
ii00i11i mmi
i1 i1
S e y af(x) af(x) a f (x)
==
= = − + +⋅⋅⋅+
∑∑
RõràngSlàhàmcủacácgiátrịcần tìma
ivàchúngtasẽchọncácaisao
choSđạtgiátrịmin,nghĩalàcácđạohàm
i
a
S
∂
∂
phảibằngkhông.
Tasẽxétcáctrườnghợpcụthể.
2.Hàmxấpxỉcódạngđathức:Trongtrườnghợptổngquáttachọnhệhàm
xấpxỉlàmộtđathức,nghĩalà:
f(x)=a
0+a1x+a2x
2
+∙∙∙+amx
m
⎪
⎪
⎨
⎧
=+⋅⋅⋅++
⋅⋅⋅
=+⋅⋅⋅++
=+⋅⋅⋅++
=+⋅⋅⋅++
=+⋅⋅⋅++
∑∑∑∑
∑∑∑∑
∑∑∑∑
∑∑∑∑
∑∑∑
====
−
−
====
+
−
+
====
+
−
+
====
−
+
===
n
1i
2m
i1m
3m
im
n
1i
i
2
i
n
1i
2
i0
n
1i
n
1i
1m
i1m
2m
im
n
1i
ii
n
1i
i0
n