CHNG5:NISUYVÀXPXHÀM
§1.NISUYLAGRANGE
Trongthctnhiukhiphiphchimthàmy=f(x)timigiátrx
trongmtđon[a,b]nàođómàchbitmtsnhtđnh
cácgiátrcahàm
timtsđimchotrc.Cácgiátrnàyđccungcpquathcnghim
haytínhtoán.Vìvynysinhvnđtoánhclàtrênđona≤x
≤bchomt
lotcácđimxi(i=0,1,2 )vàticácđimxinàygiátrcahàmlàyi=f(xi)
đãbit.Bâygitacntìmđathc:
P
n(x)=aoxn+a1x
n1
+…+an1x+an
saochoP
n(xi)=f(xi)=yi.ĐathcPn(x)đcgilàđathcnisuycahàm
y=f(x).Tachnđathcđnisuyhàmy=f(x)vìđathclàloihàmđn
gin,luôncóđohàmvànguyênhàm.Victínhgiátr
canótheothuttoán
Hornercũngđngin.
BâygitaxâydngđathcnisuykiuLagrange.GiL
ilàđathc:
)xx) (xx)(xx) (xx(
)xx) (xx)(xx) (xx(
L
ni1ii1ii0i
n1i1i0
i
−−−−
−
−
−−
=
+−
+−
RõrànglàLi(x)làmtđathcbcnvà:
⎩
⎨
⎧
≠
=
=
ij0
ij1
)x(L
ji
TagiđathcnàylàđathcLagrangecbn.
Bâygitaxétbiuthc:
∑
=
=
n
0i
iin
)x(L)x(f)x(P
TathyPn(x)làmtđathcbcnvìcácLi(x)làcácđathcbcnvà
thomãnđiukinPn(xi)=f(xi)=yi.TaginólàđathcnisuyLagrange.
Vin=1tacóbng
x x
0 x1
y y0 y1
Đathcnisuyslà:
P
1(x)=yoL0(x)+y1L1(x1)
10
1
0
xx
xx
L
−
−
=
01
0
1
xx
xx
L
−
−
=
nên
01
0
1
10
1
01
xx
xx
y
xx
xx
y)x(P
−
−
+
−
−
=
NhvyP1(x)làmtđathcbcnhtđivix
Vin=2tacóbng
128
x x0 x1 x2
y y0 y1 y2
Đathcnisuyslà:
P2(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
−−
−−
=
NhvyP
1(x)làmtđathcbchaiđivix
Trêncsthuttoántrêntacóchngtrìnhtìmđathcnisuyca
mthàmkhichotrccácđimvàsauđótínhtr
scanótimtgiátr
nàođónhsau:
Chngtrình51
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#definemax21
intmaxkq,n;
floatx[max],y[max],a[max],xx[max],yy[max];
floatx0,p0;
voidmain()
{
inti,k;
charok;
voidvaosolieu(void);
floatlagrange(int,float[],float[],float);
voidinkq(void);
clrscr();
printf(%24cNOISUYDATHUCLAGRANGE\n,);
129
vaosolieu();
k=0;
ok=c;
while(ok==c)
{
printf(Tinhgiatricuayvoixlax0=);
scanf(%f,&x0);
p0=lagrange(n,x,y,x0);
printf(Giatricuay=%15.5f\n,p0);
printf(\n);
k=k+1;
maxkq=k;
xx[k]=x0;
yy[k]=p0;
flushall();
printf(
Tinhtiepkhong(c/k)?);
scanf(%c,&ok);
}
inkq();
}
voidvaosolieu()
{
inti,t;
charok;
printf(\n);
printf(Hamy=f(x)\n);
printf(Socap(x,y)nhieunhatlamax=20\n);
printf(Sodiemdachotruocn=
);
scanf(%d,&n);
for(i=1;i<=n;i++)
{
printf(x[%d]=,i);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
}
130
printf(\n);
printf(SOLIEUBANVUANHAP\n);
printf(xy\n);
for(i=1;i<=n;i++)
printf(%8.4f%8.4f\n,x[i],y[i]);
ok=;
t=1;
flushall();
while(t)
{
printf(\nCosuasolieukhong(c/k):?);
scanf(%c,&ok);
if(toupper(ok)==C)
{
printf(
Chisocuaphantucansuai=);
scanf(%d,&i);
printf(Giatrimoi:);
printf(x[%d]=,i);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
flushall();
}
if(toupper(ok)!=C)
t=0;
}
}
floatlagrange(intn,float
x[max],floaty[max],floatx0)
{
inti,k;
floatg0;
p0=0.0;
for(k=1;k<=n;k++)
{
g0=1.0;
for(i=1;i<=n;i++)
131
if(i!=k)
g0=g0*(x0x[i])/(x[k]x[i]);
p0=p0+y[k]*g0;
}
return(p0);
}
voidinkq()
{
inti,j,k;
printf(\n);
printf(%24cBANGSOLIEU\n,);
printf(%18cx%24cy\n,,);
for(i=1;i<=n;i++)
printf(%20.4f%25.4f\n,x[i],y[i]);
printf(\n);
printf(%24cKETQUATINHTOAN\n
,);
printf(%14cx%10cy\n,,);
for(k=1;k<=maxkq;k++)
printf(%15.5f%15.5f\n,xx[k],yy[k]);
getch();
}
Gistacóbngcácgiátrx,y:
x 0 32 2 4
y 03.75 102 4
vytheochngtrìnhtix=2.5y=3.3549.
§2.NISUYNEWTON
Bây gi ta xét mt cách khácđxây dngđa thc ni suy gi là
phngphápNewton.Trchttađavàomtkháinimmilàthiu
Gishàmy=y(x)cógiá
trchotrongbngsau:
x x0 x1 x2
…
xn1 xn
y y0 y1 y2
…
y
n1 yn
Thiucp1caytixi,xjlà:
ji
ji
ji
xx
yy
]x,x[y
−
−
=
Thiucphaicaytixi,xj,xklà:
132
k
i
k
jji
k
ji
xx
]x,x[y]x,x[y
]x,x,x[y
−
−
=
v.v.
Viy(x)=P
n(x)làmtđathcbcnthìthiucp1tix,x0:
0
0nn
0n
xx
)x(P)x(P
]x,x[P
−
−
=
làmtđathcbc(n1).Thiucp2tix,x
0,x1:
1
10n0n
10n
xx
]x,x[P]x,x[P
]x,x,x[P
−
−
=
làmtđathcbc(n2)v.vvàtithiucp(n+1)thì:
Pn[x,xo, ,xn]=0
Tcácđnhnghĩathiutasuyra:
P
n(x)=Pn(x0)+(xx0)Pn[x,xo]
Pn[x,x0]=Pn[x0,x1]+(xx1)Pn[x,xo,x1]
P
n[x,xo,x1]=Pn[x0,x1,x2]+(xx2)Pn[x,xo,x1,x2]
P
n[x,xo, ,xn1]=Pn[x0,x1, ,xn]+(xxn)Pn[x,xo, ,xn]
Do Pn[x,xo, ,xn]=0nêntđótacó:
Pn(x)=Pn(x0)+(xx0)Pn[xo,x1]+(xx0)(xx1)Pn[x0,x1,x2]+…
+(xx
0)…(xxn1)Pn[x0,…,xn]
NuP
n(x)làđathcnisuycahàmy=f(x)thì:
Pn(xi)=f(xi)=yivii=0÷n
Dođócácthiutcp1đncpncaPnvàcaylàtrùngnhauvà
nhvytacó:
P
n(x)=y0+(xx0)y[x0,x1]+(xx0)(xx1)y[x0,x1,x2]+ +
(xx0)(xx1) (xxn1)y[x0, ,xn]
ĐathcnàygilàđathcnisuyNewtontinxutpháttnútx0ca
hàmy=f(x).NgoàiđathctincòncóđathcnisuyNewtonlùixutphát
tđimx
ncódngnhsau:
P
n(x)=yn+(xxn)y[xn,xn1]+(xxn)(xxn1)y[xn,xn1,xn2]+ +
(xx
n)(xxn1) (xx1)y[xn, ,x0]
Trnghpcácnútcáchđuthìxi=x0+ihvii=0,1, ,n.Tagisai
phântincp1tiilà:
∆y
i=yi+1yi
vàsaiphântincphaitii:
∆
2
yi=∆(∆yi)=yi+22yi+1+yi
vàsaiphântincpnlà:
133
∆
n
yi=∆(∆
n1
yi)
Khiđótacó:
[]
h
y
x,xy
0
10
∆
=
[]
2
0
2
210
h2
y
x,x,xy
∆
=
[]
n
0
n
n210
h!n
y
x, ,x,x,xy
∆
=
Bâygiđtx=x
0+httrongđathcNewtontintađc:
0
n
0
2
000n
y
!n
)1nt()1t(t
y
!2
)1t(t
yty)htx(P ∆
+−
⋅
⋅
⋅
−
+⋅⋅⋅+∆
−
+∆+=+
thìtanhnđcđathcNewtontinxutpháttx
0trongtrnghpnút
cáchđu.Vin=1tacó:
P1(x0+ht)=y0+∆y0
Vin=2tacó:
0
2
000n
y
!2
)1t(t
yty)htx(P ∆
−
+∆+=+
Mtcáchtngttacókháinimcácsaiphânlùitii:
∇y
i=yiyi1
∇
2
yi=∇(∇yi)=yi2yi1+yi2
∇
n
yi=∇(∇
n1
yi)
vàđathcnisuyNewtonlùikhicácđimnisuycáchđu:
n
n
n
2
nn0n
y
!n
)1nt()1t(t
y
!2
)1t(t
yty)htx(P ∇
−+⋅
⋅
⋅
+
+⋅⋅⋅+∇
+
+∇+=+
Víd:Chohàmnhbngsau:
x 0.1 0.2 0.3 0.4
y 0.09983 0.19867 0.29552 0.38942
Tatínhgiátrcahàmti0.14bngđathcnisuyNewtonvìcácmccách
đuh=0.1.Tacóbngsaiphânsau:
i x y ∆y ∆
2
y ∆
3
y
0 0.1 0.09983
0.09884
134
1 0.2 0.198670.00199
0.096850.00096
2 0.3 0.295520.00295
0.09390
3 0.4 0.38942
TadùngcôngthcNewtontinviđimgclàx
0=0.1;h=0.1.Vix=
0.14tacó0.14=0.1+0.1tnênt=0.4vàktqulà:
1395433
6
.000096.0
!3
)2t)(1t(t
00199.0
!2
)1t(t
099884.0.t09983.0)t1.01.0(P =
−
−
−
−
++=+
ChngtrìnhnisuyNewtonnhsau:
Chngtrình52
//NoisuyNewton
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#definemax11
voidmain()
{
inti,j,k,n,t;
floata[max],b[max],x[max],y[max];
charok;
floatx0,p;
clrscr();
printf(Sodiemdachon=);
scanf(%d,&n);
for(i=1;i<=n;i++)
{
printf(x[%d]=,i);
scanf(%f
,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
}
printf(%10cBANGSOLIEU\n,);
135
printf(%8cx%30cy\n,,);
for(i=1;i<=n;i++)
printf(%4c%8.4f%23c%8.4f\n,,x[i],,y[i]);
ok=;
t=0;
flushall();
while(t)
{
printf(Cosuasolieukhong(c/k):);
scanf(%c,&ok);
if(toupper(ok)==C)
{
printf(Chisocuaphantucansuai=
);
scanf(%d,&i);
printf(Giatrimoi:);
printf(x[%d]=,i);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
flushall();
}
if(toupper(ok)!=C)
t=0;
}
a[1]=y[1];
for(j=1;j<=n1;j++)
{
for(i=1;i<=nj;i++)
y[i]=(y[i+1]y[i])/(x[i+j]x[i]);
a[j+1]=y[1];
}
b[n]=a[n];
for(k=n1;k>=1;k)
{
for(j=n1;j>=1;j)
b[j]=a[j];
for(i=n1;i>=k;i)
a[i]=a[i]b[i+1]*x[k];
136
}
for(i=n;i>=1;i)
printf(Hesobac%dla:%8.4f\n,i1,a[i]);
printf(\n);
k=0;
ok=c;
flushall();
while(ok==c)
{
printf(Tinhgiatricuaytaix=);
scanf(%f,&x0);
p=0;
for(k=n;k>=1;k)
p=p*x0+a[k];
printf(Trisonoisuytaix0=%4.2fla:%10.5f\n,x0,p);
getch();
printf(Bancomuontinhtiepcacdiemkhackhong(c/k));
do
scanf(%c,&ok);
while((ok!=c)&&(ok!=k));
}
}
Dùngchngtrìnhnàynisuycác
giátrchotrongbngsau
0 0.2 0.4 0.6 0.8 1.0
1 1.22140276 1.4918247 1.8221188 2.22554093 2.71828183
tacócáchscađathcnisuy:0.0139(bc5),0.0349(bc4),0.1704(bc3),
0.4991(bc2),1.0001(bc1)và1.0000(bc0).
§3.NISUYAITKEN
Mt dng khác cađa thc ni suyđc xácđnh bng thut toán
Aitken.Gistacónđimđãchocahàmf(x).Nhvyquahaiđimx
0và
x1tacóđathcnisuyLagrangecahàmf(x)đcvitdidng:
01
11
00
01
xx
xxy
xxy
)x(P
−
−
−
=
làmtđathcbc1:
137
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 =
−
−
−
=
ĐathcnisuyLagrangecaf(x)qua3đimx
0,x1,x2códng:
02
212
001
012
xx
xx)x(P
xx)x(P
)x(P
−
−
−
=
vàlàmtđathcbc2:
)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 =
−
−
−
=
TngquátđathcnisuyLagrangequanđimlà:
02
nn 12
0)1n (01
n 012
xx
xx)x(P
xx)x(P
)x(P
−
−
−
=
−
Nh vy ta có th dùng phép lpđxácđnh ln lt cácđa thc
Lagrange.SđtínhtoánnhvygilàsđNevilleAitken.
Víd:Chocáccpđim(0,0.4),(1.4,1.5),(2.6,1.8),(3.9,2.6),tínhytix=2
138
97143.1
04.1
6.05.1
24.0
xx
xxy
xxy
)x(P
01
11
00
01
=
−
−
−
=
−
−
−
=
65.1
4.16.2
6.08.1
6.05.1
xx
xxy
xxy
)x(P
12
22
11
12
=
−
−
=
−
−
−
=
7242.1
06.2
6.065.1
297143.1
xx
xx)x(P
xx)x(P
)x(P
02
212
001
012
=
−
−
=
−
−
−
=
4308.1
6.29.3
9.16.2
6.08.1
xx
xxy
xxy
)x(P
23
33
22
23
=
−
=
−
−
−
=
5974.1
4.19.3
9.14308.1
6.065.1
xx
xx)x(P
xx)x(P
)x(P
13
323
112
123
=
−
−
=
−
−
−
=
6592.1
09.3
9.15974.1
27242.1
xx
xx)x(P
xx)x(P
)x(P
03
3123
0012
0123
=
−
−
=
−
−
−
=
Chngtrìnhđcvitnhsau
Chngtrình53
//NoisuyAitken
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#definemax11
voidmain()
{
floatx[max],y[max],yd[max];
floatx1;
intj,k,n,n1;
clrscr();
printf(Chosodiemdacon=);
scanf(%d,&n1);
139
n=n11;
for(k=0;k<=n;k++)
{
printf(x[%d]=,k+1);
scanf(%f,&x[k]);
printf(y[%d]=,k+1);
scanf(%f,&y[k]);
}
printf(Chodiemcantinhgiatricuahamx1=);
scanf(%f,&x1);
for(k=0;k<=n1;k++)
{
yd[k]=(y[k]*(x1x[k+1])y[k+1]*(x1x[k]))/(x[k]
x[k+1]);
if(k!=0)
for(j=k1;j>=0;j)
yd[j]=(yd[j]*(x1x[k+1])yd[j+1]*(x1x[j]))/(x[j]x[k+1]);
}
printf(Giatrihamtaix=%6.3flay=%8.4f\n,x1,yd[0]);
getch();
}
Dùngchngtrìnhnàyđnisuycáccps(1,3),(2,5),(3,7),(4,
9)và
(5,11)tix=2.5tacóy=6.
§4.XPXHÀMBNGPHNGPHÁPBÌNHPHNGBÉNHT
Trongcácmctrctađãnisuygiátrcahàm.Bàitoánđólàcho
mthàmdidngbngsvàphitìmgiátrcahàmtimtgiátrcađi
skhôngnmtrongbng.
Trongthct,bêncnhbàitoánnisuytacòngpmtdngbàitoán
khác.Đólàtìmcôngthcthcnghimcamthàm.Nidungbàitoánlàt
mtlotcácđimchotrc(cóthlàcácgiátrcamtphépđonàođó)ta
phitìmmthàmxpxcácgiátrđãcho.Tasdùngphngphápbình
phngtithiuđgii bài toán.Giscómu quan sát (xi,yi)cahàm
y=f(x).Tachnhàmf(x)códng:
f(x)=a0f0(x)+a1f1(x)+a2f2(x) (1)
Trongđócáchàmf0(x),f1(x),f2(x)v.v.là(m+1)hàmđclptuyntínhmàta
cóthchntuývàcáchsailàthamschabitmàtaphixácđnhda
vàohhàmđãchnvàcácđimquansát.Saisgiatrđođcvàtrtính
theo(1)là:
140
ei=yif(xi)(2)
Saisnàycóthâmhay dng tu tnggiátrcayi.Khidùngphng
phápbìnhphngbénhttaxétbìnhphngcasaistimtđim:
(3)
[
2
ii
2
i
)x(fye −=
]
Vinđimtngbìnhphngcasaisslà:
[]
{}
∑∑
==
+⋅⋅⋅++−==
n
1i
2
inni11i00i
n
1i
2
i
)x(fa)x(fa)x(fayeS
RõràngSlàhàmcacácgiátrcntìmai.vàchúngtaschncácaisaochoS
đt giá tr min, nghĩa là cácđo hàm
i
a
S
∂
∂
phi bng không.Ta s xét các
trnghpcth.
1.Hàmxpxcódngđathc:Trongtrnghptngquáttachnhhàm
xpxlàmtđathc,nghĩalà:
f(x)=a0+a1x+a2x
2
+ +amxm
VyhàmSlà:
()
2
m210i
xaxaxaayS +⋅⋅⋅+++−=
Theođiukinđohàm
0
a
S
i
=
∂
∂
tanhnđchphngtrì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àmthphngtrìnhtuyntính.Giinótanhnđccácgíatr
a
i.Sauđâylàchngtrìnhvittheothuttoántrên.
Chngtrình54
//Xapxidathuc
#include<conio.h>
#include<stdio.h>
141
#include<ctype.h>
#definemax11
voidmain()
{
inti,j,k,m,n,p,kp,t;
floata[max],x[max],y[max],y1[max];
floatb[max][max];
charok;
floats,sx,s1,c,d;
clrscr();
printf(PHUONGPHAPBINHPHUONGTOITHIEU);
printf(\n);
printf(Chobaccuadathucxapxim=);
scanf(%d,&m);
printf(
Sodiemdachon=);
scanf(%d,&n);
for(i=1;i<=n;i++)
{
printf(x[%d]=,i);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
}
x[0]=1;
printf(\n);
printf(%4cBANGSOLIEU\n,);
printf(%8cx%30cy\n,,);
for
(i=1;i<=n;i++)
printf(%4c%8.4f%20c%8.4f\n,,x[i],,y[i]);
ok=;
t=1;
flushall();
while(t)
{
printf(Cosuasolieukhong(c/k):);
scanf(%c,&ok);
142
if(toupper(ok)==C)
{
printf(Chisocuaphantucansuai=);
scanf(%d,&i);
printf(Giatrimoi:);
printf(x[%d]=,i);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
flushall();
}
if(toupper(ok)!=C)
t=0;
}
//for(i=0;i<=n;i++)
//a[i]=0.0;
printf(\n);
printf(CACGIATRIDACHO);
printf(\n);
printf(X=);
for(i=1;i<=n;i++)
printf(%c%8.3f,,x[i]);
printf(\n);
printf(Y=);
for(i=1;i<=n;i++)
printf(%c%8.3f,,y[i]);
printf(\n
);
for(p=0;p<=m;p++)
{
y1[p]=0.0;
for(i=1;i<=n;i++)
{
sx=1.0;
for(j=1;j<=p;j++)
sx*=x[i];
y1[p]+=y[i]*sx;
}
}
143
for(p=0;p<=m;p++)
for(k=0;k<=m;k++)
{
kp=k+p;
b[p][k]=0.0;
for(i=1;i<=n;i++)
{
sx=1.0;
for(j=1;j<=kp;j++)
sx*=x[i];
b[p][k]+=sx;
}
}
for(i=0;i<=m1;i++)
{
c=1.0/b[i][i];
for(k=i+1;k<=m;k++)
{
d=b[i][k];
for(j=i+1;j<=m;j++)
b[k][j]=b[i][j]*c*d;
y1[k]=y1[i]*c*d;
b[i][k]*=c;
}
y1[i]*=c;
}
y1[m]/=b[m][m];
for(i=m1;i>=0;i)
for(j=i+1;j<=m;j++)
y1[i]=b[i][j]*y1[j];
printf(\n);
printf(CACHESOCUADATHUCCANTIM);
printf(\n);
for(i=0;i<=m;i++)
printf(a[%d]=%10.5f\n,i,y1[i]);
getch();
}
144
Vicácgiátrx,yđođctheobng
x 7 8 9 10 11 12 13
y 7,4 8,4 9,1 9,4 9,5 9,5 9,4
tacón=7vàchnm=2vàtínhđctheochngtrìnhcáchs:
a
0=0.111905;a1=2.545238;a2=4.857143
vàhàmxpxslà:f(x)=0.111905+2.545238x4.857143x
2
2.HàmdngAe
cx
:Khicácsliuthhinmtsbinđiđnđiutadùng
hàmxpxlày=Ae
cx
.Lylogarithaivtacó:
lny=lnA+cxlne
Theođiukinđohàm
0
a
S
i
=
∂
∂
tacóhphngtrình:
⎪
⎪
⎩
⎪
⎪
⎨
⎧
=+
=+
∑∑∑
∑∑
===
==
n
1i
n
1i
ii
n
1i
i
2
i
n
1i
n
1i
ii
ylnxxAlnxc
ylnAlnnxc
GiihphngtrìnhnàytacócáchsAvàc:
Chngtrình55
//xap_xi_e_mu;
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#include<math.h>
#definemax11
voidmain()
{
inti,n,t;
floatx[max],y[max];
charok;
floata,b,c,d,e,f,d1,d2,d3;
clrscr();
printf(PHUONGPHAPBINHPHUONGTOITHIEU);
printf(\n);
145
printf(Sodiemdachon=);
scanf(%d,&n);
for(i=1;i<=n;i++)
{
printf(x[%d]=,i);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
}
x[0]=1.0;
printf(%4cBANGSOLIEU\n,);
printf(%8cx%30cy\n,,);
for(i=1;i<=n;i++)
printf(
%4c%8.4f%23c%8.4f\n,,x[i],,y[i]);
ok=;
t=1;
while(t)
{
printf(Cosuasolieukhong(c/k):);
scanf(%c,&ok);
if(toupper(ok)==C)
{
printf(Chisocuaphantucansuai=);
scanf(%d,&i);
printf(Giatrimoi:);
printf(x[%d]=,i);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
}
if(toupper(ok)!=C)
t=0;
}
printf(CACGIATRIDACHO);
printf(\n);
printf(X=);
for(i=1;i<=n;i++)
printf(%c%8.3f,,x[i]);
146
printf(\n);
printf(Y=);
for(i=1;i<=n;i++)
printf(%c%8.3f,,y[i]);
printf(\n);
a=0.0;
for(i=1;i<=n;i++)
a+=x[i];
b=n;
c=0.0;
for(i=1;i<=n;i++)
c+=log(y[i]);
d=0.0;
for(i=1;i<=n;i++)
d+=x[i]*x[i];
e=0.0;
for(i=1;i<=n;i++)
e+=x[i]*log(y[i]);
d1=a*ad*b;
d2=c*ae*b;
d3=a*ec*d;
c=d2/d1;
a=d3/d1;
printf(\n);
printf(HesoA=%8.4f,exp(a));
printf(vasomuc=%8.4,c);
printf(\n);
printf(\nBANGCACGIATRITINHTOAN);
printf(\n);
printf(%5cx%28cy\n,,);
for(i=1;i<=n;i++)
{
printf(%8.4f%21c%8.4f\n,x[i],,exp(a)*exp(c*x[i]));
}
getch();
}
Vicácgiátrx,yđođctheobng
147
x 0 2 4 6 8 10 12
y 1280 635 324 162 76 43 19
tacón=7vàtínhđctheochngtrìnhcáchs:A=1285.44vac=0.3476
vàhàmxpxslà:f(x)=1285.44
3.HàmdngAx
q
:Khicácsliuthhinmtsbinđiđnđiutacũng
cóthdùnghàmxpxlày=Ax
q
.Lylogarithaivtacó:
lny=lnA+qlnx
Theođiukinđohàmtrittiêutacóhphngtrình:
⎪
⎪
⎩
⎪
⎪
⎨
⎧
=+
=+
∑∑∑
∑∑
===
==
n
1i
n
1i
ii
n
1i
ii
2
n
1i
n
1i
ii
ylnxlnxlnAlnxlnq
ylnAlnnxlnq
GiihphngtrìnhnàytacócáchsAvàq:
Chngtrình56
//xap_xi_x_mu;
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#include<math.h>
#definemax11
voidmain()
{
inti,n,t;
floatx[max],y[max];
charok;
floata,b,c,d,e,f,d1,d2,d3;
clrscr();
printf(PHUONGPHAPBINHPHUONGTOITHIEU);
printf(\n);
printf(Sodiemdachon=);
scanf(%d
,&n);
148
for(i=1;i<=n;i++)
{
printf(x[%d]=,i);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
}
x[0]=1.0;
printf(%4cBANGSOLIEU\n,);
printf(%8cx%30cy\n,,);
for(i=1;i<=n;i++)
printf(%4c%8.4f%23c%8.4f\n,,x[i],,y[i]);
ok=;
flushall();
t=1;
while(t)
{
printf(Cosuasolieukhong(c/k):);
scanf(%c,&ok);
if(toupper(ok)==C)
{
printf(Chisocuaphantucansuai=);
scanf(%d,&i);
printf(Giatrimoi:);
printf(x[,i,]=);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
}
if(toupper(ok)!=C)
t=0;
}
printf(\n);
printf(\nCACGIATRIDACHO);
printf(\n);
printf(X=);
for(i=1;i<=n;i++)
printf(%c%8.3f,,x[i]);
149
printf(\n);
printf(Y=);
for(i=1;i<=n;i++)
printf(%c%8.3f,,y[i]);
printf(\n);
a=0.0;
for(i=1;i<=n;i++)
a+=log(x[i]);
b=n;
c=0.0;
for(i=1;i<=n;i++)
c+=log(y[i]);
d=0.0;
for(i=1;i<=n;i++)
d+=log(x[i])*log(x[i]);
e=0.;
for(i=1;i<=n;i++)
e+=log(x[i])*log(y[i]);
d1=a*ad*b;
d2=c*ae*b;
d3=a*ec*d;
c=d2/d1;
a=d3/d1;
printf(\n);
printf(HesoA=%8.4f,exp(a));
printf(vasomuq=%8.4f\n,c);
printf(\n);
printf(\nBANGCACGIATRITINHTOAN\n);
printf(%5cx%27cy\n,,);
for(i=1;i<=n;i++)
{
printf(%8.4f%20c%8.4f\n,x[i],,exp(a)*exp(c*log(x[i])));
}
getch();
}
Vicácgiátrx,yđođctheobng
150
x 1 2 4 5 6
y 7.1 27.8 62.1 110 161
tacón=5vàtínhđctheochngtrìnhcáchs:A=7.1641vàq=1.9531
vàhàmxpxslà:f(x)=1285.44x
1.9531
4.Hàmlnggiác:Khiquanhy=f(x)códngtunhoàntadùnghàmxp
xlàthptuyntínhcacáchàmsinvàcosindng:
∑∑
==
ω+ω+=
n
1i
n
1i
ii0
)xisin(b)xicos(aa)x(f
Đđngintrchttaxéthàmchcómtshngsincos,nghĩalà:
xsin
b
xcosaa)x(
f
110
ω
+ω+=
HàmSscódng:
[]
∑
=
ω+ω+−=
n
1i
2
110i
)xsinbxcosaa(yS
Theođiukinđo hàm trittiêu ta có h phngtrìnhđivicách s
dng:
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
ω
ω=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
ωωωω
ωωωω
ωω
∑
∑
∑
∑∑∑
∑∑∑
∑
∑
xsiny
xcosy
y
b
a
a
xsinxsinxcosxsin
xsinxcosxcosxcos
xsinxcosn
1
1
0
2
2
Do:
0
n
xsinxcos
2
1
n
xcos
2
1
n
xsin
0
n
xcos
0
n
xsin
22
=
ωω
=
ω
=
ω
=
ω
=
ω
∑
∑∑
∑∑
nênhphngtrìnhcódngđngin:
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
ω
ω=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
∑
∑
∑
xsiny
xcosy
y
b
a
a
2n00
02n0
00n
1
1
0
Giihtacó:
∑∑
∑
ω=ω== xsiny
n
2
bxcosy
n
2
a
n
y
a
110
Trongtrnghptngquát,mtcáchtngttacó:
∑∑
∑
ω=ω== xisiny
n
2
bxicosy
n
2
a
n
y
a
ii0
Chngtrìnhtìmcáchsaivàbiđcthhinnhsau:
151
Chngtrình57
//xap_xi_sin_cos;
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#include<math.h>
#definemax11
#definepi3.15159
voidmain()
{
inti,j,m,n,t;
floatx[max],y[max],a[max],b[max];
charok;
floatomg,t1;
clrscr();
printf(PHUONGPHAPBINHPHUONGTOITHIEU);
printf(\n);
printf(Chososohangsincosm
=);
scanf(%d,&m);
printf(ChochukiT=);
scanf(%f,&t1);
printf(Sodiemdachon=);
scanf(%d,&n);
for(i=1;i<=n;i++)
{
printf(x[%d]=,i);
scanf(%f,&x[i]);
printf(y[%d]=,i);
scanf(%f,&y[i]);
}
x[0]=1.0;
printf(%4cBANGSOLIEU\n,);
printf(%8cx%30cy\n,,);
for(i=1;i<=n;i++)
152