Ch¬ng 20
BiÓu t-îng cña hép c«ng cô to¸n häc
C¸c ch¬ng tríc, b¹n ®· biªt ®îc MATLAB m¹nh ra sao trªn ph¬ng diÖn lËp tr×nh, tÝnh
to¸n. MÆc dï kh¶ n¨ng tÝnh to¸n cña nã rÊt m¹nh, tuy nhiªn nã vÉn cßn cã nh÷ng h¹n chÕ. Nh mét
m¸y tÝnh, MATLAB c¬ së sö dông c¸c con sè. Nã nhËn c¸c sè (123/4) hoÆc c¸c biÕn (x =[ 1 2 3 ]).
Hép c«ng to¸n häc mét tËp hîp c¸c c«ng cô ( hµm ) ®Ó MATLAB sö dông nh»m gi¶i
c¸c bµi to¸n. Cã c¸c c«ng cô ®Ó tæ hîp, ®¬n gi¶n ho¸, tÝch ph©n, vi ph©n vµ gi¶i c¸c phÐp to¸n ®¹i sè
vµ phÐp to¸n vi ph©n. C¸c c«ng cô kh¸c sö dông trong ®¹i sè häc tuyÕn tÝnh ®Ó chuyÓn ®æi chÝnh x¸c
d¹ng nghÞch ®¶o, ®Þnh thøc vµ c¸c khu«n mÉu tiªu chuÈn.
C¸c c«ng trong Symbolic Math Tollbox ®îc t¹o nªn tõ ch¬ng tr×nh phÇn mÒm m¹nh cã tªn
lµ Maple@ ph¸t triÓn khëi ®Çu tõ trêng ®¹i häc Waterloo ë Ontario, Canada vµ b©y giê lµ phÇn mÒm
cña h·ng Waterloo Maple Software. Khi b¹n yªu cÇu MATLAB thùc hiÖn mét phÐp to¸n, nã sÏ sö
dông c¸c hµm cña Symbolic Math Tollbox ®Ó lµm viÖc nµy vµ tr¶ l¹i kÕt qu¶ ë cöa sæ lÖnh.
20.1 BiÓu thøc vµ c¸c ®èi tîng ®Æc trng
MATLAB c¬ së sö dông mét sè c¸c kiÓu ®èi tîng kh¸c nhau ®Ó lu tr÷ gi¸ trÞ. BiÕn sè häc
dïng ®Ó lu tr÷ gi¸ trÞ sè häc, vÝ dô nh x=2, m¶ng kÝ tù ®Ó lu tr÷ chuçi v¨n b¶n, vÝ nh : t = ‘ A text
147
string ‘. Hép c«ng cô to¸n häc ®Æc trng dïng nh÷ng ®èi tîng to¸n häc thay thÕ c¸c biÕn vµ c¸c
to¸n tö, vÝ dô: x = sym ( ‘x ‘). C¸c ®èi tîng to¸n häc ®îc sö dông bëi MATLAB trong nhiÒu trêng
hîp t¬ng tù nh c¸c biÕn sè häc vµ chuçi ®îc sö dông. BiÓu thøc to¸n häc lµ nh÷ng biÓu thøc cã
chøa ®èi tîng to¸n häc thay thÕ cho c¸c sè, hµm, to¸n tö.vµ c¸c biÕn. C¸c biÕn kh«ng yªu cÇu ph¶i
®Þnh nghÜa tríc. ThuËt to¸n lµ c«ng cô thùc hµnh ®Ó gi¶i quyÕt nh÷ng bµi to¸n trªn c¬ së biÕt ®îc
nh÷ng quy luËt vµ sù nhËn d¹ng c¸c biÓu tîng ®îc ®a ra, chÝnh x¸c nh c¸i c¸ch b¹n gi¶i b»ng ®¹i
sè häc vµ sù tÝnh to¸n.. C¸c ma trËn to¸n häc lµ nh÷ng m¶ng mµ phÇn tö cña nã lµ c¸c ®èi tîng to¸n
häc hoÆc c¸c biÓu thøc.
20.2 T¹o vµ sö dông c¸c ®èi tîng ®Æc trng
§èi tîng ®Æc trng ®îc x©y dùng tõ nh÷ng chuçi kÝ tù hoÆc c¸c biÕn sè häc sö dông hµm
sym
.
VÝ dô x = sym (‘ x ‘ ) t¹o ra mét biÕn ®Æc trng x, y = sym ( ‘ y ‘ ) t¹o ra mét biÕn ®Æc trng y, y =
sym ( ‘ 1/3 ‘ ) t¹o ra mét biÕn ®Æc trng y mang gi¸ trÞ 1/3. Gi¶ sö biÕn ®Æc trng ®îc ®Þnh nghÜa, nã
cã thÓ ®îc sö dông trong c¸c biÓu thøc to¸n häc t¬ng tù nh c¸c biÕn sè häc ®îc sö dông trong
MATLAB . NÕu nh c¸c biÕn x, y ®îc t¹o ra tríc ®ã th× lÖnh z= (x+y) / ( x-2 ) sÏ t¹o mét biÕn míi
z bëi v× biÓu thøc mµ nã thay thÕ cã mang mét hay nhiÒu biÕn ®Æc trng x hoÆc y.
Mét ®èi tîng sè häc cã thÓ chuyÓn thµnh ®èi tîng ®Æc trng. Díi ®©y lµ mét vÝ dô:
>> m = magic(3) % t¹o mét ma trËn sè
m =
8 1 6
3 5 7
4 9 2
>> M = sym(m) % t¹o mét ma trËn ®Æc trng tõ m
M =
[ 8, 1, 6 ]
[ 3, 5, 7 ]
[ 4, 9, 2 ]
>> det(M) % x¸c ®Þnh ®Þnh thøc cña ma trËn ®Æc trng M
ans =
-360
VÝ dô nµy x©y dùng mét ma trËn vu«ng 3x3, chuyÓn ®æi thµnh ma trËn ®Æc trng, vµ t×m ®Þnh
thøc cña ma trËn.
Hµm
sym
cho phÐp b¹n lùa chän ®Þnh d¹ng cho sù hiÓn thi ®Æc trng cña gi¸ trÞ sè. Có ph¸p lµ:
S =
sym
( A, fmt ) trong ®ã A lµ gi¸ trÞ sè hoÆc ma trËn cßn fmt lµ mét ®Æc tÝnh ®Þnh d¹ng tuú chän,
cã thÓ lµ ‘f ‘, ‘ r ’, ‘ e ‘, hoÆc ‘ d ‘ . Gi¸ trÞ mÆc ®Þnh lµ ‘ r ‘ . NÕu chän ‘ f ‘ t¬ng øng hÖ ch÷ sè lôc
ph©n, ‘ r’ t¬ng øng ch÷ sè h÷u tØ, ‘ e ‘ t¬ng tù nh ‘ r ‘ nhng ë d¹ng chÝnh t¾c hµm mò, cßn ‘ d ‘
t¬ng øng ch÷ sè hÖ thËp ph©n.
Díi ®©y lµ mét sè vÝ dô vÒ sù hiÓn thÞ cña mét sè ®Þnh d¹ng tuú chän:
LÖnh D¹ng hiÓn thÞ 1/3 Líp
format short 0.3333 double
format long 0.333333333333333 double
format short e 3.3333e-001 double
format long e 3.333333333333333e-001 double
format short g 0.33333 double
format long g 0.333333333333333 double
format hex 3fd5555555555555 double
format bank 0.33 double
148
format rat 1/3 double
format + + double
sym ( 1/3, ‘f ‘ ) ‘1.555555555555 ‘*2^(-2) sym
sym ( 1/3, ‘r ‘ ) 1/3 sym
sym ( 1/3, ‘e’ ) 1/3-eps/12 sym
sym ( 1/3, ‘d ‘ ) .333333333333333333314829616256 sym
Sù kh¸c nhau gi÷a c¸c ®Þnh d¹ng ®Æc trng cã thÓ g©y ra mét sè hçn ®én. VÝ dô:
>> sym(1/3)- sym(1/3,'e') % lçi dÊu ©m sè h÷u tØ
ans =
1/12*eps
>> double(ans) % ®Þnh d¹ng thËp ph©n
ans =
1.8504e-17
20.3 Sù biÓu diÔn biÓu thøc ®Æc trng cña MATLAB
MATLAB cã c¸c biÓu thøc ®Æc trng gièng nh lµ biÓu thøc cã chøa ®èi tîng ®Æc trng kh¸c
nhau gi÷a chóng vÒ biÕn sè, biÓu thøc, phÐp to¸n nÕu kh«ng chóng gÇn gièng nh biÓu thøc
MATLAB c¬ b¶n. Sau ®©y lµ mét vµi vÝ dô cña biÓu thøc ®Æc trng.
BiÓu thøc tîng trng Sù tr×nh bµy trong MATLA
x=sym(‘ x ‘ ) y= M=syms(‘a’,’b’,’c’,’d’);
x=sym(‘x’) cos(x2)-sin(2x) f=syms x a b
x=sym(‘x’) f=int(x^3/sqrt(1-x),a,b)
C¸c hµm ®Æc trng cña MATLAB cho phÐp b¹n thao t¸c nh÷ng biÓu thøc nµy theo nhiÒu c¸ch kh¸c
nhau. VÝ dô:
>> x = sym('x') % t¹o mét biÕn ®Æc trng x
>> diff(cos(x)) % ®èi cña cos(x ) víi biÕn sè lµ x
ans =
-sin(x)
>> sym('a','b','c','d' )% t¹o biÕn sè ®Æc trng a, b, c vµ d
>> M = [a, b, c, d] % t¹o mét ma trËn ®Æc trng
M =
[a, b]
[c, d]
>> det(M) % t×m ®Þnh thøc cña ma trËn ®Æc trng M
ans =
a*b - b*c
Trong vÝ dô ®Çu tiªn, x ®îc ®Þnh nghÜa nh mét biÕn ®Æc trng tríc khi nã ®îc sö dông
trong biÓu thøc, t¬ng tù nh vËy biÕn sè phi ®îc g¸n mét gi¸ trÞ tríc khi chóng ®îc sö dông.
§iÒu nµy cho phÐp MATLAB xem xÐt cos(x) nh mét biÓu thùc ®Æc trng, vµ do vËy
dif
(cos(x)) lµ
mét phÐp to¸n ®Æc trng h¬n lµ mét phÐp to¸n sè häc. Trong vÝ dô sè 2, hµm
syms
thêng ®îc ®Þnh
nghÜa lµ mét sè biÕn sè ®Æc trng.
syms
(‘a’, ‘b’ ) t¬ng ®¬ng víi a = sym('a'); b=
sym('b' ); . MATLAB biÕt r»ng M=[a, b; c, d ] lµ mét ma trËn ®Æc trng bëi v× nã chøa
®ùng mét biÕn sè ®Æc trng, vµ do ®ã
det(M)
lµ mét phÐp to¸n ®Æc trng.
Trong MATLAB, c©u lÖnh
func arg
t¬ng ®¬ng víi
func(arg)
, trong ®ã
func
lµ mét hµm, cßn
arg
lµ mét chuçi ®èi sè kÝ tù. MATLAB ph©n biÖt
syms a b c d
syms
(‘a’, ‘b’, ‘c’, ‘d’ ) lµ t¬ng
®¬ng nhng nh c¸c b¹n biÕt c«ng thøc ®Çu tiªn dÔ thùc hiÖn h¬n.
149
Chóng ta xem xÐt kÜ h¬n vÝ dô thø hai ®· nªu ë trªn:
>> a = 1; b = 2; c = 3; d = 4 % ®Þnh nghÜa biÕn sè a ®Õn d
>> M = [a,b;c,d] % M lµ mét ma trËn sè
M=
1 2
3 4
>> size(M) %M lµ mét ma trËn bËc hai
ans =
2 2
>> class(M) % Cã nh÷ng lo¹i ®èi tîng nµo lµ M?
ans =
double
>> M = '[a, b; c, d ]' % M lµ mét chuçi ®Æc trng
M =
[a, b :c, d ]
>> size(M) % M lµ mét vector hµng cña 9 kÝ tù
ans =
1 9
>> class( M )
ans =
char
>> M = sym('[a,b;c,d ]') % mét ®èi tîng ®Æc trng nhng
% kh«ng ph¶i lµ mét ma trËn
M=
[a,b;c,d]
>> size(M) % M lµ mét vector 3 phÇn tö (2 dÊu ph¶y )
ans =
1 3
>> class(M)
ans =
sym
>> syms a b c d % ®Þnh nghÜa biÕn sè ®Æc trng a ®Õn d
>> M = [a,b;c,d] % M lµ mét ma trËn ®Æc trng
M =
[a, b]
[c, d]
>> size(M)
ans =
2 2
>> class(M)
ans =
sym
>> a = 1; b = 2 ; syms c d % ®Þnh nghÜa mét biÕn cè ®Þnh tõ a
>> M = [a,b;c,d] % M lµ mét ma trËn ®Æc trng tõ a ®Õn d
M=
150
[1, 2]
[c, d]
>> size(M)
ans=
sym
Trong vÝ dô nµy, M ®¬c ®Þnh nghÜa theo 5 c¸ch:
KiÓu thø nhÊt: nã gÇn gièng víi ma trËn bËc hai.
KiÓu thø hai lµ mét chuçi kÝ tù.
KiÓu thø ba lµ mét ®èi tîng ®Æc trng hîp lÖ, nhng nã kh«ng thÓ sö dông trong mäi trêng hîp.
KiÓu thø t lµ mét ma trËn bËc hai.
KiÒu cuèi cïng cho th¸y biÕn sè lµ biÕn ®Æc trng cã kÕt h¬p trong biÓu thc ®Æc trng ®Ó t¹o
thµnh ma trËn ®Æc trng.
BiÓu thøc ®Æc trng kh«ng cã biÕn ®îc gäi lµ hµm ®Æc trng. Khi hµm ®Æc trng hiÓn thÞ,
chóng ®«i khi khã mµ ph©n biÖt ®îc víi sè nguyªn. VÝ dô:
>> f=sym(3) %t¹o mét h»ng ®Æc trng
f=
3
>> class(f) % kiÓu cña ®èi tîng f lµ g×
ans=
sym
>> g = sym(pi)
g=
pi
>> class(g)
ans=
sym
>> h = sym(sin(pi/4))
h=
sqrt(1/2)
>> class(h)
ans=
sym
20.4 BiÕn ®Æc trng
Khi lµm viÖc víi biÓu thøc ®Æc trng cã nhiÒu h¬n mét biÕn ®Æc trng, chÝnh x¸c h¬n mét
biÕn lµ biÕn ®éc lËp. NÕu MATLAB kh«ng chØ ra ®©u lµ biÕn ®éc lËp th× nã sÏ nhËn biÕn nµo gÇn x
nhÊt theo thø tù ch÷ c¸i.
BiÕn ®éc lËp ®«i khi cßn ®îc gäi lµ biÕn tù do. B¹n cã thÓ yªu cÇu MATLAB chØ ra biÕn nµo
trong biÓu thøc ®Æc trng. §Ó biÕt ®îc ta sö dông hµm
findsym
:
>> syms a s t u omega i j % ®Þnh nghÜa c¸c biÕn ®Æc trng
>> findsym(a*t+s/(u+3),1) % u lµ gÇn x nhÊt
ans =
u
>> findsym(sin(a+omega),1) % omega gÇn x nhÊt
ans =
omega