You are on page 1of 14

CH NG 2: GI I G N NG PH NG TRNH

I S V SIU VI T
1. KHI NI M CHUNG
N u ph ng trnh i s hay siu vi t kh ph c t p th t khi tm c nghi m ng.
B i v y vi c tm nghi m g n ng v c l ng sai s l r t c n thi t.
Ta xt ph ng trnh :
f(x) = 0 (1)
v i f(x) l hm cho tr c c a bi n x. Chng ta c n tm gi tr g n ng c a nghi m c a
ph ng trnh ny.
Qu trnh gi i th ng chia lm hai b c: b c s b v b c ki n ton nghi m.
B c gi i s b c 3 nhi m v : vy nghi m, tch nghi m v thu h p kho ng ch a
nghi m.
Vy nghi m l tm xem cc nghi m c a ph ng trnh c th n m trn nh ng o n
no c a tr c x. Tch nghi m l tm cc 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 lm cho kho ng ch a nghi m cng
nh cng t t. Sau b c s b ta c kho ng ch a nghi m nh .
B c ki n ton nghi m tm cc nghi m g n ng theo yu c u t ra.
C r t nhi u ph ng php xc nh nghi m c a (1). Sau y chng ta xt t ng
ph ng php.
2.PH NG PHP L P N
Gi s ph ng trnh (1) c a v d ng t ng ng :
x = g(x) 2)
t gi tr xo no g i l gi tr l p u tin ta l p dy x p x b ng cng th c:
x
n
= g(x+
-1
) (3)
v i n = 1,2,....
Hm g(x) c g i l hm l p. N u dy x
n
khi n th ta ni php l p (3) h i t .
x
1
x
o
x
o
x
1
Ta c nh l: Xt ph ng php l p (3), gi s :
- [a,b] l kho ng phn li nghi m c a ph ng trnh (1) t c l c a (2)
- m i x
n
tnh theo (3) u thu c [a, b]
- g(x) c o hm tho mn :
b x a , 1 q ) x ( g < < < (4)
trong q l m t h ng s th ph ng php l p (3) h i t
Ta c th minh ho php l p trn b ng hnh v trn.
Cch a ph ng trnh 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 thnh x = x + f(x) v i 0. Sau t x+ f(x) = g(x) sao cho i u ki n
(4) c tho mn.
V d : xt ph ng trnh
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 trnh v d ng:
x = 1000 - x
3
= g(x)
th d th y | g
'
(x) | > 1 trong kho ng ( 9, 10 ) nn khng tho mn i u ki n (4)
Chng ta a ph ng trnh v d ng
3
x 1000 x
th ta th y i u ki n (4) c tho mn.Xy d ng dy x p x
3
n
1 n
x 1000
x

+
v i x
o
ch n b t k trong ( 9, 10 )
13
Trn c s ph ng php ny chng ta c cc ch ng trnh tnh ton sau:
Ch ng trnh gi i ph ng trnh exp((1/3)*ln(1000-x)) v i s l n l p cho tr c
Ch ng trnh 2-1
//lap don
#include <conio.h>
#include <stdio.h>
#include <math.h>
void main()
{
int i,n;
float x,x0;
float f(float);
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 trnh gi i bi ton b ng ph ng php l p v i sai s cho tr c
Ch ng trnh 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)
{
x=y;
y=f(x);
}
printf("Nghiem cua phuong trinh la %.6f",y);
getch();
}
14
float f(float x)
{
float a=exp((1./3.)*log(1000-x));
return(a);
}
Cho gi tr u xo = 1.K t qu tnh ton x = 9.966555
3.PH NG PHP CHIA I CUNG
Gi s cho ph ng trnh f(x) = 0 v i f(x) lin
t c trn o n [a, b] v f(a).f(b) < 0. Chia o n [a,
b] thnh 2 ph n b i chnh i m chia (a + b)/2.
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 hm hai u tri d u
v k hi u l [a
1
,b
1
]. i v i [a
1
, b
1
] ta l i ti n hnh
nh [a, b]
Cch lm trn c m t trong ch ng
trnh sau dng tm nghi m c a ph ng trnh:
x
4
+ 2x
3
- x - 1 = 0
trn o n [0, 1]
Ch ng trnh 2-3
//chia doi cung
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define epsi 0.00001
void main()
{
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)




15
y
x
a
b
b
1
x0=x2;
else
x1=x2;
demlap=demlap+1;
}
while(((abs((y2-y0))>epsi)||(demlap<maxlap)));
if (demlap>maxlap)
{
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 tnh cho nghi m: x = 0.87
4. PH NG PHP DY CUNG
Gi s f(x) lin t c trn trn o n [a, b] v f(a).f(b) < 0. C n tm nghi m c a f(x) = 0.
xc 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 + h
1
Trong
) a b (
) b ( f ) a ( f
) a ( f
h1

+

Ti p theo dng cch v i o n [ a, x


1
] hay [x
1
, b] m hai u hm nh n gi tr tri
d u ta c nghi m g n ng x
2
v.v.
V m t hnh h c, ph ng php ny c ngh a l k dy 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 trnh dy cung AB c d ng:

) a ( f ) b ( f
) a ( f y
a b
a x

Cho x = x
1
y = 0 ta c

) a b (
) a ( f ) b ( f
) a ( f
a x
1


Trn c s c a ph ng php ta c ch ng trnh
tnh nghi m c a ph ng trnh
x
4
+ 2x
3
- x - 1 = 0
trn o n [0,1]
Ch ng trnh 2-4
//phuong phap day cung
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define epsi 0.00001
void main()



a x
1
b


16
{
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);
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 tnh cho nghi m: x = 0.876
5. PH NG PHP L P NEWTON
Ph ng php l p Newton (cn g i l ph ng php ti p tuy n) c dng nhi u v n
h i t nhanh. Gi s f(x) c nghi m l c
tch trn o n [a, b] ng th i f'(x) v f"(x) lin t c
v gi nguyn d u trn o n [a, b]. Khi tm c
x p x no xn [a, b] ta c th ki n ton n theo
ph ng php Newton. T mt B ta v ti p tuy n v i
ng cong. Ph ng trnh ng ti p tuy n l
) x x )( b ( f ) x ( f y
0 0

Ti p tuy n ny c t tr c honh t i i m c y = 0,
ngh a l:
) x x )( b ( f ) x ( f
0 1 0

hay :
) x ( f
) x ( f
x x
0
0
0 1


T x
1
ta l i ti p t c v ti p tuy n v i ng cong th
giao i m x
i
s ti n t i nghi m c a ph ng trnh.
Vi c ch n i m ban u x
o
r t quan tr ng. Trn hnh v trn 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 ngoi o n [a, b]. Ch n x
o
= b s
thu n l i cho vi c tnh ton. Chng ta c nh l:


17
a
b =
x
o
x
1
N u f(a).f(b) < 0 ; f(x) v f"(x) khc khng v gi nguyn d u xc nh khi x [a, b]
th xu t pht t xo [a, b] tho mn i u ki n f(x
o
).f(x
o
) > 0 c th tnh theo ph ng php
Newton nghi m duy nh t v i chnh xc tu .
Khi dng ph ng php Newton c n l y xo l u mt c a o n [a,b] t i
f(xo).f"(xo) > 0. p d ng l thuy t trn chng ta xy d ng ch ng trnh tnh sau:
Ch ng trnh 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]);
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);
}
18
Ch ng trnh ny c dng xc nh nghi m c a hm c nh ngh a trong
function. Trong tr ng h p ny ph ng trnh l:
x
2
- x - 1 = 0
K t qu tnh v i gi tr u x
o
= 0 cho nghi m x = 2.
6. PH NG PHP MULLER
Trong ph ng php dy cung khi tm nghi m trong o n [a, b] ta x p x hm b ng
m t ng th ng. Tuy nhin gi m l ng tnh ton v nghi m h i t nhanh h n ta c
th dng ph ng php Muller. N i dung c a ph ng php ny l thay hm trong o n [a, b]
b ng m t ng cong b c 2 m ta hon ton c th tm nghim chnh xc c a n. G i cc
i m c honh l n l t l a = x
2
, b = x
1
v ta ch n thm m t i m x
0
n m trong o n
[x
2
, x
1
]. G i
h
1
= x
1
- x
0
h
2
= x
0
- x
2
v = x - x
0

f(x
0
) = f
0
f(x
1
) = f
1
f(x
2
) = f
2
1
2
h
h

Qua 3 i m ny ta c m t ng parabol:
y = av
2
+ bv + c
Ta tm cc h s a,b,c t cc gi tr bi t v:
2 2
2
2 2 2
1 1
2
1 1 1
0
2
0
f c bh ah ) x x ( h v
f c bh ah ) x x ( h v
f c ) 0 ( b ) 0 ( a ) x x ( 0 v
+ +
+ +
+ +
T ta c :
0
1
2
1 0 1
2
1
2 0 1
f c
h
ah f f
b
) 1 ( h
f ) 1 ( f f
a

+
+ +

Sau ta tm nghi m c a ph ng trnh av


2
+ bv + c = 0 v c :
ac 4 b b
c 2
x n
2
0 2 , 1
t

Ti p ta ch n nghi m g n x
0
nh t lm m t trong 3 i m tnh x p x m i. Cc i m ny
c ch n g n nhau nh t. Ti p t c qu trnh tnh n khi t chnh xc yu c u th d ng
l i.
V d: Tm nghi m c a hm 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(x
0
) = -0.0907 h
1
= 0.2
x
1
= 2.2 f(x
1
) = -0.2915 h
2
= 0.2
x
2
= 1.8 f(x
2
) = 0.07385 = 1
V y th :
45312 . 0
) 1 1 ( 2 . 0 1
07385 . 0 ) 1 1 ( ) 0907 . 0 ( ) 2915 . 0 ( 1
a
2

+
+ +

0907 . 0 c
91338 . 0
2 . 0
2 . 0 ) 45312 . 0 ( ) 097 . 0 ( 2915 . 0
b
2


Ta c nghi m g n x
0
nh t l :
89526 . 1
) 0907 . 0 ( ) 45312 . 0 ( 4 ) 91338 . 0 ( 91338 . 0
) 0907 . 0 ( 2
0 . 2 n
2
1




19
V i l n l p th hai ta c :
x
0
= 1.89526 f(x
0
) = 1.9184 10
-4
h
1
= 0.10474
x
1
= 2.0 f(x
1
) = -0.0907 h
2
= 0.09526
x
2
= 1.8 f(x
2
) = 0.07385 = 0.9095
V y th :
4
2 4
2
4
10 9184 . 1 c
81826 . 0
10474 . 0
10474 . 0 ) 4728 . 0 ( 10 9184 . 1 0907 . 0
b
4728 . 0
9095 . 1 10474 . 0 9095 . 0
07385 . 0 9095 . 1 ) 10 9184 . 1 ( ) 0907 . 0 ( 9095 . 0
a

Ta c nghi m g n x
0
nh t l :
89594 . 1
10 9184 . 1 ) 4728 . 0 ( 4 ) 81826 . 0 ( 81826 . 0
10 9184 . 1 2
89526 . 1 n
4 2
4
1



Ta c th l y n
1
= 1.895494 lm nghi m c a bi ton.
Ch ng trnh gi i bi ton b ng ph ng php Muller nh sau:
Ch ng trnh 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 = ");
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))
20
{
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;
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 PHP L P BERNOULLI
C nhi u ph ng php tm nghi m c a m t a th c. Ta xt ph ng trnh:
a
o
x
n
+ a
1
x
n-1
+ + a
n
= 0
Nghi m c a ph ng trnh trn tho mn nh l: N u max{| a
1
|, | a
2
|,..., |a
n
|} = A th cc
nghi m c a ph ng trnh tho mn i u ki n | x | < 1 + A/ | a
0
|
Ph ng php Bernoulli cho php tnh ton nghi m l n nh t c a m t a th c P
n
(x) c
n nghi m th c phn bi t. Sau khi tm 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 Q
n-1
(x). Ti p t c dng ph ng php Bernoulli tm nghi m l n
nh t c a Q
n-1
(x).
Sau l i ti p t c cc b c trn cho n khi tm h t cc nghi m c a P
n
(x).
Chng ta kh o st ph ng trnh sai phn c d ng nh sau :
= a
o
y
k+n
+ a
1
y
k+n-1
+.....+ a
n
y
k
= 0 (1)
y l m t ph ng trnh sai phn tuy n tnh h s h ng. Khi cho tr c cc gi tr u y
o
,
y
1
,..y
n-1
ta tm c cc gi tr y
n
, y
n+1
,.. Chng c g i l nghi m c a ph ng trnh sai phn
tuy n tnh (1).
a th c
P
n
(x) = a
0
x
n
+ a
1
x
n-1
+..+a
n-1
x + a
n
(2)
v i cng m t h s a
i
nh (1) c g i l a th c c tnh c a ph ng trnh sai phn tuy n
tnh (1). N u (2) c n nghi m phn bi t x
1
,

x
2
,.., x
n
th (1) c cc nghi m ring l
k
i i
x y
N u y
i
l cc nghi m c a ph ng trnh sai phn l tuy n tnh (1),th
21
k
n n
k
2 2
k
1 1 k
x c x c x c y + + +
(3)
v i cc h s c
i
b t k c ng l nghi m c a ph ng trnh sai phn tuy n tnh h s h ng (1).
N u cc nghi m c n sao cho :
| x
1
| | x
2
| ...| x
n
|
V y
1
1
]
1

,
_

+
k
1
2
2
1
k
1 1 k
x
x
c
c
1 x c y
v
1
1
]
1

,
_

+
+
+
+
1 k
1
2
2
1
1 k
1 1 1 k
x
x
c
c
1 x c y
do :
1
1
]
1

,
_

+
1
1
]
1

,
_

+
+
k
1
2
2
1
1 k
1
2
2
1
1
k
1 k
x
x
c
c
1
x
x
c
c
1
x
y
y

do x
1
> x
2
>...> x
n
nn:
0
x
x
,
x
x
1 k
1
2
k
1
2

,
_

,
_

+
khi k
v y: 0
y
y
k
1 k

+
khi k
Ngh a l :
1
k
1 k
k
x
y
y
lim
+

N u ph ng trnh vi phn g m n+1 h s , m t nghi m ring y
k
c th c xc nh
t n gi tr y
k-1
, y
k-2
,...,y
n-1
. i u cho php tnh ton b ng cch
truy h i cc nghi m ring c a ph ng trnh vi phn.
tnh nghi m l n nh t c a a th c, ta xu t pht t cc nghi m ring y
1
= 0, y
1
=
0,.., y
n
=1 tnh y
n+1
. Cch tnh ny c ti p t c tnh y
n+2
xu t pht t y
1
= 0, y
2
=
0,..,y
n+1
v ti p t c cho n khi y
k+1
/y
k
khng bi n i n a. Tr s c a y
k+n
c tnh theo cng
th c truy h i :
( )
k n 1 n k 1
0
n k
y a y a
a
1
y + +
+ +
(4)
V d: Tnh nghi m c a a th c P
n
(x) = P
3
(x) = x
3
- 10x
2
+ 31x - 30.
Nh v y a
o
= 1, a
1
= -10,a
2
= 31 v a
3
= -30.
Ph ng trnh sai phn t ng ng l :
y
k+3
-10y
k+2
+ 31y
k+1
- 30y
k
= 0
Ta cho tr c cc gi tr y
1
= 0; y
2
= 0 v y
3
= 1. Theo (4) ta tnh c :
y
4
= - (-10y
3
+ 31y
2
- 30y
1
) = 10
y
5
= - (-10y
4
+ 31y
3
- 30y
2
) = 69
y
6
= - (-10y
5
+ 31y
5
- 30y
3
) = 410
y
7
= - (-10y
6
+ 31y
5
- 30y
4
) = 2261
y
8
= - (-10y
7
+ 31y
6
- 30y
5
) = 11970
y
9
= - (-10y
8
+ 31y
7
- 30y
6
) = 61909
y
10
= - (-10y
9
+ 31y
8
- 30y
8
) = 315850
y
11
= - (-10y
10
+ 31y
9
- 30y
8
) = 1598421
y
12
= - (-10y
11
+ 31y
10
- 30y
9
) = 8050130
y
13
= - (-10y
12
+ 31y
11
- 30y
10
) = 40425749
y
14
= - (-10y
13
+ 31y
12
- 30y
11
) = 202656090
y
15
= - (-10y
14
+ 31y
13
- 30y
12
) = 1014866581
y
16
= - (-10y
15
+ 31y
14
- 30y
13
) = 5079099490
y
17
= - (-10y
16
+ 31y
15
- 30y
14
) = 24409813589
22
y
18
= - (-10y
17
+ 31y
16
- 30y
15
) = 127092049130
y
19
= - (-10y
18
+ 31y
17
- 30y
16
) = 635589254740
T s cc s y
k+1
/y
k
l p thnh dy :
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 chng s h i t t i nghi m l n nh t l 5 c a a th c.
Ch ng trnh 2-7
//phuong phap Bernoulli
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define max 50
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");
getch();
exit(1);
}
else
printf("Nghiem x = %.4f\n",x);
n=n-1;
if (n!=0)
23
{
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 PHP L P BIRGE - VIETTE
Cc nghi m th c, n gi n c a m t a th c P
n
(x) c tnh ton khi s d ng ph ng
php Newton
) x ( P
) x ( P
x x
i n
i n
i 1 i


+
(1)
b t u tnh ton c n ch n m t gi tr ban u x
o
. Chng ta c th ch n m t gi tr
x
o
no , v d :
1 n
n
0
a
a
x


v tnh ti p cc gi tr sau :
) x ( P
) x ( P
x x
0 n
0 n
0 1


) x ( P
) x ( P
x x
1 n
1 n
1 2


Ti p theo c th nh gi P
n
(x
i
) theo thu t ton Horner :
P
0
= a
0
P
1
= P
0
x
i
+ a
1
(2)
P
2
= P
1
x
i
+ a
2
P
3
= P
2
x
i
+ a
3
..................
P(x
i
) = P
n
= P
n-1
x
i
+ a
n
M t khc khi chia a th c P
n
(x) cho m t nh th c (x - x
i
) ta c :
P
n
(x) = (x - x
i
)P
n-1
(x) + b
n
(3)
v i b
n
= P
n
(x
i
). a th c P
n-1
(x) c d ng:
P
n-1
(x) = b
o
x
n-1
+ b
1
x
n-2
+ p
3
x
n-3
+..+ b
n-2
x + b
n-1
(4)
xc nh cc h s c a a th c (4) ta thay (4) vo (3) v cn b ng cc h s v i a
th c c n tm nghi m P
n
(x) m cc h s ai cho:
(x - x
i
)( b
o
x
n-1
+ b
1
x
n-2
+b
3
x
n-3
+..+ b
n-2
x + b
n-1
) + b
n
= a
o
x
n
+ a
1
x
n-1
+ a
2
x
n-2
+...+ a
n
-1
x + a= (5)
T (5) rt ra :
b
o
= a
o
b
1
= a
1
+ b
o
x
i
(6)
b
2
= a
2
+ b
1
x
i
......
b
k
= a
k
+ b
k-1
x
i
.......
b
n
= a
n
+ b
n-1
x
i
= P
n
(x
i
)
o hm (3) ta c :
) x ( P ) x ( P ) x x ( ) x ( P
1 n 1 n i n
+
v: ) x ( P ) x ( P
i 1 n i n
(7)
Nh v y v i m t gi tr x
i
no theo (2) ta tnh c P
n
(x
i
) v k t h p (6) v i (7) tnh
c P
n
(x
i
). Thay cc k t qu ny vo (1) ta tnh c gi tr x
i+1
. Qu trnh c ti p t c cho
n khi | x
i+1
- x
i
| < hay P
n
(x
i+1
) 0 nn
1
x
i+1
l m t nghi m c a a th c.
Php chia P
n
(x) cho (x -
1
) cho ta P
n-1
(x) v m t nghi m m i khc c tm theo cch
trn khi ch n m t gi tr x
o
m i hay ch n chnh x
o
=
1
. Khi b c c a a th c gi m xu ng cn
b ng 2 ta dng cc cng th c tm nghi m c a tam th c tm cc nghi m cn l i.
24
V d: Tm nghi m c a a th c P
3
(x) = x
3
- x
2
-16x + 24
ao = 1 a
1
= -1 a
2
= -16 a
3
= 24
Ch n x
o
= 3.5 ta c :
P
o
= a
o
= 1
P
1
= a
1
+ p
o
x
0
= -1 + 3.5*1 = 2.5
P
2
= a
2
+ p
1
x
0
= -16 + 3.5*2.5 = -7.25
P
3
= a
3
+ p
2
x
0
= 24 + 3.5*(-7.25) = - 1.375
b
0
= a
0
= 1;
b
1
= a
1
+ b
o
x
0
= -1 + 3.5*1 = 2.5
b
2
= a
2
+ b
1
x
0
= -16 + 3.5*2.5 = -7.25
P
2
(3.5) = b
0
x
2
+ b
1
x

+ b
2
= 13.75
6 . 3
75 . 13
375 . 1
5 . 3
) x ( P
) x ( P
x x
0 n
0 n
0 1
+


L p l i b c tnh trn cho x
1
ta c:
P
o
= a
o
= 1
P
1
= a
1
+ p
o
x
1
= -1 + 3.6*1 = 2.6
P
2
= a
2
+ p
1
x
1
= -16 + 3.6*2.6 = -6.64
P
3
= a
3
+ p
2
x
1
= 24 + 3.6*(-6.64) = - 0.096
b
o
= a
o
= 1
b
1
= a
1
+ b
o
x
1
= -1 + 3.6*1 = 2.6
b
2
= a
2
+ p
1
x
1
= -16 + 3.6*2.6 = -6.64
P
2
(3.6) = b
0
x
2
+ b
1
x

+ b
2
= 15.68
606 . 3
68 . 15
096 . 0
6 . 3
) x ( P
) x ( P
x x
1 n
1 n
1 2
+


Qu trnh c th ti p t c cho n khi sai s ch p nh n c. Ch ng trnh d i y m t
thu t tnh trn.
Ch ng trnh 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]);
}
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];
25
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();
}
Dng ch ng trnh trn tm nghi m c a a th c x
4
+ 2x
3
- 13x
2
- 14x + 24 ta c
cc nghi m l:-4 ; 3 ; -2 v 1.
9. PH NG PHP NGO I SUY AITKEN
Xt ph ng php l p :
x = f(x) (1)
v i f(x) tho mn i u ki n h i t c a php 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(x
n
) (3)
x
n
= f(x
n-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
- x
n
= f(x
n
) - f(x
n-1
) = (x
n
- x
n-1
)f(c) (5)
V php l p (1) nn :
| x
n+1
- x
n
| q | x
n
- x
n-1
| (6)
= a
n
- pb
-2
Chng ta nh n th y r ng c tnh ton xu t pht t cng m t cng th c truy h i
nh cc h s b
k
v t ng ng v i h s b
n-1
b
n-1
= a
n-1
+ sb
n-2
- pb
n-3
=
H s bn l :
b
n
= a
n
+ sb
n-1
- pb
n-2
= sb
n-1
+
v cu i cng :
R
1
(x) = x + = b+
-1
(x - s) + b
n
Ngoi ra cc h s b
i
ph thu c vo s v p v by gi chng ta c n ph i tm cc gi
tr c bi t s
*
v p
*
cho b
n-1
v b
n
tri t tiu. Khi r
1
(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 P
n
(x). Ta bi t r ng b
n-1
v b
n
l hm c a s v p :
b
n-1
= f(s, p)
b
n
= g(s, p)
Vi c tm s
*
v p
*

a n vi c gi i h ph ng trnh phi tuy n:

'

0 ) p , s ( g
0 ) p , s ( f
Ph ng trnh ny c th gi i d dng nh ph ng php Newton. Th t v y v i m t ph ng
trnh phi tuy n ta c cng th c l p:
x
i+1
= x
i
- f(x
i
)/f'(x
i
)
hay f'(x
i
)(x
i+1
- x
i
) = -f(x
i
)
V i m t h c hai ph ng trnh,cng th c l p tr thnh:
J(X
i
)(X
i+1
- X
i
) = -F(X
i
)
26

You might also like