vi 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
Quanh:J(Xi)∆X=F(Xi)vi∆X={si+1 si,pi+1pi}
T
tngngvimth
phngtrìnhtuyntínhhains∆s=si+1sivà∆p=pi+1pi:
⎪
⎪
⎩
⎪
⎪
⎨
⎧
−=∆
∂
∂
+∆
∂
∂
−=∆
∂
∂
+∆
∂
∂
)p,s(gp
p
g
s
s
g
)p,s(fp
p
f
s
s
f
ii
ii
TheocôngthcCramertacó:
δ
∂
∂
+
∂
∂
−
=∆
p
f
g
p
g
f
s
δ
∂
∂
+
∂
∂
−
=∆
s
g
f
s
f
g
p
s
g
p
f
p
g
s
f
∂
∂
∂
∂
−
∂
∂
∂
∂
=δ
Đdùngđccôngthcnàytacntínhđccácđohàm
s
f
∂
∂
,
p
f
∂
∂
,
s
g
∂
∂
,
p
g
∂
∂
.
Cácđohàmnàyđctínhtheocôngthctruyhi.
Dob
o=aonên
0
s
b
0
=
∂
∂
0
p
b
0
=
∂
∂
b1=a1+sbonên
0
1
b
s
b
=
∂
∂
0
p
b
1
=
∂
∂
b2=a2+sb1pbonên
s
)pb(
s
)sb(
s
a
s
b
0
122
∂
∂
−
∂
∂
+
∂
∂
=
∂
∂
Mtkhác:
0
s
a
2
=
∂
∂
1
11
b
s
)
b
(
s
s
)sb(
+
∂
∂
=
∂
∂
0
s
)pb(
0
=
∂
∂
nên:
01
2
sbb
s
b
+=
∂
∂
b3=a3+sb2pb1nên:
35
s
b
p
s
b
sb
s
b
12
2
3
∂
∂
−
∂
∂
+=
∂
∂
Nuchúngtađt:
1k
k
c
s
b
−
=
∂
∂
thì:
c
o=bo(2)
c1=b1+sbo=b1+sco
c2=b2+sc1pco
ck=bk+sck1pck2
cn1=bn1+scn2pcn3
Nhvycáchscũngđctínhtheocáchnhcáchsbk.Cuicùngvi
f=bn1vàg=bntađ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)
SaukhiphântíchxongPn(x)tatiptcphântíchPn2(x)theophng
pháptrên.Cácbctínhtoángm:
Chncácgiátrbanđubtkìs0vàp0
Tínhcácgiátrbo, ,bntheo(1)
Tínhcácgiátrco, ,cntheo(2)
Tính∆sovà∆potheo(3)và(4)
Tínhs1=s0+∆sovàp1=po+∆po
Lplibc1chođnkhipi+1=pi=pvàsi+1=si=s
Giiphngtrìnhx2sx+pđtìm2nghimcađathc
BtđuquátrìnhtrênchođathcPn2(x)
Víd:TìmnghimcađathcP4(x)=x
4
1.1x
3
+2.3x
2
+0.5x
2
+3.3.
Vilnlpbanđutachns=1vàp=1,nghĩalàtamthccódng:x
2
+x+1
a0 a1 a2 a3 a4
1 1.1 2.3 0.5 3.3
36
sbi1 2.1 3.4 0.8
pbi11 2.1 3.4
bi 1 2.1 3.4 0.8=bn1 0.7=bn
sbi1.0 3.1 5.5
pbi11.0 3.1
ci 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
Tiptclpln2vis1=s
*
vàp1=p
*
tacó:
a0 a1 a2 a3 a4
1 1.1 2.3 0.5 3.3
sbi0.89 1.77 2.68 0.06
pbi11.06 2.11 3.17
bi 1 1.99 3.01 0.07=bn1 0.17=bn
sbi0.89 2.56 4.01
pbi11.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.890.01=0.9
p
*
=1.06+0.04=1.1
37
Nhvy:
P4(x)=(x
2
+0.9x+1.1)(x
2
+
2x+3)
Chngtrìnhsauápdnglíthuytvanêuđtìmnghimcađathc.
Chngtrình210
//phuongphapBairstow
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#definem10
voidmain()
{
floata[m],b[m],c[m];
inti,n,v;
floats,e1,t,p,q,r,p1,q1;
clrscr();
printf(Chobaccuadathucn=);
scanf(%d,&n);
printf(Chocachesocuadathuccantim
nghiem\n);
for(i=n;i>=0;i)
{
printf(a[%d]=,ni);
scanf(%f,&a[i]);
}
printf(\n);
e1=0.0001;
if(n<=2)
if(n==1)
{
printf(Nghiemcuahe\n);
printf(%.8f,(a[0]/(a[1])));
getch();
exit(1);
}
do
{
38
v=0;
p=1;
q=1;
b[n]=a[n];
c[n]=a[n];
do
{
b[n1]=b[n]*p+a[n1];
c[n1]=b[n1]+b[n]*p;
for(i=n2;i>=0;i)
{
b[i]=b[i+2]*q+b[i+1]*p+a[i];
c[i]=c[i+2]*q+c[i+1]*p+b[i];
}
r=c[2]*c[2]c[1]*c[3];
p1=p(b[1]*c[2]b[0]*c[3])/r;
q1=q(b[0]*c[2]b[1]*c[1])/r;
if((fabs(b[0])<e1)&&(fabs(b[1])<e1))
gotott;
v=v+1;
p=p1;
q=q1;
}
while
(v<=40);
if(v>40)
{
printf(Khonghoitusau40lanlap);
getch();
exit(1);
}
tt:s=p1/2;
t=p1*p1+4*q1;
if(t<0)
{
printf(Nghiemphuc\n);
printf(%.8f+%.8fj\n,s,(sqrt(t)/2));
printf(%.8f%.8fj\n,s,(sqrt(t)/2));
printf(\n);
}
else
39
{
printf(Nghiemthuc\n);
printf(%.8f\n,(s+sqrt(t)/2));
printf(%.8f\n,(ssqrt(t)/2));
printf(\n);
}
for(i=2;i<=n;i++)
a[i2]=b[i];
n=n2;
}
while((n>2)&(r!=0.0));
s=a[1]/(2*a[2]);
t=a[1]*a[1]4*a[2]*a[0];
if(t<0)
{
printf(Nghiemphuc\n);
printf(%.8f+%.8fj\n,s,(sqrt(t)/(2*a[2])));
printf(%.8f
%.8fj\n,s,(sqrt(t)/(2*a[2])));
printf(\n);
}
else
{
printf(Nghiemthuc\n);
printf(%.8f\n,(ssqrt(t)/(2*a[2])));
printf(%.8f\n,(ssqrt(t)/(2*a[2])));
printf(\n);
}
getch();
}
Dùngchngtrìnhtrênđxácđnhnghimcađathc:
x
6
2x
5
4x
4
+13x
3
24x
2
+18x4=0
tanhnđccácnghim:
x1=2.61903399
x2=2.73205081
x3=0.732050755
x4=0.381966055
x5=0.500011056+i*1.3228881
x6=0.500011056i*1.3228881
40
§11.HPHNGTRÌNHPHITUYN
PhngphápNewtoncóthđctngquáthoáđgiihphng
trìnhphituyndng:
⎪
⎪
⎪
⎩
⎪
⎪
⎪
⎨
⎧
=
⋅⋅⋅⋅⋅
=
=
=
0)x, ,x,x,x(f
0)x, ,x,x,x(f
0)x, ,x,x,x(f
0)x, ,x,x,x(
f
n321n
n3213
n3212
n3211
hayvitgnhndidng:
F(X)=0
Trongđó:
X=(x
1,x2,x3, ,xn)
Vimtphngtrìnhmtbin,côngthcNewtonlà:
)x(f
)x(
f
xx
i
i
i1i
′
−=
+
hay: f(xi).∆x=f(xi)
vi ∆x=xi+1xi
Đivih,côngthclplà:
J(Xi)∆x=F(Xi)
TrongđóJ(Xi)làtoántJacobi.Nólàmtmatrnbcn(ntngngvi
sthànhphntrongvectX)códng:
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎜
⎜
⎜
⎜
⎜
⎜
⎝
⎛
∂
∂
⋅⋅⋅
∂
∂
∂
∂
∂
∂
⋅⋅⋅⋅⋅⋅
⋅⋅⋅⋅⋅⋅
∂
∂
⋅⋅⋅
∂
∂
∂
∂
∂
∂
∂
∂
⋅⋅⋅
∂
∂
∂
∂
∂
∂
=
n
n
3
n
2
n
1
n
n
2
3
2
2
2
1
2
n
1
3
1
2
1
1
1
i
x
f
x
f
x
f
x
f
x
f
x
f
x
f
x
f
x
f
x
f
x
f
x
f
)X(J
và∆X=Xi+1Xi
PhngphápNewtontuyntínhhoáhvànhvyvimibclp
cngiimthphngtrìnhtuyntính(màbinlà∆xi)xácđnhbicông
thclpchotikhivectX(x1,x2,x3, ,xn)gnvinghim.
Diđâylàchngtrìnhgiihphngtrìnhphituyn
⎪
⎪
⎩
⎪
⎪
⎨
⎧
=+−
=++−
=−+++
=−−−
08xxxx2
04x8x25
05xxxx
08xxx3xx
4321
3
2
1
4321
421
2
2
3
1
41
MatrnđohàmriêngJ(Xi)là:
⎟
⎟
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎜
⎜
⎝
⎛
−
−
−
−−−−
1xx2xx2xx2
080
x25
x
1111
xx30xx3x3xx3x3
213132
2
1
1
2141
2
242
2
1
Matrnnàyđcchngtrìnhđcvàonhthtcdoc.Trongthtc
này,cáchsa[i,5]làcáchàmfi(x).Vectnghimbanđuđcchnlà{0,
1,1,1}
T
.Kt qu tính cho ta : x = {0.01328676,1.94647929,
1.12499779,8.05819031 }
T
viđchính xác 0.000001.Vect s d r = {
0.00000536,0.00000011,0.00000001,0.00000006}
T
.
Chngtrình211
//giaiheptphituyen
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#definen4
floata[n+1][n+2];
floatx[n+1],y[n+1];
inti,j,k,l,z,r;
floate,s,t;
voidmain()
{
voiddoc();
clrscr();
printf(Chocacgiatringhiembandau\n);
for(i=1;i<=n;i++)
{
printf(x[%d]=,i);
scanf(%f,&x[i]);
}
e=1e6;
z=30;
for(r=1;r<=z;r++)
42
{
doc();
for(k=1;k<=n1;k++)
{
s=0;
for(i=k;i<=n;i++)
{
t=fabs(a[i][k]);
if(s<=t)
{
s=t;
l=i;
}
}
for(j=k;j<=n+1;j++)
{
s=a[k][j];
a[k][j]=a[l][j];
a[l][j]=s;
}
if(a[1][1]==0)
{
printf(Cac phan tu duong cheo cua ma tran bang
khong);
getch();
exit(1);
}
else
{
if(fabs(a[k][k]/a[1][1])<(1e08))
{
printf(Matransuybien);
gotomot;
}
}
for(i=k+1;i<=n;i++)
{
if(a[k][k]==0)
{
43
printf(Cac phan tu duong cheo cua ma tran
bangkhong\n);
gotomot;
}
s=a[i][k]/a[k][k];
a[i][k]=0;
for(j=k+1;j<=n+1;j++)
a[i][j]=a[i][j]s*a[k][j];
}
y[n]=a[n][n+1]/a[n][n];
for(i=n1;i>=1;i)
{
s=a[i][n+1];
for(j=i+1;j<=n;j++)
s=sa[i][j]*y[j];
if(a[i][i]==0)
{
printf(Cac phan tu duong cheo
cua ma tran
bangkhong\n);
gotomot;
}
y[i]=s/a[i][i];
}
}
if(r!=1)
for(i=1;i<=n;i++)
{
if(fabs(y[i])<e*fabs(x[i]))
gotoba;
}
for(i=1;i<=n;i++)
x[i]=x[i]y[i];
printf(\n);
}
printf(Khonghoitusau%dlanlap\n,z);
gotomot;
clrscr();
ba:printf(Vectonghiem\n);
for(i=1;i<=n;i++)
printf(%.5f\n,(x[i]y[i]));
44
printf(\n);
printf(Dochinhxaccuanghiemla%.5f:\n,e);
printf(\n);
printf(Vectotrisodu:\n);
for(i=1;i<=n;i++)
printf(%.5f\n,(a[i][n+1]));
mot:printf(\n);
getch();
}
voiddoc()
{
a[1][1]=3*x[1]*x[1]3*x[2]*x[4];
a[1][2]=3*x[2]*x[2]3*x[1]*x[4];
a[1][3]=0;
a[1][4]=3*x[1]*x[2];
a[1][5]=x[1]*x[1]*x[1]x[2]*x[2]*x[2]3*x[1]*x[2]*x[4]8;
a[2][1]=1;
a[2][2]=1;
a[2][3]=1;
a[2][4]=1;
a[2][5]=x[1]+x[2]+x[3]+x[4]5;
a[3][1]=x[1]/sqrt(25x[1]*x[1]);
a[3][2]=0;
a[3][3]=8;
a[3][4]=0;
a[3][5]=sqrt(25x[1]*x[1])+8*x[3]+4;
a[4][1]=2*x[2]*x[3];
a[4][2]=2*x[1]*x[3];
a[4][3]=2*x[1]*x[2];
a[4][4]=1;
a[4][5]=2*x[1]*x[2]*x[3]x[4]+8;
}
45