Thứ Năm, 20 tháng 2, 2014
Tài liệu CHƯƠNG 3: NỘI SUY VÀ XẤP XỈ HÀM ppt
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)
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét