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(
L
ni1ii1ii0i
n1i1i0
i
−−−−
−
−
−−
=
+−
+−
RõrànglàL
i(x)làmộtđathứcbậcnvà:
⎩
⎨
⎧
≠
=
=
ij0
ij1
)x(L
ji
TagọiđathứcnàylàđathứcLagrangecơbản.
Bâygiờtaxétbiểuthức:
∑
=
=
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
0
1
xx
xx
L
−
−
=
211
nên
01
0
1
10
1
01
xx
xx
y
xx
xx
y)x(P
−
−
+
−
−
=
NhưvậyP
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(
)xx)(xx(
L
1202
10
2
−−
−−
=
NhưvậyP
1(x)làmộtđathứcbậchaiđốivớix.
Taxâydựnghàm
lagrange()đểthựchiệnviệcnộisuyhàmtheothuậttoán
Lagrange:
function[l,L]=lagrange(x,y)
%Duavao:x=[x0x1 xn],y=[y0y1 yn]
%ketqua:l=HesocuadathucLagrangebacn
%L=DathucLagrange
n=length(x)‐1;%baccuadathucl
l=0;
for
m=1:n+1
p=1;
fork=1:n+1
ifk~=m
p=conv(p,[1‐x(k)])/(x(m)‐x(k));
end
end
L(m,:)=p;%dathucLagrange
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
…
xn‐1 xn
y y0 y1 y2
…
yn‐1 yn
Tỉhiệucấp1củaytạix
i,xjlà:
ji
ji
ji
xx
yy
]x,x[y
−
−
=
Tỉhiệucấphaicủaytạix
i,xj,xklà:
k
i
k
jji
k
ji
xx
]x,x[y]x,x[y
]x,x,x[y
−
−
=
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ừcácđịnhnghĩatỉhiệutasuyra:
P
n(x)=Pn(x0)+(x‐x0)Pn[x,xo]
P
n[x,x0]=Pn[x0,x1]+(x‐x1)Pn[x,xo,x1]
P
n[x,xo,x1]=Pn[x0,x1,x2]+(x‐x2)Pn[x,xo,x1,x2]
P
n[x,xo, ,xn‐1]=Pn[x0,x1, ,xn]+(x‐xn)Pn[x,xo, ,xn]
Do P
n[x,xo, ,xn]=0nêntừđótacó:
P
n(x)=Pn(x0)+(x‐x0)Pn[xo,x1]+(x‐x0)(x‐x1)Pn[x0,x1,x2]+…
+(x‐x
0)…(x‐xn‐1)Pn[x0,…,xn]
NếuP
n(x)làđathứcnộisuycủahàmy=f(x)thì:
P
n(xi)=f(xi)=yivớii=0÷n
Dođócáctỉhiệutừcấp1đếncấpncủaP
nvàcủaylàtrùngnhauvà
nhưvậytacó:
P
n(x)=y0+(x‐x0)y[x0,x1]+(x‐x0)(x‐x1)y[x0,x1,x2]+ +
(x‐x
0)(x‐x1) (x‐xn‐1)y[x0, ,xn]
ĐathứcnàygọilàđathứcnộisuyNewtontiếnxuấtpháttừnútx
0của
hàmy=f(x).NgoàiđathứctiếncòncóđathứcnộisuyNewtonlùixuấtphát
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
∆
=
[]
2
0
2
210
h2
y
x,x,xy
∆
=
214
[]
n
0
n
n210
h!n
y
x, ,x,x,xy
∆
=
Bâygiờđặtx=x
0+httrongđathứcNewtontiếntađược:
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
000n
y
!2
)1t(t
yty)htx(P ∆
−
+∆+=+
Mộtcáchtươngtựtacókháiniệmcácsaiphânlùitạii:
∇y
i=yi‐yi‐1
∇
2
yi=∇(∇yi)=yi‐2yi‐1+yi‐2
∇
n
yi=∇(∇
n‐1
yi)
vàđathứcnộisuyNewtonlùikhicácđiểmnộisuycáchđều:
n
n
n
2
nn0n
y
!n
)1nt()1t(t
y
!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
215
n=[na(k)]‐[0n*x(k)];
end
Chohàmdướidạngbảng:
x‐2‐1 1 2 4
y‐6 0 0 6 60
Tadùngchươngtrình
ctnewton.mđểnộisuy:
clearall,clc
x=
[‐2‐1124];
y=[‐600660];
a=newton(x,y)
yx=polyval(a,2.5)
§3.NỘISUYAITKEN‐NEVILLE
Một dạng khác củađa thức nội suyđược xácđịnh bằng thuật toán
Aitken‐Neville.Giảsửtacónđiểmđãchocủahàmf(x).Nhưvậyquahai
điểm x
0 và x1 ta cóđa thức nội suy Lagrange của hàm f(x)được viết dưới
dạng:
01
11
00
01
xx
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
011
000
001
y
xx
xxy
xxy
)x(P =
−
−
−
=
Khix=x
1thì:
1
01
111
100
101
y
xx
xxy
xxy
)x(P =
−
−
−
=
ĐathứcnộisuyLagrangecủaf(x)qua3điểmx
0,x1,x2códạng:
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
20
1
2010
21
0012
−−
−
−
+
−−
−
−
+
−−
−−
=
Khix=x
0thì:
0
02
0212
000
0012
y
xx
xx)x(P
xxy
)x(P =
−
−
−
=
Khix=x
1thì:
1
02
121
101
1012
y
xx
xxy
xxy
)x(P =
−
−
−
=
Khix=x
2thì:
2
02
222
20201
2012
y
xx
xxy
xx)x(P
)x(P =
−
−
−
=
TổngquátđathứcnộisuyLagrangequanđiểmlà:
02
nn 12
0)1n (01
n 012
xx
xx)x(P
xx)x(P
)x(P
−
−
−
=
−
Như vậy ta có thể dùng phép lặpđểxácđịnh lần lượt cácđa thức
Lagrange.SơđồtínhtoánnhưvậygọilàsơđồNeville‐Aitken.
Taxâydựnghàm
aitkenneville()đểnộisuy:
functiona=aitkenneville(xData,yData,x)
%Travegiatrinoisuytaix.
%Cuphap:y=aitkenneville(xData,yData,x)
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
=
+
vànộisuynóbằngthuậttoánNewtonnhờchươngtrình
cttestintp.m
%NoisuyNewton
x1=[‐1‐0.500.51.0];
y1=f31(x1);
n1=newton(x1,y1)
x2=[‐1‐0.75‐0.5‐0.2500.250.50.751.0];
y2=f31(x2);
n2=newton(x2,y2)
x3=[‐1‐0.8‐0.6‐0.4‐0.200.20.40.60.81.0];
y3
=f31(x3);
n3=newton(x3,y3)
xx=[‐1:0.02:1];%phamvinoisuy
yy=f31(xx);%hamthuc
yy1=polyval(n1,xx);%hamxapxiqua5diem
yy2=polyval(n2,xx);%hamxapxiqua9diem
yy3=polyval(n3,xx);%hamxapxiqua11diem
subplot(221)
plot(xx,
yy,ʹk‐ʹ,xx,yy1,ʹbʹ)
subplot(224)
218
plot(xx,yy1‐yy,ʹrʹ,xx,yy2‐yy,ʹgʹ,xx,yy3‐yy,ʹbʹ)%dothisaiso
subplot(222)
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
i,i+1(xi)=ai=yi (3)
32
i,i1 i1 ii ii ii i i1
f(x)dh ch bha y
++ +
=+++=(4)
i,i 1 i i
f(x)b
+
′
= (5)
2
i,i 1 i 1 i i i i i
f(x)3dh 2ch b
++
′
=++(6)
i,i 1 i i i
f(x)2c y
+
′′ ′′
==
(7)
i,i1 i1 i i i i1
f(x)6dh2cy
++ +
′′ ′′
=+=(8)
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
i‐1
xi
xi+1
yi‐1
yi+1
yi
f
i‐1,i
f
i,i+1
219
i1 i
ii1
ii1 i1i
xx xx
L (x) L ( x)
xx x x
+
+
++
−−
==
−−
Dovậy:
ii1i1i
i,i 1 i
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.
ĐặtC=A‐BvàD=‐Ax
i+1+Bxiđểdễdàngtính toán.Từđiềukiệnfi,i+1(xi)=yi
tacó:
3
ii i1
ii1 i
ii1
k(x x )
A(x x ) y
6(x x )
+
+
+
−
+−=
−
nên:
i
ii i1
ii1
y
k(x x )
A
xx 6
+
+
−
=−
−
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
ii1
k(xx)
f (x ) (x x )(x x )
6xx
k(xx)
(x x )(x x )
6xx
y(x x ) y (x x)
xx
+
+++
+
+
+
+
++
+
⎡⎤
−
=−−−
⎢⎥
−
⎣⎦
⎡⎤
−
−−−−
⎢⎥
−
⎣⎦
−− −
+
−
Đạ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
−− − + + +
−+
−+
−+ − + −
⎛⎞
−−
=−
⎜⎟
−−
⎝⎠
Khicácđiểmchiacáchđều(x
i+1‐xi)=htacó:
220
()
i1 i i1 i1 i i1
2
6
k4kk y2yy
h
−+−+
++= −+ i=2,3,…,n‐1
Taxâydựnghàm
cubicspline()đểnộisuy:
functiony=cubicspline(xData,yData,x)
%Hamnayxapxibangdathucbac3spline
%Cuphap:[yi,f]=cubicspline(xData,yData,x)
n=length(xData);
c=zeros(n‐1,1);d=ones(n,1);
e=zeros(n‐1,1);k=zeros(n,1);
c(1:n‐2)=xData(1:n‐2)‐xData(2:n‐1);
d(2:n‐1)=2*(xData(1:n‐2)‐xData(3:n));
e(2:n‐1)=xData(2:n‐1)‐xData(3:n);
k(2:n‐1)=6*(yData(1:n‐2)‐yData(2:n‐1))
./(xData(1:n‐2)‐xData(2:n‐1))
‐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ʹ)
end
§5.NỘISUYBẰNGĐATHỨCCHEBYSHEV
Khi nội suy bằngđa thức Newton hay Lagrange, nghĩa là thay hàm
thựcbằngđathứcxấpxỉ,cókhoảngcáchcáchđềuthìsaisốgiữađathứcnội
suyvàhàmthựccóxu
hướngtăngtạihaimútnộisuy.Tathấyrõđiềunày
khichạychươngtrình
cttestintp.m.
Dovậytanênchọncácđiểmmốcnộisuyở
haimútdàyhơnởgiữa.Mộttrongnhữngcách
chọn phân bố cácđiểm mốc là hình chiếu lên
trục x của cácđiểm
cáchđều trênđường tròn
tâmtạiđiểmgiữacủađoạnnộisuy.Nhưvậyvới
đoạnnộisuy[‐1,1]tacó:
k
2n 1 2k
xcos
2(n 1)
+−
′
=π
+
k=1,2,…,n(1)
Vớiđoạnnộisuy[a,b]bấtkì:
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);
xx=[‐1:0.02:1];%phamvinoisuy
yy1=polyval(n1,xx);%hamxapxiqua5diem
yy=f31(xx);%hamthuc
‐1
1
1
x
′
222
subplot(221)
plot(xx,yy,ʹk‐ʹ,x,y,ʹoʹ,xx,yy1,ʹbʹ);
title(ʹNewtonʹ)
subplot(223)
plot(xx,yy1‐yy,ʹrʹ)%dothisaiso
N=4;
k=[0:N];
x=cos((2*N+1‐2*k)*pi/2/(N+1));
y=f31(x);
c=newton(x,y)%dathucnoisuydua
trencacnutChebyshev
xx=[‐1:0.02:1];%doannoisuy
yy=f31(xx);%dothihamthuc
yy1=polyval(c,xx);%dothihamxapxi
subplot(222)
plot(xx,yy,ʹk‐ʹ,x,y,ʹoʹ,xx,yy1,ʹbʹ)
title(ʹChebyshevʹ)
subplot(224)
plot(xx,yy1‐yy,ʹrʹ)
%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:
n1 n n1
T (x) 2xT (x) T (x)
+−
′′′
=−
n≥1(4)
và T
0(xʹ)=1 T1(xʹ)=cos(arccos(xʹ)=xʹ(5)
CácđathứcChebyshevđếnbậc6là:
T
0(x)=1
T
1(xʹ)=xʹ
T
2(xʹ)=2xʹ
2
‐1
223
T3(xʹ)=4xʹ
3
‐3xʹ
T
4(xʹ)=8xʹ
4
‐8ʹx
2
+1
T5(xʹ)=16xʹ
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 )
+
⎛⎞
′
=−
⎜⎟
−
⎝⎠
=
′
=
∑
(6)
Trongđó:
nn
0k0k k
k0 k0
11
d f(x )T (x ) f(x )
n1 n1
==
′
==
++
∑∑
(7)
n
mkmk
k0
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;
end
k=
[0:N];
theta=(2*N+1‐2*k)*pi/(2*N+2);
xn=cos(theta);%pt.(1)
x=(b‐a)/2*xn+(a+b)/2;%pt.(2)
y=feval(f,x);
d(1)=y*ones(N+1,1)/(N+1);
form=2:N+1
cos_mth=cos((m‐1)*theta);
d(m)=y*cos_mthʹ*2/(N+1);%pt.(7)
end
xn=[2‐(a+b)]/(b‐a);%nghichdaocuat.(2)
224
T_0=1;T_1=xn;%pt.(5)
c=d(1)*[0T_0]+d(2)*T_1;%pt.(6)
form=3:N+1
tmp=T_1;
T_1=2*conv(xn,T_1)‐[00T_0];%pt.(4)
T_0=tmp;
c=[0c]+d(m)*T_1;%pt.(6)
end
Đểtìmđa thứcChebyshev dùngxấp xỉhàm
2
1
f(x)
18x
=
+
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)
−
−=
−
2m
01 0 2 0 m 0
2n
1020 n0
qq(xx)q(xx) q(xx)
1 d (x x ) d (x x ) d (x x )
+−+−++ −
=
+−+−++−
L
L
(1)
vớim=nhaym=n+1
Trongđóf(x
0),fʹ(x0),…,f
(m+n)
(x0)đãcho
TrướchếttakhaitriểnTaylorhàmf(x)tạix=x
0đếnbậc(m+n).
225
mn 0 0 0
(m n)
2mn
00
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
D(x)
+
−=hayTm+n(x)Dn(n)‐Qm(x)=0
nghĩalà:
mn n m
01 mn 1 n 01 m
(a a x a x )(1 d x d x ) (q q x q x )
+
+
+++ +++ =+++LLL(3)
Cânbằngcácsốhạngcùngbậcởhaivếtacó:
00
101 1
21102 2
mm11m22 mnn m
aq
aadq
aadadq
aadad adq
−− −
=
⎧
⎪
+=
⎪
⎪
++=
⎨
⎪
⎪
++++ =
⎪
⎩
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
L
(5)
Trướchếttagiải(5)đểtìmd
ivàsauđóthayvào(4)đểtìmqi.
Taxâydựnghàm
padeapp()đểtínhxấpxỉ:
function[num,den]=padeapp(f,xo,M,N,x0,xf)
%Vao:f=Hamcanxapxitrongdoan[xo,xf]
%Ra:num=Cachesocuatuso
%den=Cachesocuamauso
a(1)=feval(f,xo);
h=.01;
tmp=1;
for
i=1:M+N
tmp=tmp*i*h;%i!h^i
dix=difapx(i,[‐ii])*feval(f,xo+[‐i:i]*h)ʹ;%daoham
a(i+1)=dix/tmp;%hesochuoiTaylor
226
end
form=1:N
n=1:N;
A(m,n)=a(M+1+m‐n);
b(m)=‐a(M+1+m);
end
d=A\bʹ;%pt.(5)
form=1:M+1
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;
xf=0.5;%bientraivaphaicuakhoangxapxi
padeapp(f1,xo,M,N,x0,xf)%xemdothi
227
§7.NỘISUYBẰNGĐATHỨCHERMIT
Trongmộtsốtrườnghợp,tacầntìmhàmđathứckhôngnhữngđiqua
cácđiểmchotrướcmàcònphảithoảmãnđiềukiệnvềđạohàmtạicácđiểm
đó.Tagọiđa
thứcnhưvậylàđathứcnộisuyHermit.Đểđơngiản,takhảo
sátmộtđathứcbậc3:
32
3210
h(x) H x H x H x H=+++(1)
điquahaiđiểm(x
0,y0),(x1,y1)vàcócácđạohàmlà
01
y,y
′
′
.Tatìmcáchệsố
H
ibằngcáchgiảihệphươngtrình:
32
030201000
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
11
1
yy
h(x ) h(x )
y
yy
h(x ) h(x )
y
−
+ε −
′
==
εε
−
−−ε
′
==
εε
(3)
BâygiờtatìmđathưcnộisuyLagrangehayNewtonđiqua4điểm:
(x
0,y0),
20 2 00
(x x , y y y )
′
=+ε =+ε,
31 3 11
(x x ,y y y )
′
=
−ε = − ε ,(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=
[0123];
y=[1245];
dy=[0246];
[
h,y]=hermits(x,y,dy,1.5)
§8.BIẾNĐỔIFOURIER
1.BiếnđổiFourrier
:Tínhiệuthựctếthườngbaogồmcácthànhphầncótần
số khácnhau. Chuỗi Fouriervà phép bíếnđổiFourierlà côngcụ toán học
dùngđểphântíchđặctínhtầnsốcủatínhiệu.Có
4địnhnghĩatươngtựnhau
vềchuỗivàphépbiếnđổiFourier,gồm:chuỗiFourierliêntụctheot(CFS),
phép biến đổi Fourier liên tục theo t(CFT), chuỗi Fourier giánđoạn theo
t(DFS) và phép biếnđổi
Fourier giánđoạn theo t(DFT). Trong các công cụ
này,DFTdễdànglậptrìnhtrênmáytínhnêntrongphầnnàytasẽchúýđến
nó.
Giảsửchuỗisốliệu{x[n]=x(nT),n=0:M‐1}vớiT
làchukìlấymẫu
cóđượcbằngcáchlấymẫumộttínhiệuliêntụcx(t)Tlầntrongmộtgiây.N
cặpđiểmDFTvàiDFTđượcđịnhnghĩabằng:
DFT:
N1
‐j2 nk/N
n0
X(k) x[n]e
−
π
=
=
∑
(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
229
phântíchbởiDFSvàDFScủanóX(k)làchukìtínhiệuvớichukìNtrêntoàn
bộtậpsốnguyên.
BiếnđổiFouriernhanhFFTlàthuậttoánhiệuquảđểtínhDFTvàiDFT
được xây dựng
bằng cách dùng tính chu kì và tínhđối xứng cuả nhân tử
e
i2
π
nk/N
đểgiảmbớtsốnhântửphứctừN
2
thành(N/2)log2N)Nthểhiệnkích
thướccủaDFT.HàmMATLABfft()vàifft()thựchiệnthuậttoánđốivớiN =
2
l
(llàsốnguyênkhôngâm).NếuđộdàiMcủachuỗisốliệubanđầukhông
phảilàbộisốcủa2,cóthểmởrộngbằngcáchđệmthêmsố0vàocuốichuỗi
vàgọilàđệm
zero.
Ta xem xét hiệu qủa này bằng cách thực hiệnđoạn lệnh trong
ctcompdftfft.m.
%SosanhphepbiendoiFouriernhanhvaroirac
clear,clf
N=2^10;
n=[0:N‐1];
x=cos(2*pi*200/N*n)+0.5*sin(2*pi*300/N*n);
tic%ngungdongho
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.
Lúcđókω
0=2πk/NT=2πk/3.2≈1.5πvà3.125π≈3π.
KhiT=0.05vàN=64thìX
b(k)cũnglớntạik=2vàk=5.Lúcđó
kω
0=1.25π≈1.5πvà3.125π≈3π.
KhiT=0.1vàN=64thìX
c(k)lớntạik=4,k=5,k= 9vàk=10.Lúcđó
kω
0=2πk/NT=2πk/6.4≈1.25π~1.5625πvà2.8125π~3π.
Khi T = 0.1 và N = 64 thì X
d(k) lớntại k = 5 và k = 10. Lúcđókω0 =
1.5625π≈1.5πvà3.125π≈3π.
TồntạinhiềuphổDFTkhácnhaucủacùngmộttínhiệutươngtự,tuỳ
thuộcvàokíchthướcDFT,chukìlấymẫu,khoảngbiến
thiêncủahàmvàđệm
zero.SosánhvớiphổtạiT=0.1s,phổtạiT=0.05scóphạmvitầnsốtươngtự
[0,2π/T
b]rộnghơnnhưngcócùngtầnsốphângiảitươngtựlàω0=Ω0/Tb=
2π/N
bTb=π/1.6=2π/NaTa.Phổkhicóđệmzerotrơn.
clear,clf
w1=1.5*pi;
w2=3*pi;
N=32;
n=[0:N‐1];
T=0.1;%chukilaymau
t=n*T;
xan=sin(w1*t)+0.5*sin(w2*t);
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,
ʹ.ʹ)
k=0:N‐1;
Xb=fft(xbn);
subplot(427)
stem(k,abs(Xb),ʹ.ʹ)
N=64;
n=[0:N‐1];
T=0.1;
t=n*T;
xbn=sin(w1*t)+0.5*sin(w2*t);
subplot(426)
stem(t,xbn,ʹ.ʹ)
k=0:N‐1;
Xb=fft(xbn);
subplot(428)
stem(k,abs(Xb),ʹ.ʹ)
Ta cónhiều phổ DFT chocùng một tínhiệu tương tự, tuỳ thuộc vào
kíchthướcDFT,chukìlấymẫu,khoảnglấymẫuvàđệmzero.Sosánhphố
khigiảmchukìlấy
mẫuTtừ0.1sđến0.05s
232
3.NộisuybằngcácdùngbiếnđổiFourrierrờirạc:TadùngDFS/DFTđểnội
suydãyx[n]nhậnđượctừkếtquảlấymẫutínhiệuởkhoảngcáchcáchđều.
Thủtụcgồmhaibước:lấyNđiểmFFTX(k)củax[n]vàdùngcôngthức:
j2 kt/ NT
|k| N / 2
N/2 1
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
%x:thuturoirachoa
%Ws:tansodungchuan(1.0=pi[rad])
%ti:khoangthoigiannoisuy
ifnargin<4
ti=5;
end
ifnargin<3|Ws>1
Ws=1;
end
N=length(x);
iflength(ti)==1
ti=0:T/ti:(N‐1)*T;%khoangconduocchiachoti
end
ks=ceil(Ws*N/2);
Xi=fft(x);
Xi(ks+2:N‐ks)=zeros(1,N‐2*ks‐1);%phodaloc
xi=zeros(1,length(ti));
fork=2:N/2
xi=xi+Xi(k)*exp(j*2*pi*(k
‐1)*ti/N/T);
end
xi=real(2*xi+Xi(1)+Xi(N/2+1)*cos(pi*ti/T))/N;%pt.(.5)
Đểnộisuytadùngchươngtrìnhctfourier.m:
clear,clf
233
w1=pi;
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
làtừmộtloạtcácđiểmchotrước(cóthểlàcácgiátrị
củamộtphépđonàođó)taphảitìmmộthàmxấpxỉcácgiátrịđãcho.Tasẽ
dùngphươngphápbìnhphương
tốithiểuđểgiảibàitoán.
Giảsửcómẫu quansát(x
i,yi)củahàmy= f(x).Tachọnhàmf(x) có
dạng:
f(x)=a
0f0(x)+a1f1(x)+a2f2(x) (1)
Trongđócáchàmf
0(x),f1(x),f2(x)v.v.là(m+1)hàmđộclậptuyếntínhmàta
cóthểchọntuỳývàcách ệsốa
ilàthamsốchưabiếtmàtaphảixácđịnh dựa
234
vàohệhàmđãchọnvàcácđiểmquansát.Saisốgiữatrịđođượcvàtrịtính
theo(1)là:
e
i=yi‐f(xi)(2)
Sai số này có thểâm hay dươngtuỳ từng giátrị củay
i.Khi dùng phương
phápbìnhphươngbénhấttaxétbìnhphươngcủasaisốtạimộtđiểm:
[]
22
ii i
eyf(x)=−
(3)
Vớinđiểmtổngbìnhphươngcủasaisốsẽlà:
[]
{}
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
VậyhàmSlà:
(
)
2
2m
i01 2 m
Syaaxax ax=−++ +⋅⋅⋅+
Theođiềukiệnđạohàm
0
a
S
i
=
∂
∂
tanhậnđượchệphươngtrình:
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎩
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎨
⎧
=+⋅⋅⋅++
⋅⋅⋅
=+⋅⋅⋅++
=+⋅⋅⋅++
=+⋅⋅⋅++
=+⋅⋅⋅++
∑∑∑∑
∑∑∑∑
∑∑∑∑
∑∑∑∑
∑∑∑
====
−
−
====
+
−
+
====
+
−
+
====
−
+
===
−
−
n
1i
i
m
i
n
1i
m
i0
n
1i
n
1i
1m2
i1m
m2
im
n
1i
i
3
i
n
1i
3
i0
n
1i
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
1i
n
1i
m
i1m
1m
im
n
1i
i0
n
1i
n
1i
1m
i1m
m
im
yxxaxaxa
yxxaxaxa
yxxaxaxa
yxxaxaxa
ynaxaxa
Đâylàmộthệphươngtrìnhtuyếntính.Giảinótanhậnđượccácgíatrịa
i.
Taxâydựnghàm
polynomfit()thựchiệnthuậttoántrên: