Tải bản đầy đủ (.pdf) (33 trang)

Phương pháp tính với C++ - Chương 2 pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (809.08 KB, 33 trang )

CHƯƠNG2:GIẢIGẦNĐÚNGPHƯƠNGTRÌNH
ĐẠISỐVÀSIÊUVIỆT


§1.KHÁINIỆMCHUNG
 Nếu phương trìnhđại số hay siêuviệt khá phứctạp thìít khi tìm
đượcnghiệmđúng.Bởivậyviệctìmnghiệmgầnđúngvàướclượngsaisố
làr
ấtcầnthiết.
 Taxétphươngtrình:
 f(x)=0(1)
vớif(x)làhàmchotrướccủabiếnx.Chúngtacầntìmgiátrịgầnđúngcủa
nghiệmcủaphươngtrìnhnày.
 Quá
trìnhgiảithườngchialàmhaibước:bướcsơbộvàbướckiệntoàn
nghiệm.
 Bướcgiảisơbộcó3nhiệmvụ:vâynghiệm,táchnghiệmvàthuhẹp
khoảngchứanghiệm.

 Vâynghiệmlàtìmxem cácnghiệmcủaph ươngtrìnhcóthểnằmtrên
nhữngđoạnnàocủatrụcx.Táchnghiệmlàtìmcáckhoảngchứanghiệm
soachotrongmỗi khoảngchỉcó
đúngmộtnghiệm.Thuhẹpkhoảngchứa
nghiệmlàlàmchokhoảngchứanghiệmcàngnhỏcàngtốt.Saubướcsơbộ
tacókhoảngchứanghiệmđủnhỏ.
 Bướckiệntoànnghiệm
tìmcácnghiệmgầnđúngtheoyêucầuđặtra.
 Córấtnhiềuphươngphápxácđịnhnghiệmcủa(1).Sauđâychúngta
xéttừngphươngpháp.

§2.PHƯƠNGPHÁPLẶPĐƠN


 Giảsửphươngtrình
(1)đượcđưavềdạngtươngđương:
 x=g(x)2)
từgiá trịxonàođógọilàgiátrịlặpđầutiêntalậpdãyxấpxỉbằngcông
thức:
 x
n=g(x+‐1)(3)
vớin=1,2, 
Hàmg(x)đượcgọilàhàmlặp.Nếudãyx
n→αkhin→∝thìtanói
phéplặp(3)hộitụ.





 x
1xoxox1

13
Tacóđịnhlí:Xétphươngpháplặp(3),giảsử:
‐[a,b]làkhoảngphânlinghiệmαcủaphươngtrình(1)tứclàcủa(2)
‐mọix
ntínhtheo(3)đềuthuộc[a,b]
‐g(x)cóđạohàmthoảmãn:

