90
C¸c hµm ph©n tÝch d÷ liÖu
cplxpair(x) X¾p xÕp cÆp phøc liªn hîp
cross(x,y) TÝch chÐo vector
cumprod(x) TÝch tÝch luü theo cét
cumprod(x,n) TÝch tÝch luü theo chiÒu n
cumsum(x) Tæng tÝch luü theo cét
cumsum(x,n) Tæng tÝch luü theo chiÒu n
cumtrapz(x,y) TÝch chÐo tÝch luü
cumtrapz(x,y,n) TÝch chÐo tÝch luü theo chiÒu n
del2(A) To¸n tö rêi r¹c Laplacian 5 ®iÓm
diff(x) TÝnh ®é chªnh lÖch gi÷a c¸c phÇn tö
diff(x,m) TÝnh sè ra cÊp m cña c¸c phÇn tö
diff(x,m,n) TÝnh sè ra cÊp m cña c¸c phÇn tö theo chiÒu n
dot(x,y) TÝch v« híng cña hai vector
gradient(Z,dx,dy) Gradient vi ph©n
histogram(x) BiÓu ®å h×nh cét
max(x), max(x,y) PhÇn tö lín nhÊt
max(x,n) PhÇn tö lín nhÊt theo chiÒu n
mean(x) Gi¸ trÞ trung b×nh cña cét
mean(x,n) Gi¸ trÞ trung b×nh theo chiÒu n
median(x) Gi¸ trÞ cña phÇn tö gi÷a cña cét
median(x,n) Gi¸ trÞ cña phÇn tö gi÷a theo chiÒu n
min(x), min(x,y) PhÇn tö nhá nhÊt
min(x,n) PhÇn tö nhá nhÊt theo chiÒu n
prod(x) TÝch c¸c phÇn tö trong cét
prod(x,n) TÝch c¸c phÇn tö theo chiÒu n
rand(x) Sè ngÉu nhiªn ph©n bè ®Òu
randn(x) Sè ngÉu nhiªn ph©n bè b×nh thêng
sort(x) X¾p xÕp c¸c cét theo thø tù t¨ng dÇn
sort(x,n) X¾p xÕp theo chiÒu n
sortrows(A) X¾p xÕp c¸c hµng theo thø tù t¨ng dÇn
std(x), std(0) §é lÖch chuÈn cña cét chuÈn ho¸ theoN-1
std(x,1) §é lÖch chuÈn cña cét chuÈn ho¸ theoN
std(x, flag, n) §é lÖch chuÈn theo chiÒu n
subspace(A,B) Gãc gi÷a hai ®iÓm
sum(x) Tæng c¸c phÇn tö trong mçi cét
sum(x,n) Tæng c¸c phÇn tö theo chiÒu n
trapz(x,y) TÝch chÐo cña y=f(x)
trapz(x,y,n) TÝch chÐo theo chiÒu n
---------------------oOo-------------------
ch¬ng 14
§A THøC
14.1 C¸c nghiÖm cña ®a thøc
T×m nghiÖm cña ®a thøc gi¸ trÞ ®Ó ®a thøc b»ng kh«ng, lµ mét bµi to¸n thêng gÆp trong thùc
tÕ. MATLAB gi¶i quyÕt nh÷ng bµi to¸n nµy vµ ®ång thêi cung cÊp nh÷ng c«ng cô ®Ó tÝnh to¸n ®a
91
thøc. Trong MATLAB mét ®a thøc ®îc biÓu diÔn b»ng mét vector hµng c¸c hÖ sè víi bËc gi¶m dÇn.
VÝ dô ®a thøc
x4-12x3+25x+116 ®îc nhËp vµo nh sau:
>> p = [1 -12 0 25 116]
p=
1 -12 0 25 116
Nhí r»ng môc dµnh cho hÖ sè 0 còng ph¶i ®îc gâ vµo nÕu kh«ng MATLAB sÏ kh«ng hiÓu ®îc
hÖ sè cña biªñ thøc bËc mÊy lµ kh«ng. Sö dông d¹ng nµy th× nghiÖm cña mét ®a thøc cã thÓ t×m ®îc
b»ng c¸ch dïng hµm
roots
:
>> r = roots(p)
r=
11.7374
2.7028
-1.2251 + 1.4672i
-1.2251 - 1.4672i
Bëi trong MATLAB ®a thøc vµ c¸c nghiÖm cña nã ®Òu lµ vector nªn MATLAB ngÇm quy
íc r»ng ®a thøc lµ vector hµng, cßn c¸c nghiÖm lµ c¸c vector cét. NÕu biÕt tríc nghiÖm cña mét ®a
thøc th× ta dÔ dµng biÕt ®îc ®a thøc ®ã. Trong MATLAB lÖnh
poly
sÏ thùc hiÖn c«ng viÖc nµy:
>> pp = poly(r)
pp=
1 -12 -1.7764e-14 25 116
>> pp(abs(pp)< 1e-12 = 0 % G¸n nh÷ng phÇn tö qu¸ nhá b»ng kh«ng
1 -12 0 25 116
Bëi v× trong tÝnh to¸n thêng gÆp nh÷ng sai sè nªn ®«i khi kÕt qu¶ cña lÖnh
poly
cho ra c¸c ®a thøc
cã c¸c hÖ sè gÇn b»ng kh«ng vµ c¸c ®a thøc cã phÇn ¶o rÊt nhá nh ®îc chØ ra ë trªn, c¸c gi¸ trÞ b»ng
kh«ng cã thÓ ®îc lµm trßn b»ng c¸c c«ng cô vÒ m¶ng. T¬ng tù nh vËy, ta cã thÓ lµm trßn mét sè
phøc ®Ó trë thµnh mét sè thùc b»ng hµm
real
.
14.2 Nh©n ®a thøc
Hµm
conv
thùc hiÖn nh©n hai ®a thøc (thùc ra lµ hai ma trËn), xÐt tÝch cña hai ®a thøc sau:
a(x) = x3+2x2+3x+4b(x) = x3+4x2+9x+16
>> a = [1 2 3 4]; b = [1 4 9 16];
>> c = conv(a,b)
c=
1 6 20 50 75 84 64
KÕt qu¶ lµ c(x) = x6 +6x5 +20x4 +50x3+75x2+84x+64
khi ta nh©n nhiÒu ®a thøc víi nhau th× ta ph¶i sö dông lÖnh
conv
nhiÒu lÇn.
14.3 PhÐp céng ®a thøc
92
MATLAB kh«ng cung cÊp c¸c m trùc tiÕp thùc hiÖn phÐp céng hai ®a thøc, dïng phÐp céng ma
trËn chØ cã t¸c dông khi hai ®a thøc lµ hai vector cã cïng kÝch thíc. VÝ dô nh céng hai ®a thøc a(x)
vµ b(x) ë trªn:
>> d = a + b
d=
2 6 12 20
KÕt qu¶ lµ d(x)=2x3+6x2+12x+20. Khi hai ®a thøc cã bËc kh¸c nhau th× ®a thøc cã bËc thÊp h¬n
ph¶i ®îc thªm vµo c¸c hÖ sè 0 ®Ó cho bËc cña nã cã cïng bËc víi ®a thøc cã bËc cao h¬n. XÐt phÐp
céng hai ®a thøc c vµ d ë trªn:
>> e = c + [0 0 0 d]
e=
1 6 20 52 81 96 84
KÕt qu¶ lµ e(x)=x6+6x5+20x4+52x3+81x2+84. C¸c gi¸ trÞ 0 cÇn ph¶i ®îc thªm vµo ë phÝa ®Çu
cña vector chø kh«ng ph¶i phÝa ®u«i, bëi v× c¸c hÖ sè ®ã ph¶i t¬ng øng víi c¸c hÖ sè bËc cao cña x.
NÕu b¹n muèn, b¹n cã thÓ t¹o mét hµm M_file ®Ó thùc hiÖn phÐp c«ng ®a thøc tæng qu¸t:
function p=polyadd(a,b)
%POLYADD Polynomial addition
%POLYADD(A,B) adds the polynomials A and B
if nargin<2
error(‘Not enough input arguments’)
end
a=a(:).’; %make sureinputs are row vectors
b=b(:).’;
na=length(a); %find lengths of a and b
nb=length(b);
p=[zeros(1,nb-na) a]+[zeros(1,na-nb) b];
% pad with zeros as necessary
B©y giê cã thÓ minh ho¹ cho viÖc dïng hµm polyadd, h·y xÐt vÝ dô tríc ®©y:
>> f = polyadd(c,d)
f=
1 6 20 52 81 96 84
KÕt qu¶ còng gièng nh ®a thøc e ë trªn. TÊt nhiªn polyadd còng cã thÓ dïng ®Ó thùc hiÖn phÐp trõ.
>> g = polyadd(c,-d)
g=
1 6 20 48 69 72 44
14.4 Chia hai ®a thøc
Trong mét trêng hîp ta ph¶i chia ®a thøc nµy cho mét ®a thøc kh¸c, trong MATLAB c«ng
viÖc nµy ®îc thùc hiÖn bëi hµm
deconv
, sö dông c¸c ®a thøc b vµ c ë trªn ta cã:
>> [q,r] = deconv(c,b)
q=
1 2 3 4
r=
0 0 0 0 0 0 0
93
KÕt qu¶ nµy chØ ra r»ng c ®em chia cho b th× ®îc ®a thøc lµ q vµ ®a thøc d lµ r trong trêng hîp nµy
®a thøc d lµ ®a thøc 0 bëi v× c lµ ®a thøc chia hÕt cho q (nhí r»ng trªn ®©y ta ®· nhËn ®îc ®a thøc c
b»ng c¸ch ®em nh©n ®a thøc a víi ®a thøc b)
14.5 §¹o hµm
Bëi dµng tÝnh ®îc vi ph©n cña mét ®a thøc nªn MATLAB ®a ra hµm
polyder
®Ó tÝnh vi
ph©n ®a thøc:
>> h = polyder(g)
h=
6 30 80 144 138 72
14.6 TÝnh gi¸ trÞ cña mét ®a thøc
Râ rµng r»ng b¹n cã thÓ céng, trõ, nh©n, chia, ®¹o hµm mét ®a thøc bÊt kú dùa trªn c¸c hÖ sè cña
nã, b¹n còng cã thÓ dÔ dµng tÝnh ®îc gi¸ trÞ c¸c ®a thøc nµy. Trong MATLAB hµm
polyval
sÏ thùc
hiÖn c«ng viÖc nµy:
>> x = linspace(-1,3);
SÏ chän 100 ®iÓm d÷ liÖu gi÷a -1 vµ 3
>> p = [1 4 -7 -10];
Dïng ®a thøc p(x) = x3+4x2-7x-10
>> v = polyval(p,x);
TÝnh gi¸ trÞ cña p(x) t¹i c¸c gi¸ trÞ cña x vµ lu tr÷ kÕt qu¶ vµo trong m¶ng v. Sau ®ã kÕt qu¶ sÏ ®îc
vÏ ra b»ng lÖnh plot
>> plot(x, v), title(‘x^3+4x^2-7x-10’), xlabel(‘x’)
94
H×nh 14.1
14.7 Ph©n thøc h÷u tØ
§«i khi b¹n gÆp nh÷ng bµi to¸n liªn quan ®Õn tØ sè cña hai ®a thøc hay cßn gäi lµ ph©n thøc h÷u
tØ, vÝ dô nh c¸c hµm truyÒn hay c¸c hµm xÊp xØ
pade
cã d¹ng nh sau:
Trong MATLAB ph©n thøc còng ®îc m« pháng b»ng hai ®a thøc riªng rÏ.
VÝ dô nh:
>> n=[1 -10 100] % a numerator
n =
1 -10 100
>> d=[1 10 100 0] % a dimominator
d =
1 10 100 0
>> z=roots(n) % the zeros of n(x)/d(x)
z =
5.0000 + 8.6603i
5.0000 - 8.6603i
>> p=roots(d) % the poles of n(x)/d(x)
p =
0
-5.0000 + 8.6603i
-5.0000 - 8.6603i
§¹o hµm cña ph©n thøc nµy theo biÕn x ®îc tÝnh dùa trªn hµm
polyder
:
>> [nd,dd]=polyder(n,d)