CHNG5:SYMBOLICMATHTOOLBOXES
§1.KHÁINIMCHUNG
Symbolic Math Toolboxes kt hp tính toán bng ch vào môi trng
MATLAB.Cáctoolboxnàybsungcáctiníchsvàđthvicáckiutính
toántoánhckhácnhau.
Tiních
Nidung
Calculusđo hàm, tích phân, gii hn, tng và chui
Taylor
LinearAlgebra nghchđo,đnhthc,giátrriêng,phântíchvà
dngchínhtccamatrn.
Simplification phngpháprútgncácbiuthcđis
SolutionofEquations giibngchvàbngscácphngtrìnhđis
vàviphân
VariablePrecision
Arithmetic
đánhgiáđchínhxáccacácbiuthcđis
Transform binđiLaplace,Fourriervàz
Special Mathematical
Function
cáchàmtoánhcđcbitcacácngdngtoán
hckinhđin
ĐnglctínhtoánnmdicáctoolboxlànhânMaple,mththng
tínhtoánđcpháttrinđutiêntrngđihcWaterloo,Canadavàsau
đó ti Eidgenroessiche Technische Hochschule Zurich, Thu sĩ. Mapleđc
th
ngmihoávàhtrcacôngtyWaterlooMaple.
§2.KHIĐNGTOOLBOX
1.Cácđitngch:Trongphnnàychúngtasxemxétcáchtovàdùng
cácđitngch.Chúngtacũngs
xemxétcácbinchmcđnh.Symbolic
MathToolboxđnhnghĩamtkiudliuMATLABmigilàđitngch
haysym.Bêntrong,mtđitngchlàmtcutrúcsliu
mànólubiu
dinchuicáckít.SymbolicMathToolboxdùngcácđitngchđbiu
dincácbinch,cácbiuthcch,cácmatrnch.
2.Tocácbi
nvàcácbiuthcch:Lnhsymchophéptaxâydngcácbin
vàcácbiuthcch.Vídlnh:
85
x=sym(x)
a=sym(alpha)
toracácbinchlàxvàavixlàxvàalàalpha.
Gi s ta mun ta mun dùng bin ch đ biu din t l vàng
2
51 +
=ρ .Tadùnglnh:
rho=sym((1+sqrt(5))/2)
Bâygitacóththchiêncácphéptoánkhácnhauvirho.Víd:
f=rho^2rho1
f=
(1/2+1/2*5^(1/2))^23/21/2*5^(1/2)
Tarútgnbiuthc:
simplify(f)
ans=
0
Bâygigistamungiiphngtrìnhbc2 c
bxaxf
2
+
+= .Phátbiu:
f=sym(a*x^2+b*x+c)
gán biu thc ch ax
2
+ bx + c cho bin f. Tuy nhiên trong trng hp này
SymbolicMathToolboxkhôngtoracácbintngngvicácshnga,b,
cvàxtrongbiuthc.Đthchincácphéptoánbngch(vídtíchphân,
đohàm,thaythv.v)trênftaphitocácbinmtcáchrõràng,nghĩalàcn
vit:
a=sym(a)
b=sym(b)
c=sym(c)
x=sym(x)
hayđnginlà:
symsabcx
Nói chung là ta có th dùng sym hay symsđto các bin ch nhng nên
dùngsymsđtitkimthigian.
2.Binđigiasvàch:
a.Tocácbinthcvàphc:Lnhsymchophéptamôtcácthuctính
toánhccacácbinchbngcáchdùngtuchnreal.Phátbiu:
x=sym(x,real);
y=sym(y,real);
hayhiuquhn:
86
symsxyreal
z=x+i*y
torabinchxvàycóthuctínhlàsthc.Đcbit:
f=x^2+y^2
thcslàskhôngâm.Nhvyzlàbinphcvàcáclnh:
conj(x)
conj(z)
expand(z*conj(z))
choktqu:
returnthecomplexconjugatesofthevariables
x
xi*y
x^2+y^2
Lnhconjlàtoánttosphcliênhp.
Đxóathuctínhrealcaxtadùnglnh:
symsxunreal
hay:
x=sym(x,unreal)
Lnhclearxkhôngxoáthuctínhsrealcax.
b.Tocáchàmtrutng:Nutamuntomthàmtrtng(nghĩalà
mthàmkhôngxácđnh)f(x)cndùnglnh:
f=sym(f(x))
Khinàyfhotđngnhlàf(x)vàcóthxlíbngcáclnhtoolbox.Vídđ
tínhviphânbc1tavit:
df=(subs(f,x,x+h)–f)/h
hay
symsxh
df=(subs(f,x,x+h)–f)/h
trv:
df=
(f(x+h)f(x))/h
ngdngnàycahàmsymsrthuíchtrongbinđiFourrier,Laplacevà
z.
c.DùngsymđtruycpcáchàmcaMaple:Tacóthtruycphàmgiai
thak!caMaplekhidùngsym.
kfac=sym(k!)
Đtính6!hayk!tavit(lutrongct5_1.m):
87
symskn
subs(kfac,k,6)
ans=
720
subs(kfac,k,n)
ans=
n!
haynutính12!tacũngcóthvit:
prod(1:12)
d.Vídtomatrnch:Mtmatrnvònglàmatrnmàhàngsaucó
đcbngcáchdchcácphntcahàngtrcđi1ln.Tatomtmatrn
vòngAbngcácphnta,bvàc:
symsabc
A=
[abc;bca;cab]
ktqu:
A=
[a,b,c]
[b,c,a]
[c,a,b]
DoAlàmatrnvòngtngmihàngvàctnhnhau:
sum(A(1,:))
ans=
a+b+c
sum(A(1,:))==sum(A(:,2))
ans=
1
BâygitathayA(2,3)bngbetavàbbngalpha:
symsalphabeta
A(2,3)=beta;
A=subs(A,b,alpha)
A
=
[a,alpha,c]
[alpha,c,beta]
[c,a,alpha]
Tvídnàytathydùngcácđitngchcũngtngtnhdùngstrong
MATLAB.
88
e.Binchmcđnh:Khidùngcáchàmtoánhc,vicchncácbinđc
lpthngrtrõràng.Vídxembngsau:
Hàmtoánhc LnhMATLAB
f=xn
f=x^n
g=sin(at+b) g=sin(a*t+b)
h=Jv(z) h=besselj(nu,z)
Nutatìmđohàmcacáchàmnàynhngkhôngmôtbinđclp
(nghĩalàđohàmtheobinnào)thìktqulà:
f’=nxn
1
g=acos(at+b)
h=Jv(z)(v/z)Jv+1(z).
Nhvycácbinđclplàx,tvàz.MATLABhiucácbinđclplà
cácchthngvànmcuibngchcáinhx,y,z.Khikhôngthycácch
cáinày,MATLABstìmchgnnhtvàcoiđólàbinđclp.Cácbinkhác
nhn,a,bvàvđccoilàhng haythông s.Tuynhiên tacó thlyđo
hàmcaftheonbngcáchvitrõbinđclpra.Tadùngcáclnhsauđto
racáchàm(lutrongct5_2.m):
symsabnnutxz
f=x^n;
g=sin(a*t+b);
h=besselj(nu,z);
Đđohàmhàmftavit:
diff(f);
ans=
x^n*n/x
Trongvídtrênxlàbinđclp.Numuntínhđohàmcaftheontacn
vit:
diff(f,n)
ans=
x^n*log(x)
4.Tocáchàmtoánhcbngch
:
a.Dùngcácbiuthcch:Cáclnh:
symsxyz
89
r=sqrt(x^2+y^2+z^2)
t=atan(y/x)
f=sin(x*y)/(x*y)
toracácbiuthcchr,tvàf.Tacóthdùngcáclnhdiff,int,subshaycác
lnhSymbolicMathToolboxkhácđxlícácbiuthcnhvy.
b.TocácMfile:Mfilechophéptadùngcáchàmtngquáthn.Víd
tamuntorahàmsinc=sin(x)/xtasvitmtMfile(sinc.m)cónidung
nhsau:
functionz=sinc(x)
ifisequal(x,sym(0))
z=1;
else
z=sin(x)/x;
end
Tacóthmrngcácvídnhvychocáchàmvàbinkhácnhau.
§3.TÍNHTOÁN
1.Đohàm:Tatobiuthcch:
symsax
f=sin(a*x)
Vythì:
df=diff(f)
tínhđohàmcahàmf(x)theox.Ktqulà:
df=
cos(a*x)*a
Đtínhđohàmcaftheoatavit:
dfa=diff(f,a)
ktqu:
dfa=
cos(a*x)*x
Hàmtoánhc LnhMATLAB
f=xn
f’=nxn
1
f=x^n
diff(f)haydiff(f,x)
g=sin(at+b)
g’=acos(at+b)
g=sin(a*t+b)
diff(g)haydiff(g,t)
90
h=Jv(z)
h’ = Jv(z)(v/z)
Jv+1(z)
h=besselj(nu,z)
diff(h)haydiff(h,z)
Đtínhđohàmbc2caftheoxvàatavit:
diff(f,2)
ans=
sin(a*x)*a^2
diff(f,x,2)
ans=
sin(a*x)*x^2
Hàmdiffcóthdùngđislàmatrn.Trongtrnghpnàyđohàmđc
thchintrêntngphnt.Víd:
symsax
A=[cos(a*x),sin(a*x);sin(a*x),cos(a*x)]
ktqu:
A=
[cos(a*x), sin(a*x)]
[sin(a*x), cos(a*x)]
lnh:
dy=diff(A)
choktqu:
dy=
[sin(a*x)*a, cos(a*x)*a]
[cos(a*x)*a, sin(a*x)*a]
TakhosátbinđittođEuclid(x,y,z)sangtođcu(r,λ,ϕ)thchin
bngcáccôngthc:
x=rcosλcosϕ
y=rcosλsinϕ
z=rsinλ
Đtính matrn JacobiJcaphép binđinày tadùng hàmjacobian.Đnh
nghĩatoánhccaJlà:
),,r(
)z,y,x(
J
ϕλ∂
∂
=
Đ d vit ta dùng kí t l thay cho λ và f thay cho ϕ. Các lnh (lu trong
ct5_5.m):
symsrlf
91
x=r*cos(l)*cos(f);
y=r*cos(l)*sin(f);
z=r*sin(l);
J=jacobian([x;y;z],[rlf])
chotaktqu:
J=
[
cos(l)*cos(f), –r*sin(l)*cos(f),–r*cos(l)*sin(f)]
[
cos(l)*sin(f), –r*sin(l)*sin(f), r*cos(l)*cos(f)]
[sin(l), r*cos(l), 0]
vàlnh:
detJ=simple(det(J))
cho:
detJ=
–cos(l)*r^2
Chúýlàđisthnhtcahàmjacobianphilàvectctvàđisthhai
làvecthàng.HnnadođnhthccamatrnJacobianlàbiuthclng
giáckháphctpnêntadùnglnh
simpleđthaythvàrútgn.
Bngsautnghphàm
diffvàhàmjacobian
Toánttoánhc LnhMATLAB
f=exp(ax+b) symsabx
f=exp(a*x+b)
dx
d
f
diff(x)hay
diff(f,x)
da
d
f
diff(f,a)
ad
fd
2
2
diff(f,a,2)
r=u
2
+v
2
t=arctan(v/u)
symsrtuv
r=u^2+v^2
t=atan(v/u)
)v,u(
)t,r(
J
∂
∂
=
J=jacobian([r;t],[u,v])
2.Giihn:Đohàmcamthàmlàgiihnsauđâynunótnti:
h
)x(f)hx(f
lim)x(f
0h
−+
=
′
→
92
Symbolic Math Toolbox cho phép gii hn ca mt hàm mt cách trc tip
hn.Lnh:
symshnx
dc=limit((cos(x+h)–cos(x))/h,h,0)
choktqu:
dc=
–sin(x)
và:
limit((1+x/n)^n,n,inf)
cho:
ans=
exp(x)
minh ho 2 trong s các gii hn quan trng ca toán hc:đo hàm(trong
trnghpcosx)vàhàmmũ.Trongkhinhiugiihn:
)x(
flim
ax→
là“haiphía”(nghĩalàktqunhnhauchodùxtintibênphihaybêntrái
caa)licónhnghàmgiihnphivàtráikhácnhau.Dođó3giihn:
x
1
lim,
x
1
lim,
x
1
lim
0x0x0x +→−→→
cho3ktqukhácnhau:khôngxácđnh,
∞và+∞
TrongtrnghpkhôngtntigihnSymbolicMathToolboxtrvktqu
NaN.Víd:
limit(1/x,x,0)
cho:
ans=
NaN
Lnh:
limit(1/x,x,0,left)
cho:
ans=
–inf
Lnh:
limit(1/x,x,0,right)
cho:
ans=
inf
Nhvylimit(f)tngđngvilimit(f,x,0).Bngsauchocácgiihn:
93
Hàmtoánhc LnhMATLAB
)x(flim
0x→
limit(f)
)x(flim
ax→
limit(f,x,a) hay
limit(f,a)
)x(flim
ax −→
limit(f,x,a,’left’)
)x(flim
ax +→
limit(f,x,a,’right’)
3.Tíchphân:
a.Cácvnđchung:Nuflàmtbiuthcchthìint(f)tìmmtbiu
thckhácFsaochodiff(F)=f.Nhvyint(f)chotatíchphânbtđnhcaf.
Tngtnhđohàmint(f,v)lytíchphântheobinđclpv.Tacóbng
sau:
Hàmtoánhc LnhMATLAB
1n
x
dxx
1n
n
+
=
+
∫
int(x^n)hay
int(x^n,x)
∫
π
=
2
0
1dx)x2sin(
int(sin(2*x),0,pi/2)hay
int(sin(2*x),x,0,pi/2)
g=cos(at+b)
∫
+= )batsin(
a
1
dt)t(g
g=cos(a*t+b)
int(g)hay
int(g,t)
)z(Jdz)z(J
01
−=
∫
int(besselj(1,z)hay
int(besselj((1,z),z)
KhiMATLABkhôngtìmđctíchphânnóvitlilnhđãnhpvào.
b.Tíchphânvihngsthc:Mttrongcácvnđkhitínhtíchphânlà
giátrcacácthôngs.Taxéthàm .Hàmnàyrõrànglàcógiátrdng
vimikvàxvàcódnghìnhchuông.Giátrcahàmtinđn0khix→±∞
vimisthck.Talyvíd
2
)kx(
e
−
2
1
k = vàvđthcahàmbngcáclnh(
lutrong
ct5_6.m):
symsx
k=sym(1/sqrt(2));
f=exp(–(k*x)^2);
ezplot(f)
94
TuynhiênnhânMaplekhôngcoik
2
vàx
2
lànhngsdngmàchlàcácbin
hìnhthc,khôngcóthuctínhtoánhc.Dovykhitính bngcác
lnh:
dxe
2
)kx(
∫
∞
∞−
−
symsxk;
f=exp(–(k*x)^2);
int(f,x,–inf,inf)
ktquslà:
Definiteintegration:Cantdetermineifthe
integralisconvergent.
Needtoknowthesignof>k^2
Willnowtryindefiniteintegrationandthentakelimits.
Warning:Explicitintegralcouldnotbefound.
ans=
int(exp(–k^2*x^2),x=–inf..inf)
TrongphnsauchúngtasxétcáchlàmchoMATLABhiurngklàsthc
vàdođócoik
2
làsdng.
c.Cácbinthctheosym:ChúýlàMaplekhôngthxácđnhđcdu
cak
2
.Vychúngtagiiquytkhókhănnàynhthnào?Câutrlilàlàm
choktrthànhsthcbngdùnglnhsym.Mtđcđimcóíchcasymgi
là tu chn real cho phép ta khai báo k là bin thc. Do vy tích phân trên
hoàntoàntínhđctrongtoolboxnhcáclnh:
symskreal
int(f,x,–inf,inf)
ktqulà:
ans=
signum(k)/k*pi^(1/2)
ChúýlàkbâygilàđitngchtrongvùnglàmviccaMATLABvàlà
binthctrongvùnglàmviccaMaple.Khinhplnh:
cleark
tachxoáđcktrongvùnglàmviccaMATLAB.Munlàchokkhôngcòn
làsthctrongvùnglàmviccaMapletaphidùnglnh:
symskunreal.
Tacóbngsau:
95
Hàmtoánhc LnhMATLAB
kx
e)x(f
−
=
symskx
f=exp(k*x)
∫
dx)x(f
int(f)hayint(f,x)
∫
dk)k(f
int(f,k)
∫
1
0
dx)x(f
int(f,0,1)hay
int(f,x,0,1)
2
)kx(
e)x(g
−
=
symskxreal
g=exp((k*x)^2)
∫
∞
∞−
dx)x(g
int(g,inf,inf)hay
int(g,x,inf,inf)
4.Tínhtng: Ta cóth tính tng biuthcch khi chúngtn tibng cách
dùnglnhsymcum.Vídchui:
⋅⋅⋅+++
22
3
1
2
1
1
chotnglàπ
2
/6cònchui:
1+x
2
+x
3
+...
chotnglà1/(1x).Cáctngđctínhnhsau(lutrongct5_7.m):
symsxk
s1=symsum(1/k^2,1,inf)
s2=symsum(x^k,k,0,inf)
s1=
1/6*pi^2
s2=
1/(x1)
5.ChuiTaylor
:Chohàmf(x).Phátbiu:
T=taylor(f,8)
choktqu:
T=
1/9+2/81*x^2+5/1458*x^4+49/131220*x^6
làkhaitrinTaylorcaf(x)lâncnx=0(khaitrinMacLaurin)cócha8s
hngkhác0.Phátbiu:
symsx
g=exp(x*sin(x))
96
t=taylor(g,12,2)
torakhaitrinTaylorcaf(x)tix=2vàchađn12shngkhác0.Tav
các hàm này lên cùng mtđth đ thyđc kh năng xp x ca chui
Taylorvihàmthcg(lutrongct5_8.m):
xd=1:0.05:3;
yd=subs(g,x,xd);
ezplot(t,[1,3]);
holdon;
plot(xd,yd,r.)
title(XapxiTaylor);
legend(Ham,Taylor)
Tipđótadùnglnh:
1 1.5 2 2.5 3
1
2
3
4
5
6
x
Xap xi Taylo r
Ham
Taylor
pretty(T)
đinktqudidngcácbiuthctoánhcdđc.
6.Tínhtoánmrng:Taxéthàm:
xcos45
1
)x(f
+
=
Cáclnh:
symsx
f=1/(5+4*cos(x))
lubiuthcchđnhnghĩahàmf(x).
SymbolicMathToolboxcungcpmtbcáclnhddùngđvđth
các biu ch, bao gm cácđng cong trong mt phng(ezplot), cácđng
đng mc(ezcontour và ezcontourf), các mt cong(ezsurf, ezsurfc, ezmesh và
ezmeshc),đthtrongtođcc(ezpolar)vàđngcongdidngthôngs
97
(ezplotvàezplot3)vàmtdidngthôngs(ezsurf).Trongphnnàychúng
taxemcáchdùnghàmezplotvđthhàmf(x).Đthcahàmnhsau:
Phmvimcđnhkhivđthcahàmlà[2π÷2π].Đchcthphmvi
vđthtadùnglnh:
ezplot(f,[ab])
Lúcnàyđthcahàmđcvtrongđon[a,b]
Bâygitatìmđohàmbc2caf(x):
f2=diff(f,2)
f2=
32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x)
Tacóthnhplnh:
f2=diff(f,x,2).
Tavđthcaf2:
ezplot(f2)
axis([–2*pi2*pi–52])
Tđthtathyrnggiátrcaf”(x)nmtrongkhong[4,1].Giátrmaxvà
mincaf”(x)xuthintif”’(x)=0.Phátbiu:
f3=diff(f2);
cho
32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x)
và:
pretty(f3)
cho:
234
3
))xcos(45(
)xsin(
4
))xcos(45(
)xcos()xsin(
96
))xcos(45(
)xsin(
384
+
−
+
+
+
Tarútgnf3vàvitlididngdđc:
f3=simple(f3);
pretty(f3)
Ktqulà:
4
22
))xcos(45(
)25)xcos(80)xcos(80)xsin(96)(xsin(
4
+
−++
Bâygitatìmcácgiátrzerocuf3bnglnh:
z=solve(f3)
ktquchotamatrn:
98