b
xa,1
q
)x(g

<
<<


(4)
trongđóqlàmộthằngsốthìphươngpháplặp(3)hộitụ
Tacóthểminhhoạphéplặptrênbằnghìnhvẽtrên.
Cáchđưaphươngtrìnhf(x)=0vềdạngx=g(x)đượcthự
chiệnnhư
sau:tathấyf(x) =0cóthểbiếnđổithànhx=x+
λf(x)vớiλ≠0.Sauđóđặt
x+λf(x)=g(x)saochođiềukiện(4)đượcthoảmãn.
 Vídụ:xétphươngtrình
x
3
+x‐1000=0
Saubướcgiảisơbộtacónghiệmx
1∈(9,10)
Nếuđưaphươngtrìnhvềdạng:
x=1000‐x
3
=g(x)
thìdễthấy|g
ʹ
(x)|>1trongkhoảng(9,10)nênkhôngthoảmãnđiềukiện
(4)
Chúngtađưaphươngtrìnhvềdạng

3
x1000x −= 

thìtathấyđiềukiện(4)đượcthoảmãn.Xâydựngdãyxấpxỉ

3
n
1n
x1000
x

=
+

vớix
ochọnbấtkìtrong(9,10)
 Trêncơsởphươngphápnàychúngtacócácchươngtrìnhtínhtoán
sau:
Chương trình giải phương trình exp((1/3)*ln(1000‐x)) với số lần lặp cho
trước

Chươngtrình2‐1

//lapdon
#include<conio.h>
#include<stdio.h>
#include<math.h>

voidmain()
{
 inti,n;
 floatx,x0;
 floatf(float);


14
 clrscr();
 printf(ʺChosolanlapn=ʺ);
 scanf(ʺ%dʺ,&n);
 printf(ʺChogiatribandaucuanghiemx0=ʺ);
 scanf(ʺ%fʺ,&x0);
 x=x0;
 for(i=1;i<=n;i++)
x=f(x);
 printf(ʺNghiemcuaphuongtrinhla:%.4fʺ,x);
 getch();
}

floatf(floatx)
{

floata=exp((1./3.)*log(1000‐x));
 return(a);
}

vàchươngtrìnhgiảibàitoánbằngphươngpháplặpvớisaisốchotrước

Chươngtrình2‐2

//lapdon
#include<conio.h>
#include<stdio.h>
#include<math.h>
voidmain()

{
 inti;
 floatepsi,x,x0,y;
 floatf(float);

 clrscr();
 printf(ʺChosaisoepsilon=ʺ);
 scanf(ʺ%fʺ,&epsi);
 printf(ʺChogiatribandaucuanghiemx0=ʺ);
 scanf(ʺ%fʺ,&x0);
 x=x0;
 y=f(x);

if(abs(y‐x)>epsi)

15
{
x=y;
y=f(x);
}
 printf(ʺNghiemcuaphuongtrinhla%.6fʺ,y);
 getch();
}

floatf(floatx)
{
 floata=exp((1./3.)*log(1000‐x));
 return(a);
}


Chogiátrịđầuxo=1.Kếtquảtínhtoánx=9.966555

§3.PHƯƠNGPHÁPCHIAĐÔICUNG
 Giảsửchophươngtrìnhf(x)=0 v ới
f(x)liêntụctrênđoạn[a,b]vàf(a).f(b)<
0. Chiađoạn [a, b]thành 2 phần bởi
chínhđiểmchia(a+b)/2.
 







b
1
ξ

b
a
x
y
 1.Nếuf((a+b)/2)=0thìξ
=(a+b)/2
 2. Nếu f((a + b)/2) ≠ 0 thì chọn
[a,(a+b)/2]hay[(a+b)/2,b]màgiátrịhàm
haiđầutrái dấuvà kíhiệu là[a
1,b1].Đối
với[a

1,b1]talạitiếnhànhnhư[a,b]
Cách làm trênđược mô tả trong chương trình sau dùngđểtìm
nghiệmcủaphươngtrình:
x
4
+2x
3
‐x‐1=0
trênđoạn[0,1]

Chươngtrình2‐3

//chiadoicung
#include<conio.h>
#include<stdio.h>
#include<math.h>
#defineepsi0.00001
voidmain()
{

16
 floatx0,x1,x2;
 floaty0,y1,y2;
floatf(float);
 intmaxlap,demlap;

clrscr();
 printf(ʺTimnghiemcuaphuongtrinhphituyenʺ);
 printf(ʺ\nbangcachchiadoicung\nʺ);
 printf(ʺChocacgiatrix0,x1,maxlap\nʺ);

 printf(ʺChogiatrix0=ʺ);
 scanf(ʺ%fʺ,&x0);
 printf(ʺChogia
trix1=ʺ);
 scanf(ʺ%fʺ,&x1);
 printf(ʺChosolanlapmaxlap=ʺ);
 scanf(ʺ%dʺ,&maxlap);
 y0=f(x0);
 y1=f(x1);
 if((y0*y1)>0)
{
printf(ʺNghiemkhongnamtrongdoanx0‐x1\nʺ);
printf(ʺx0=%.2f\nʺ,x0);
printf(ʺx1=%.2f\nʺ,x1);
printf(ʺf(x0)=
%.2f\nʺ,y0);
printf(ʺf(x1)=%.2f\nʺ,y1);
}
 demlap=0;
 do
{
x2=(x0+x1)/2;
y2=f(x2);
y0=f(x0);
if(y0*y2>0)
x0=x2;
else
x1=x2;
demlap=demlap+1;
}

 while(((abs((y2‐y0))>epsi)||(demlap<maxlap)));
 if(demlap>maxlap)
{

17
printf(ʺPheplapkhonghoitusau%dlanlapʺ,maxlap);
printf(ʺx0=%.2f\nʺ,x0);
printf(ʺx1=%.2f\nʺ,x1);
printf(ʺf(x2)=%.2f\nʺ,y2);
}
 else
{
printf(ʺPheplaphoitusau%dlanlap\nʺ,demlap);
printf(ʺNghiemx=%.2fʺ,x2);
}

 getch();
}

floatf(floatx)
{
 floata=x*x*x*x+2*x*x*x‐x‐1;
 return(a);
}

Kếtquảtínhchonghiệm:x=0.87

§4.PHƯƠNGPHÁPDÂYCUNG

Giảsửf(x)liêntụctrêntrênđoạn[a,b]vàf(a).f(b)<0.Cầntìmnghiệm

củaf(x)=0.Đểxácđịnhtaxemf(a)<0vàf(b)>0.Khiđóthayvìchiađôi
đoạn[a,b]tachia[a,b]
theotỉlệ‐f(a)/f(b).Điềuđóchotanghiệmgầnđúng
:
 x
1=a+h1
Trongđó

)ab(
)b(f)a(f
)a(
f
h
1

+−

=

 Tiếptheodùng cáchđóvớiđoạn[a,x
1]hay[x1,b]màhaiđầuhàm
nhậngiátrịtráidấutađượcnghiệmgầnđúngx
2v.v.
Vềmặthìnhhọc,phươngphápnàycónghĩalàkẻdâycungcủađườngcong
f(x)quahaiđiểmA[a,f(a)]vàB[b,f(b)].ThậtvậyphươngtrìnhdâycungAB
códạng:

18

)a(f)b(f

)a(
f
y
ab
ax


=








ax
1ξb



Chox=x
1y=0tacó

)ab(
)a(f)b(f
)a(
f
ax
1



−= 
Trên cơ sở của phương pháp ta có
chươngtrìnhtínhnghiệmcủaphương
trình
   x
4
+2x
3
‐x‐1=0
trênđoạn[0,1]

Chươngtrình2‐4

//phuongphapdaycung
#include<conio.h>
#include<stdio.h>
#include<math.h>
#defineepsi0.00001

voidmain()
{
 floata,b,fa,fb,dx,x;
 floatf(float);

 clrscr();
 printf(ʺTimnghiemcuaphuongtrinhphituyen\nʺ);
 printf(ʺbangphuongphapdaycung\nʺ);
 printf(ʺChocacgiatria,b\nʺ);

 printf(ʺCho
giatricuaa=ʺ);
 scanf(ʺ%fʺ,&a);
 printf(ʺChogiatricuab=ʺ);
 scanf(ʺ%fʺ,&b);
 fa=f(a);
 fb=f(b);
 dx=fa*(b‐a)/(fa‐fb);
 while(fabs(dx)>epsi)
{
x=a+dx;
fa=f(x);

19
if((fa*fb)<=0)
a=x;
else
b=x;
fa=f(a);
fb=f(b);
dx=fa*(b‐a)/(fa‐fb);
}
 printf(ʺNghiemx=%.3fʺ,x);
 getch();
}

floatf(floatx)
{
 floate=x*x*x*x+2*x*x*x‐x‐1;
 return(e);

}

 Kếtquảtínhchonghiệm:x=0.876

§5.PHƯƠNGPHÁPLẶPNEWTON
 PhươngpháplặpNewton(còngọilàphươngpháptiếptuyến)được
dùngnhiềuvìnóhộitụnhanh.Giảsửf(x)
cónghiệmlàξđãđượctáchtrênđoạn[a,
b]đồng thời fʹ(x) và fʺ
(x) liên tục và giữ
nguyên dấu trênđoạn [a, b]. Khiđã tìm
được xấp xỉ nàođó xn ∈ [a, b] ta có thể
kiện toàn nó theo phương phápNewton.
TừmútBtavẽtiếptuyếnvớiđườ
ngcong.
Phươngtrìnhđườngtiếptuyếnlà







x1
b
=xo
a
)xx)(
b
(

f
)x(
f
y
00


=− 
Tiếptuyếnnàycắttrụchoànhtạiđiểmcó
y=0,nghĩalà:
)xx)(
b
(
f
)x(
f
010


=− 
hay:
)x(f
)x(
f
xx
0
0
01

−= 

Từx
1talạitiếptụcvẽtiếptuyếnvớiđườngcongthìgiaođiểmxisẽtiếntới
nghiệmcủaphươngtrình.

20
Việcchọnđiểmbanđầuxorấtquantrọng.Trênhìnhvẽtrêntathấy
nếuchọnđiểmbanđầux
o=athìtiếptuyếnsẽcắttrụctạimộtđiểmnằm
ngoàiđoạn[a,b].Chọnx
o=bsẽthuậnlợichoviệctínhtoán.Chúngtacó
địnhlí:

Nếuf(a).f(b)<0;f(x)vàfʺ(x)kháckhôngvàgiữnguyêndấuxácđịnhkhix 

[a,b]thìxuấtpháttừxo

[a,b]thoảmãnđiềukiệnf(xo).f

(xo)>0cóthểtính
theophươngphápNewtonnghiệm
ξ
duynhấtvớiđộchínhxáctuỳý.
 KhidùngphươngphápNewtoncầnlấyxolàđầumútcủađoạn[a,b]
đểtạiđóf(xo).fʺ(xo)>0.Ápdụnglíthuyếttrênchúngtaxâydựngchương
trìnhtínhsau:

Chươngtrình2‐5

//phuongphapNewton
#include<conio.h>

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#definen50
#defineepsi1e‐5

voidmain()
{
 floatt,x0;
 floatx[n];
 inti;
 floatf(float);
 floatdaoham(float);

 clrscr();
 printf(ʺTimnghiemcuaphuongtrinhphituyen\nʺ);
 printf(ʺbangphuongphaplap
Newton\nʺ);
 printf(ʺChogiatricuax0=ʺ);
 scanf(ʺ%fʺ,&x0);
 i=1;
 x[i]=x0;
 do
{
x[i+1]=x[i]‐f(x[i])/daoham(x[i]);

21
t=fabs(x[i+1]‐x[i]);
x[i]=x[i+1];
i=i+1;

if(i>100)
{
printf(ʺBaitoankhonghoitu\nʺ);
getch();
exit(1);
}
else
;
}
 while(t>=epsi);
 printf(ʺNghiemx=%.5fʺ,x[i]);
 getch();
}

floatf(floatx)
{
 floata=x*x‐x‐2;
 return(a);
}

floatdaoham(floatx)
{
floatd=2*x‐1;
return(d);
}

 Chươngtrìnhnàyđượcdùngxácđịnhnghiệmcủahàmđãđượcđịnh
nghĩatrongfunction.Trongtrườnghợpnàyphươngtrìnhđólà:
x
2

‐x‐1=0
Kếtquảtínhvớigiátrịđầux
o=0chonghiệmx=2.

§6.PHƯƠNGPHÁPMULLER
 Trongphươngphápdâycungkhitìmnghiệmtrongđoạn[a,b]taxấp
xỉhàmbằngmộtđườngthẳng.Tuynhiênđểgiảmlượngtínhtoánvàđể
nghiệmhộitụnhanhhơntacóthểdùngphương
phápMuller.Nộidung
củaphươngphápnàylàthayhàmtrongđoạn[a,b]bằngmộtđườngcong
bậc2màtahoàntoàncóthểtìmnghiêmchínhxáccủanó.Gọicácđiểmđó

22
cóhoànhđộlầnlượtlàa=x2,b=x1vàtachọn thêmmộtđiểmx0nằmtrong
đoạn[x
2,x1].Gọi
h
1=x1‐x0
h2=x0‐x2
v=x‐x0
f(x
0)=f0
f(x1)=f1
f(x2)=f2

1
2
h
h
=γ 

Qua3điểmnàytacómộtđườngparabol:
 y=av
2
+bv+c
Tatìmcáchệsốa,b,ctừcácgiátrịđãbiếtv:

22
2
222
11
2
111
0
2
0
fcbhah)xx(hv
fcbhah)xx(hv
f
c)0(
b
)0(a)xx(0v
=++==
=++==
=
+
+==

Từđótacó:

0

1
2
101
2
1
201
fc
h
ahff
b
)1(h
f
)1(
f
f
a
=
−−
=
γ+γ
+
γ
+

γ
=

Sauđótatìmnghiệmcủaphươngtrìnhav
2
+bv+c=0vàcó:

ac4
b
b
c2
xn
2
02,1
−±
−= 
Tiếpđóta chọnnghiệmgầnx
0nhấtlàmmộttrong3điểmđểtínhxấpxỉ
mới.Cácđiểmnàyđượcchọngầnnhaunhất.Tiếptụcquátrìnhtínhđến
khiđạtđộchínhxácyêucầuthìdừnglại.
Vídụ:Tìmnghiệmcủahàmf(x)=sin(x)‐x/2trongđoạn[1.8,2.2].Tach ọn
x
0=2
Tacó: x
0=2 f(x0)=‐0.0907h1=0.2
x
1=2.2 f(x1)=‐0.2915h2=0.2
x
2=1.8 f(x2)=0.07385 γ=1
Vậythì:
45312.0
)11(2.01
07385.0)11()0907.0()2915.0(1
a
2
−=
+××

+
+
×
−−−×
= 
0907.0c
91338.0
2.0
2.0)45312.0()097.0(2915.0
b
2
−=
−=
×−−−−−
=


23
Tacónghiệmgầnx0nhấtlà:
89526.1
)0907.0()45312.0(4)91338.0(91338.0
)0907.0(2
0.2n
2
1
=
−×−×−−−−

×
−= 

Vớilầnlặpthứhaitacó:
x
0=1.89526 f(x0)=1.9184×10
‐4
 h1=0.10474
 x
1=2.0  f(x1)=‐0.0907 h2=0.09526
 x
2=1.8  f(x2)=0.07385γ=0.9095
Vậythì:
4
24
2
4
109184.1c
81826.0
10474.0
10474.0)4728.0(109184.10907.0
b
4728.0
9095.110474.09095.0
07385.09095.1)109184.1()0907.0(9095.0
a



×=
−=
×−−×−−
=

−=
××
+××−−×
=

Tacónghiệmgầnx
0nhấtlà:
89594.1
109184.1)4728.0(4)81826.0(81826.0
109184.12
89526.1n
42
4
1
=
××−×−−−
××
−=



Tacóthểlấyn1=1.895494làmnghiệmcủabàitoán.
ChươngtrìnhgiảibàitoánbằngphươngphápMullernhưsau:

Chươngtrình2‐6

//phuongphapMuller
#include<conio.h>
#include<stdio.h>
#include<math.h>

#include<stdlib.h>

voidmain()
{
 floatx0,x1,x2,h1,h2,eps;
 floata,b,c,gamma,n1,n2,xr;
 intdem;
 floatf(float);

 clrscr();
 printf(ʺPHUONGPHAPMULLER\nʺ);
 printf(ʺ\nʺ);
 printf(ʺChokhoangcantimnghiem[a,b]\nʺ);
 printf(ʺChogiatriduoia
=ʺ);

24
 scanf(ʺ%fʺ,&x2);
 printf(ʺChogiatritrenb=ʺ);
 scanf(ʺ%fʺ,&x1);
 if(f(x1)*f(x2)>0)
{
printf(ʺ\nʺ);
printf(ʺNghiemkhongnamtrongdoannay\nʺ);
getch();
exit(1);
}
 eps=1e‐5;
 x0=(x1+x2)/2;
 dem=0;

 do
{
dem=dem+1;
h1=x1‐x0;
h2=x0‐x2;

gamma=h2/h1;
a=(gamma*f(x1)‐
f(x0)*(1+gamma)+f(x2))/(gamma*(h1*h1)*(1+gamma));
b=(f(x1)‐f(x0)‐a*(h1*h1))/h1;
c=f(x0);
if((a==0)&&(b!=0))
{
n1=‐c/b;
n2=n1;
}
if((a!=0)&&(b==0))
{
n1=(‐sqrt(‐c/a));
n2=(sqrt(‐c/a));
}
if((a!=0)&&(b!=0))
{
n1=x0‐2*c/(b+(sqrt(b*b‐4*a*c)));
n2=x0‐2*c/(b‐(sqrt(b*b‐4*a*c)));
}
if(fabs(n1‐x0)>fabs(n2‐x0))
xr=n2;

25

else
xr=n1;
if(xr>x0)
{
x2=x0;
x0=xr;
}
else
{
x1=x0;
x0=xr;
}
}
 while(fabs(f(xr))>=eps);
 printf(ʺ\nʺ);
 printf(ʺPhuongtrinhconghiemx=%.5fsau%dlanlapʺ,xr,dem);
 getch();
}

floatf(floatx)
{
 floata=sin(x)‐x/2;

 return(a);
}

§7.PHƯƠNGPHÁPLẶPBERNOULLI

Có nhiều phương  phápđểtìm nghiệm của mộtđa thức. Ta xét
phươngtrình:

 a
ox
n
+a1x
n‐1
+⋅⋅⋅+an=0
Nghiệmcủaphươngtrìnhtrênthoảmãnđịnhlí:
Nếumax{|a1|,|a2|, ,|an
|}=Athìcácnghiệmcủaphươngtrìnhthoảmãnđiềukiện|x|<1+A/|a
0|
 PhươngphápBernoullichophéptínhtoánnghiệmlớnnhấtαcủamột
đathứcP
n(x)cónnghiệmthựcphânbiệt.Saukhitìmđượcnghiệmlớnnhất
αtachiađathứcP
n(x)cho(x‐α)vànhậnđượcđathứcmớiQn‐1(x).Tiếptục
dùngphươngphápBernoulliđểtìmnghiệmlớnnhấtcủaQ
n‐1(x).
SauđólạitiếptụccácbướctrênchođếnkhitìmhếtcácnghiệmcủaP
n(x).
 Chúngtakhảosátphươngtrìnhsaiphânϕcódạngnhưsau:
ϕ=a
oyk+n+a1yk+n‐1+ +anyk=0(1)

26
Đâylàmộtphươngtrìnhsaiphântuyếntínhhệsốhằng.Khichotrướccác
giá trịđầu y
o, y1, yn‐1ta tìmđược các giátrị yn,yn+1,  Chúngđược gọi là
nghiệmcủaphươngtrìnhsaiphântuyếntính(1).
Đathức
P

n(x)=a0x
n
+a1x
n‐1
+ +an‐1x+an(2)
vớicùngmộthệsốa
inhư(1)đượcg ọilàđathứcđặctínhcủaphươngtrình
saiphântuyếntính(1).Nếu(2)cónnghiệmphânbiệtx
1,x2, ,xnthì(1)có
cácnghiệmriênglà
k
ii
xy = 
Nếuy
ilàcácnghiệmcủaphươngtrìnhsaiphânlàtuyếntính(1),thì

(3)
k
nn
k
22
k
11
k
xcxcxcy +⋅⋅⋅++=
vớicáchệsốc
ibấtkìcũnglà nghiệmcủaphươngtrình saiphântuyếntính
hệsốhằng(1).
Nếucácnghiệmcầnsaocho:
 |x

1|≥|x2|≥ |xn|
Vậy








⋅⋅⋅+








+=
k
1
2
2
1
k
11
k
x
x

c
c
1xcy 
và








⋅⋅⋅+








+=
+
+
+
1k
1
2
2
1

1k
11
1k
x
x
c
c
1xcy 
dođó:








⋅⋅⋅+








+









⋅⋅⋅+








+
=
+
+
k
1
2
2
1
1k
1
2
2
1
1
k

1k
x
x
c
c
1
x
x
c
c
1
x
y
y

do x
1>x2> >xn
nên: 0
x
x
,
x
x
1k
1
2
k
1
2


















+
khik→∞
vậy:
0
y
y
k
1k

+
khik→∞
Nghĩalà:
1
k

1k
k
x
y
y
lim =
+
∞→

 Nếuphươngtrìnhviphâng ồmn+1hệsố,mộtnghiệmriêngy
kcóthể
đượcxácđịnhtừngiátrịy
k‐1,yk‐2, ,yn‐1.Điềuchophéptínhtoánbằngcách
truyhồicácnghiệmriêngcủaphươngtrìnhviphân.
Đểtínhnghiệmlớnnhấtcủađathức,taxuấtpháttừcácnghiệmriêng
y
1=0,y1=0, ,yn=1đểtínhyn+1.Cáchtínhnàyđượctiếptụcđểtínhyn+2

27
xuấtpháttừy1=0,y 2=0, ,yn+1và tiếptụcchođếnkhiyk+1/ykkhôngbiến đổi
nữa.Trịsốcủay
k+nđượctínhtheocôngthứctruyhồi:
(
k
n
1nk
1
0
nk
yaya

a
1
y +⋅⋅⋅+−=
−++
)
(4)
Vídụ:TínhnghiệmcủađathứcPn(x)=P3(x)=x
3
‐10x
2
+31x‐30.
Nhưvậya
o=1,a1=‐10,a2=31vàa3=‐30.
Phươngtrìnhsaiphântươngứnglà:
y
k+3‐10yk+2+31yk+1‐30yk=0
Tachotrướccácgiátrịy
1=0;y2=0vày3=1.Theo(4)tatínhđược:
y
4=‐(‐10y3+31y2‐30y1)=10
y
5=‐(‐10y4+31y3‐30y2)=69
y
6=‐(‐10y5+31y5‐30y3)=410
y
7=‐(‐10y6+31y5‐30y4)=2261
y
8=‐(‐10y7+31y6‐30y5)=11970
y
9=‐(‐10y8+31y7‐30y6)=61909

y
10=‐(‐10y9+31y8‐30y8)=315850
y
11=‐(‐10y10+31y9‐30y8)=1598421
y
12=‐(‐10y11+31y10‐30y9)=8050130
y
13=‐(‐10y12+31y11‐30y10)=40425749
y
14=‐(‐10y13+31y12‐30y11)=202656090
y
15=‐(‐10y14+31y13‐30y12)=1014866581
y
16=‐(‐10y15+31y14‐30y13)=5079099490
y
17=‐(‐10y16+31y15‐30y14)=24409813589
y18=‐(‐10y17+31y16‐30y15)=127092049130
y
19=‐(‐10y18+31y17‐30y16)=635589254740
Tỉsốcácsốy
k+1/yklậpthànhdãy:
 10;6.9;5.942;5.5146;5.2941;5.172;5.1018;5.0607;5.0363;5.0218;
5.013;5.0078;5.0047;5.0028;5.0017;5.001
nghĩalàchúngsẽhộitụtớinghiệmlớn
nhấtlà5củađathức.

Chươngtrình2‐7

//phuongphapBernoulli
#include<conio.h>

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#definemax50


28
voidmain()
{
 floata[max],y[max];
 intk,j,i,n,l;
 floats,e1,e2,x0,x1,x;

 clrscr();
 printf(ʺChobaccuadathuccantimnghiemn=ʺ);
 scanf(ʺ%dʺ,&n);
 e1=1e‐5;
 printf(ʺChocachesocuadathuccantimnghiem\nʺ);
 for(i=0;i<=n;i++)
{
printf(ʺa[%d]=
ʺ,i);
scanf(ʺ%fʺ,&a[i]);
}
 for(k=0;k<=n;k++)
a[k]=a[k]/a[0];
tt:x1=0;
 for(k=2;k<=n;k++)
y[k]=0;
 y[1]=1;

 l=0;
 do
{
l=l+1;
s=0;
for(k=1;k<=n;k++)
s=s+y[k]*a[k];
y[0]=‐s;
x=y[0]/y[1];
e2=fabs(x1‐x);
x1=x;
for(k=n;k>=1;k‐‐)
y[k]=y[k‐1];
}
 while((l<=50)||(e2>=e1));
 if(e2>=e1)
{

printf(ʺKhonghoituʺ);

29
getch();
exit(1);
}
 else
printf(ʺNghiemx=%.4f\nʺ,x);
 n=n‐1;
 if(n!=0)
{
a[1]=a[1]+x;

for(k=2;k<=n;k++)
a[k]=a[k]+x*a[k‐1];
gotott;
}
 getch();
}

Kếtquảnghiệmcủađathứcx
3
‐10x
2
+31x‐30là:5;3và2

§8.PHƯƠNGPHÁPLẶPBIRGE‐VIETTE
 Cácnghiệmthực,đơngiảncủamộtđathứcP
n(x)đượctínhtoánkhi
sửdụngphươngphápNewton
)x(P
)x(P
xx
in
in
i1i

−=
+
(1)
Đểbắtđầutínhtoáncầnchọnmộtgiátrịbanđầux
o.Chúngtacóthể
chọnmộtgiátrịx

onàođó,vídụ:

1n
n
0
a
a
x

−= 
vàtínhtiếpcácgiátrịsau: 
)x(P
)x(P
xx
0n
0n
01

−= 

)x(P
)x(P
xx
1n
1n
12

−= 
TiếptheocóthểđánhgiáP
n(xi)theothuậttoánHorner:

P
0=a0
 P1=P0xi+a1(2)
 P
2=P1xi+a2
 P3=P2xi+a3
 
 P(x
i)=Pn=Pn‐1xi+an

30
MặtkháckhichiađathứcPn(x)chomộtnhịthức(x‐xi)tađược:
P
n(x)=(x‐xi)Pn‐1(x)+bn(3)
vớib
n=Pn(xi).ĐathứcPn‐1(x)códạng:
 P
n‐1(x)=box
n‐1
+b1x
n‐2
+p3x
n‐3
+ +bn‐2x+bn‐1(4)
Đểxácđịnhcáchệsốcủađathức(4)tathay(4)vào(3)vàcânbằng
cáchệsốvớiđathứccầntìmnghiệmP
n(x)màcáchệsốaiđãcho:
 (x‐x
i)(box
n‐1

+b1x
n‐2
+b3x
n‐3
+ +bn‐2x+bn‐1)+bn
 =aox
n
+a1x
n‐1
+a2x
n‐2
+ +a
n
‐1x+a=(5)
Từ(5)rútra:
b
o=ao
b1=a1+boxi(6)
 b
2=a2+b1xi
 
 b
k=ak+bk‐1xi
 
 b
n=an+bn‐1xi=Pn(xi)
Đạohàm(3)tađược:


)x(P)x(P)xx()x(P

1n1nin −−
+

−=

và:
(7)
)x(P)x(P
i1nin −
=

 Nhưvậyvớimộtgiátrịx
inàođótheo(2)tatínhđượcPn(xi)vàkết
hợp(6)với(7)tínhđượcP′
n(xi).Thaycáckếtquảnàyvào(1)tatínhđược
giátrịx
i+1.Quátrìnhđượctiếptụcchođếnkhi|xi+1‐xi|<εhayPn(xi+1)≈0
nênα
1≈xi+1làmộtnghiệmcủađathức.
 Phép chiaPn(x) cho(x‐α1)cho taPn‐1(x) vàmột nghiệmmới khác
đượctìmtheocáchtrênkhichọnmộtgiátrịx
omớihaychọnchínhxo=α1.
Khi bậc củađa thức giảm xuống còn bằng 2 ta dùng các công thức tìm
nghiệmcủatamthứcđểtìmcácnghiệmcònlại.
Vídụ:TìmnghiệmcủađathứcP3(x)=x
3
‐x
2
‐16x+24
ao

=1 a1=‐1a2=‐16 a3=24
Chọnx
o=3.5tacó:
P
o=ao=1
P
1=a1+pox0=‐1+3.5*1=2.5
P
2=a2+p1x0=‐16+3.5*2.5=‐7.25
P3=a3+p2x0=24+3.5*(‐7.25)=‐1.375
b
0=a0=1;
b
1=a1+box0=‐1+3.5*1=2.5
b
2=a2+b1x0=‐16+3.5*2.5=‐7.25
P2(3.5)=b0x
2
+b1x+b2=13.75

31
6.3
75.13
375.1
5.3
)x(P
)x(P
xx
0n
0n

01
=+=

−= 
Lặplạibướctínhtrênchox
1tacó:
P
o=ao=1
P
1=a1+pox1=‐1+3.6*1=2.6
P
2=a2+p1x1=‐16+3.6*2.6=‐6.64
P3=a3+p2x1=24+3.6*(‐6.64)=‐0.096
b
o=ao=1
b
1=a1+box1=‐1+3.6*1=2.6 
b
2=a2+p1x1=‐16+3.6*2.6=‐6.64
P2(3.6)=b0x
2
+b1x+b2=15.68
606.3
68.15
096.0
6.3
)x(P
)x(P
xx
1n

1n
12
=+=

−= 
Quátrìnhcứthếtiếptụcchođếnkhisaisốchấpnhậnđược.Chươngtrình
dướiđâymôtảthuậttínhtrên.

Chươngtrình2‐8

//phuongphapBirge‐Viette
#include<conio.h>
#include<stdio.h>
#include<math.h>
#definemax20

voidmain()
{
 floata[max],p[max],d[max],x[max];
 intk,j,i,n;
 floate1,e2,x0,x1;

 clrscr();
 printf(ʺChobaccuadathucn=ʺ);
 scanf(ʺ%dʺ,&n);
 e1=0.0001;
 printf(ʺChocachesocuadathuccantim
nghiem\nʺ);
 for(i=0;i<=n;i++)
{

printf(ʺa[%d]=ʺ,i);
scanf(ʺ%fʺ,&a[i]);

32
}
 x0=a[0];
 for(i=0;i<=n;i++)
a[i]=a[i]/x0;
 printf(ʺNghiemcuaphuongtrinh:\nʺ);
 tt:x0=‐a[n]/a[n‐1];
 j=0;
 do
{
j=j+1;
p[1]=x0+a[1];
d[1]=1.0;
for(k=2;k<=n;k++)
{
p[k]=p[k‐1]*x0+a[k];
d[k]=d[k‐1]*x0+p[k‐1];
}
x1=x0‐p[n]/d[n];
e2=fabs(x1‐x0);
if(e2>e1)
x0=x1;
}

while((j<=50)||(e2>=e1));
if(e2>=e1)
printf(ʺKhonghoituʺ);

 else
printf(ʺx=%.4f\nʺ,x1);
 n=n‐1;
 if(n!=0)
{
for(k=1;k<=n;k++)
a[k]=p[k];
gotott;
}
 getch();
}
 Dùngchươngtrìnhtrênđểtìmnghiệmcủađathứcx
4
+2x
3
‐13x
2
‐14x
+24tađượccácnghiệmlà:‐4;3;‐2và1.

§9.PHƯƠNGPHÁPNGOẠISUYAITKEN

33
 Xétphươngpháplặp:
 x=f(x)(1)
vớif(x)thoảmãnđiềukiệnhộitụcủaphéplặp,nghĩalàvớimọix∈[a,b]ta
có:
|f’(x)|≤q<1(2)
Như
vậy:

 x
n+1=f(xn)(3)
 x
n=f(xn‐1)(4)
Trừ(3)cho(4)vàápdụngđịnhlíLagrangechovếphảivớic∈[a,b]tacó:
 x
n+1‐xn=f(xn)‐f(xn‐1)=(xn‐xn‐1)f’(c)(5)
Vìphéplặp(1)nên:
 |x
n+1‐xn|≤q|xn‐xn‐1|(6)
β=an‐pb‐2
Chúngtanhậnthấyrằngαđượctínhtoánxuấtpháttừcùngmộtcông
thứctruyhồinhưcáchệsốb
kvàtươngứngvớihệsốbn‐1
 bn‐1=an‐1+sbn‐2‐pbn‐3=α
Hệsốbnlà:
 b
n=an+sbn‐1‐pbn‐2=sbn‐1+β
vàcuốicùng:
 R
1(x)=αx+β=b+‐1(x‐s)+bn
 Ngoàiracáchệsốbiphụthuộcvàosvàpvàbâygiờchúngtacần
phảitìmcácgiátrịđặcbiệts
*
vàp
*
đểchobn‐1vàbntriệttiêu.Khiđór1(x)=0
vànghiệmcủatamthứcx
2
‐s

*
x+p
*
xsẽlànghiệmcủađathứcPn(x).Tabiết
rằngb
n‐1vàbnlàhàmcủasvàp:
 b
n‐1=f(s,p)
 b
n=g(s,p)
Việctìms
*
vàp
*
đưađếnviệcgiảihệphươngtrìnhphituyến:




=
=
0)p,s(g
0)p,s(
f

PhươngtrìnhnàycóthểgiảidễdàngnhờphươngphápNewton.Thậtvậy
vớimộtphươngtrìnhphituyếntacócôngthứclặp:
x
i+1=xi‐f(xi)/fʹ(xi)
hay fʹ(x

i)(xi+1‐xi)=‐f(xi)
Vớimộthệcóhaiphươngtrình,côngthứclặptrởthành:
 J(X
i)(Xi+1‐Xi)=‐F(Xi)

34
với Xi={si,pi}
T
và Xi+1={si+1,pi+1}
T









=
)p,s(g
)p,s(
f
)X(F
ii
ii
i























=
p
g
s
g
p
f
s
f
)X(J
i

 
Quanhệ:J(X
i)∆X=‐F(Xi)với∆X={si+1 ‐s i,pi+1‐pi}
T
tươngứngvớimộthệ
phươngtrìnhtuyếntínhhaiẩnsố
∆s=si+1‐sivà∆p=pi+1‐pi:








−=∆


+∆


−=∆


+∆


)p,s(gp
p
g

s
s
g
)p,s(fp
p
f
s
s
f
ii
ii
 
TheocôngthứcCramertacó:

δ


+



=∆
p
f
g
p
g
f
s 


δ


+



=∆
s
g
f
s
f
g
p 

s
g
p
f
p
g
s
f










=δ 
Đểdùngđượccôngthứcnàytacầntínhđượccácđạohàm
s
f


,
p
f


,
s
g


,
p
g


.
Cácđạohàmnàyđượctínhtheocôngthứctruyhồi.
Dob
o=aonên

0

s
b
0
=



0
p
b
0
=


 
b
1=a1+sbonên
0
1
b
s
b
=


 0
p
b
1
=




b
2=a2+sb1‐pbonên  
s
)pb(
s
)sb(
s
a
s
b
0
122





+


=



Mặtkhác:
0
s

a
2
=



1
11
b
s
)
b
(
s
s
)sb(
+


=


 0
s
)pb(
0
=




nên:
01
2
sbb
s
b
+=



b
3=a3+sb2‐pb1nên:

35
s
b
p
s
b
sb
s
b
12
2
3






+=



Nếuchúngtađặt:

1k
k
c
s
b

=



thì:
c
o=bo(2)
 c
1=b1+sbo=b1+sco
 c2=b2+sc1‐pco
 
 c
k=bk+sck‐1‐pck‐2
 cn‐1=bn‐1+scn‐2‐pcn‐3

Nhưvậycáchệsốcũngđượctínhtheocáchnhưcáchệsốb
k.Cuốicùngv ới
f=b

n‐1vàg=bntađược:
2n1n3n2n
c
s
f
c
s
f
c
s
f
c
s
f
−−−−
=


=


=


=




2

2n3n1n
3nn2n1n
ccc
c
b
c
b
s
−−−
−−−


=∆ (3)

2
2n3n1n
2nn1n1n
ccc
c
b
c
b
p
−−−
−−−


=∆ (4)

 SaukhiphântíchxongP

n(x)tatiếptụcphântíchPn‐2(x)theophương
pháptrên.Cácbướctínhtoángồm:
‐Chọncácgiátrịbanđầubấtkìs
0vàp0
‐Tínhcácgiátrịbo, ,bntheo(1)
‐Tínhcácgiátrịc
o, ,cntheo(2)
‐Tính∆s
ovà∆potheo(3)và(4)
‐Tínhs
1=s0+∆sovàp1=po+∆po
‐Lặplạibước1chođếnkhipi+1=pi=pvàsi+1=si=s
‐Giảiphươngtrìnhx
2‐sx+pđểtìm2nghiệmcủađathức
‐BắtđầuquátrìnhtrênchođathứcP
n‐2(x)

Vídụ:TìmnghiệmcủađathứcP4(x)=x
4
‐1.1x
3
+2.3x
2
+0.5x
2
+3.3.
Vớilầnlặpbanđầutachọns=‐1vàp=1,nghĩalàtamthứccódạng:x
2
+x+1


a
0 a1 a2 a3 a4
1 ‐1.1 2.3  0.5 3.3

36
sbi‐1 2.1 ‐3.4 0.8
‐pb
i‐1‐1 2.1 ‐3.4
b
i 1 ‐2.1 3.4  ‐0.8=bn‐1 0.7=bn
sbi‐1.0 3.1 ‐5.5

‐pb
i‐1‐1.0 3.1
 c
i 1 ‐3.1 5.5 ‐3.2


11.0
5.52.3
1.35.5
5.57.0
1.38.0
s =




=∆ 
06.0

5.52.3
1.35.5
7.02.3
8.05.5
p =



=∆ 
s
*
=‐1+0.11=‐0.89
p
*
=1+0.06=1.06
Tiếptụclặplần2vớis
1=s
*
vàp1=p
*
tacó:
a
0 a1 a2 a3 a4
1 ‐1.1 2.3  0.5 3.3
sbi‐0.89 1.77 ‐2.68 0.06
‐pbi
‐1‐1.06 2.11 ‐3.17
bi 1 ‐1.99 3.01 ‐0.07=b
n‐1 0.17=bn
sbi‐0.89 2.56 ‐4.01

‐pbi
‐1‐1.0 3.1
 ci 1 ‐2.88 4.51 ‐1.03

01.0
51.403.1
88.251.4
5.57.0
88.207.0
s −=




=∆ 

04.0
51.403.1
88.251.4
17.003.1
07.051.4
p =


−−
=∆ 
s
*
=‐0.89‐0.01=‐0.9
p

*
=1.06+0.04=1.1

37

×