intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

IT - Matlab Software (Phần 2) part 9

Chia sẻ: Fewgnmerihnweil Bgmrtlihnmeilbni | Ngày: | Loại File: PDF | Số trang:8

81
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'it - matlab software (phần 2) part 9', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: IT - Matlab Software (Phần 2) part 9

  1. Phụ lục-Lệnh và hàm 224 tæí khaïc khäng, hoàûc chè âënh, caïc pháön tæí âàût trãn p âæåìng cheïo B laì ma tráûn min(m,n) haìng vaì p cäüt, thæång âáöy âuí (nhæng khäng cáön thiãút), coï caïc cäüt laì caïc âæåìng cheïo cuía A. d laì vectå âäü daìi p coï caïc thaình pháön nguyãn chè âënh caïc âæåìng cheïo trong A Mäüt caïch thä så, A, B vaì d quan hãû båíi for k = 1:p B(:,k) = diag(A,d(k)) end Bäún thao taïc khaïc nhau, phán biãût theo säú âäúi säú nháûp, coï thãø duìng våïi SPDIAGS laì: Láúy ra táút caí caïc âæåìng cheïo khaïc khäng: [B,d] = spdiags(A); Láúy ra âæåìng cheïo chè âënh: B = spdiags(A,d); Thay caïc âæåìng cheïo chè âënh: A = spdiags(B,d,A); Taûo mäüt ma tráûn thæa tæì caïc âæåìng cheïo cuía noï: A = spdiags(B,d,m,n); Quan hãû chênh xaïc trong A, B vaì d laì: if m >= n for k = 1:p for j = max(1,1+d(k)):min(n,m+d(k)) B(j,k) = A(j-d(k),j); end end if m < n for k = 1:p for i = max(1,1-d(k)):min(m,n-d(k)) B(i,k) = A(i,i+d(k)); end end end Vaìi pháön tæí cuía B, æïng våïi caïc vë trê “ b ãn ngoaìi ” A, khäng xaïc âënh âæåüc bàòng caïc voìng làûp naìy. Chuïng khäng âæåüc tham chiãúu khi B laì âäúi säú nháûp vaì âæåüc dàût giaï trë 0 khi B laì âäúi säú xuáút. Vê duû, caïc lãûnh naìy phaït sinh mäüt biãøu hiãûn 3 âæåìng cheïo thæa cuía pheïp vi phán cáúp 2 cäø âiãøn taûi n âiãøm e = ones(n,1); A = spdiags([e -2*e e], -1:1, n, n) Lãûnh naìy âäøi ma tráûn A thaình ma tráûn kiãøm tra Wilkinson (xem WILKINSON(n)) A = spdiags(abs(-(n-1)/2:(n-1)/2)',0,A) Cuäúi cuìng, lãûnh naìy sæía laûi 3 âæåìng cheïo B = spdiags(A) Vê duû thæï hai khäng vuäng A = [ 11 0 13 0 0 22 0 24 0 0 33 0 41 0 0 44 Phan Thanh Tao - 2004
  2. Phụ lục-Lệnh và hàm 225 0 52 0 0 0 0 63 0 0 0 0 74] coï m = 7, n = 4 vaì p = 3 Lãûnh [B,d] = spdiags(A) cho d = [-3 0 2]' vaì B = [ 41 11 0 52 22 0 63 33 13 74 44 24 ] Ngæåüc laûi, våïi B vaì d nhæ trãn thç biãøu thæïc spdiags(B,d,7,4) cho laûi A vãö giaï trë gäúc Chuyãøn ma tráûn âáöy âuí thaình ma tráûn thæa SPARSE Xáy dæûng ma tráûn thæa tæì caïc säú khaïc 0 vaì caïc chè säú S = SPARSE(...) laì haìm gàõn liãön phaït sinh caïc ma tráûn thuäüc låïp læu træî thæa cuía MATLAB. Haìm naìy coï thãø goüi våïi 1, 2, 3, 5 hoàûc 6 âäúi säú S = SPARSE(X) chuyãøn ma tráûn thæa hoàûc âáöy âuí sang daûng thæa bàòng caïch boí âi caïc pháön tæí 0 S = SPARSE(i,j,s,m,n,nzmax) duìng caïc doìng cuía [i,j,s] âãø phaït sinh mäüt ma tráûn thæa cåî mxn våïi khäng gian phán bäú cho nzmax pháön tæí khaïc 0. Hai vectå chè säú nguyãn, i vaì j, vaì vectå thæûc hoàûc phæïc, s, táút caí cuìng âäü daìi, nnz, laì säú pháön tæí khaïc 0 trong ma tráûn thæa kãút quaí. Coï mäüt säú caïch goüi âån giaín 6 âäúi säú naìy S = SPARSE(i,j,s,m,n) duìng nzmax = length(s). S = SPARSE(i,j,s) duìng m = max(i) vaì n = max(j). S = SPARSE(m,n) caïch tàõt cuía SPARSE([],[],[],m,n,0). Lãûnh naìy phaït sinh ma tráûn thæa cå baín cåî mxn gäöm táút caí caïc säú 0. Âäúi säú s vaì mäüt trong hai âäúi säú i vaì j coï thãø laì âaûi læåüng vä hæåïng, trong træåìng håüp naìy chuïng âæåüc bung ra âãø caí 3 âäúi säú âáöu coï cuìng âäü daìi. Vê duû, trêch ra vaì sau âoï raïp laûi mäüt ma tráûn thæa: [i,j,s] = find(S); [m,n] = size(S); S = sparse(i,j,s,m,n); Båíi váûy, nhæ caïc lãûnh naìy, nãúu doìng vaì cäüt cuäúi cuìng coï caïc pháön tæí khaïc 0: [i,j,s] = find(S); S = sparse(i,j,s); Táút caí caïc thao taïc gàõn liãön cuía MATLAB vãö säú hoüc, logic vaì vãö chè säú âãöu coï thãø aïp duûng cho caïc ma tráûn thæa, hoàûc cho caïc ma tráûn væìa thæa væìa âáöy âuí. Caïc thao taïc trãn ma tráûn thæa traí vãö ma tráûn thæa, âáöy âuí traí vãö âáöy âuí. Trong háöu hãút caïc træåìng håüp thç caïc thao taïc trãn caïc ma tráûn væìa thæa væìa âáöy âuí traí vãö âáöy âuí. Ngoaûi træì træåìng håüp coï âæa vaìo, kãút Phan Thanh Tao - 2004
  3. Phụ lục-Lệnh và hàm 226 quaí cuía caïc thao taïc träün thæa våïi âáöy âuí coï cáúu truïc thæa, nghéa laì A .* S êt nháút thæa nhæ S . Mäüt säú thao taïc, nhæ S >= 0, phaït sinh caïc ma tráûn thæa låïn ("Big Sparse", hay "BS" ) -- ma tráûn thuäüc täø chæïc læu træî thæa nhæng êt pháön tæí 0 FULL Chuyãøn ma tráûn thæa sang låïp læu træî âáöy âuí A = FULL(X) laì haìm gàõn liãön chuyãøn mäüt ma tráûn thæa sang cå cáúu læu træî âáöy âuí vaì cho ra mäüt ma tráûn âáöy âuí khäng thay âäøi FIND Tçm caïc chè säú cuía caïc pháön tæí khaïc 0 I = FIND(X) traí vãö chè säú cuía caïc pháön tæí khaïc 0 cuía vectå X Vê duû, I = FIND(A>100) , traí vãö caïc chè säú cuía caïc pháön tæí låìn hån 100 cuía A. Xem RELOP [I,J] = FIND(X) traí vãö caïc chè säú doìng vaì cäüt cuía caïc pháön tæí khaïc 0 trong ma tráûn X. Lãûnh naìy thæåìng duìng våïi caïc ma tráûn thæa [I,J,V] = FIND(X) cuîng traí vãö mäüt vectå cäüt gäöm caïc pháön tæí khaïc 0 cuía X. Læu yï ràòng find(X) vaì find(X~=0) seî cho ra cuìng I vaì J, nhæng haìm sau cho V våïi táút caí caïc säú 1 SPCONVERT SPCONVERT Chuyãøn daûng thæa måí räüng S = SPCONVERT(D) chuyãøn mäüt maíng (nnz hoàûc nnz+1)x (3 hoàûc 4) våïi caïc doìng chæïa [i,j,s] hoàûc [i,j,real(s(i,j)),imag(s(i,j))] sang ma tráûn thæa tæång æïng. Mäüt doìng báút kyì trong D coï daûng [m n 0] hoàûc [m n 0 0] coï thãø duìng âãø chè âiûnh kêch thæåïc cuía S. Nãúu D âaî thæa räöi thç khäng chuyãøn, vç váûy SPCONVERT coï thãø duìng sau khi D âæåüc naûp tæì tãûp MAT hoàûc tãûp ASCII Phan Thanh Tao - 2004
  4. Phụ lục-Lệnh và hàm 227 Laìm viãûc våïi caïc pháön tæí khaïc 0 cuía ma tráûn thæa NNZ Säú pháön tæí khaïc 0 nz = NNZ(S) laì säú pháön tæí khaïc 0 trong S NONZEROS NONZEROS Caïc pháön tæí khaïc 0 NONZEROS(S) laì mäüt vectå cäüt âáöy âuí caïc pháön tæí khaïc 0 trong S. Haìm naìy cho s, nhæng khäng cho i vaì j nhæ [i,j,s] = find(S) NZMAX Täøng säú khäng gian læu træî caïc pháön tæí khaïc 0 Âäúi våïi ma tráûn thæa, NZMAX(S) laì säú vë trê læu træî phán bäú cho caïc pháön tæí khaïc 0 trong S. Våïi ma tráûn âáöy âuí, NZMAX(S) laì prod(size(S)). Trong caí hai træåìng håüp, nnz(S)
  5. Phụ lục-Lệnh và hàm 228 SPY(S) veî máùu thæa cuía ma tráûn S báút kyì SPY(S,color) duìng maìu âaïnh dáúu chè âënh thay cho maìu vaìng SPY(S,marksize) duìng kêch thæåïc âaïnh dáúu chè âënh thay cho kêch thæåïc phuû thuäüc vaìo kêch thæåïc hçnh aính vaì kêch thæåïc ma tráûn SPY(S,color,marksize) vaì SPY(S,marksize,color) laì cho pheïp GPLOT Veî âäö thë theo “ lyï thuyãút âäö thë ” GPLOT(A,xy) veî âäö thë chè âënh båíi A vaì xy. Mäüt âäö thë, G, gäöm mäütì táûp caïc nuït (âènh) âæåüc âaïnh säú tæì 1 âãún n, vaì mäüt táûp caïc cung, hoàûc caûnh, näúi caïc âènh laûi. Âãø veî âäö thë G, cáön 2 ma tráûn. Ma tráûn kãö, A, coï a(i,j) khaïc 0 nãúu vaì chè nãúu âènh i âæåüc näúi våïi âènh j. Maíng toüa âäü, xy, laì mäüt ma tráûn cåî nx2 våïi vë trê cho âènh i taûi doìng thæï i xy(i,:) = [x(i) y(i)] GPLOT(A,xy,lc) duìng kiãøu âæåìng vaì maìu thay cho ngáöm âënh laì 'r-'. Vê duû, lc = 'g:' . Xem PLOT [X,Y] = GPLOT(A,xy) traí vãö caïc vectå âaïnh dáúu NaN X vaì Y maì khäng veî. Caïc vectå naìy coï thãø duìng âãø phaït sinh âäö thë sau naìy nãúu muäún Caïc thuáût toaïn sàõp xãúp laûi COLMMD Báûc täúi thiãøu vãö cäüt p = COLMMD(S). Báûc täúi thiãøu vãö cäüt cuía S. Âäúi våïi mäüt ma tráûn khäng âäúi xæïng S, haìm naìy traí vãö mäüt cäüt hoaïn vë p âãø S(:,p) coï caïc nhán tæí LU thæa hån S SYMMMD Báûc âäúi xæïng täúi thiãøu p = SYMMMD(S), âäúi våïi mäüt ma tráûn xaïc âënh dæång âäúi xæïng S thç traí vãö mäüt hoaïn vë âãø S(p,p) coï nhán tæí Cholesky thæa hån S. Âäi khi SYMMMD cuîng laìm viãûc täút âäúi våïi caïc ma tráûn âäúi xæïng khäng xaïc âënh SYMRCM Âaío thæï tæû Cuthill-McKee p = SYMRCM(S) traí vãö mäüt hoaïn vë p âãø S(p,p) coï profile nhoí hån S. Haìm naìy sàõp træåïc täút cho viãûc taïch nhán tæí LU hoàûc Cholesky âäúi våïi caïc ma tráûn nháûn âæåüc tæì caïc baìi toaïn daìi vaì gáöy ("long, skinny"). Noï laìm viãûc cho caí hai loaûi S âäúi xæïng vaì khäng âäúi xæïng COLPERM COLPERM Bác caïc cäüt dæûa vaìo caïch âãúm caïc pháön tæí khaïc 0 Phan Thanh Tao - 2004
  6. Phụ lục-Lệnh và hàm 229 p = COLPERM(S) phaït sinh mäüt hoaïn vë âãø sàõp laûi caïc cäüt cuía ma tráûn S thæa (hoàûc âáöy âuí) theo thæï tæû khäng tàng cuía viãûc âãúm caïc pháön tæí khaïc 0. Thæåìng sàõp træåïc viãûc taïch nhán tæí LU: lu(S(:,p)). Khäng phaíi täút nháút trong thæûc haình thäng thæåìng, nhæng tênh trãn maïy nhanh vaì thæûc hiãûn cäng viãûc khaï âeûp RANDPERM RANDPERM Vectå hoaïn vë ngáùu nhiãn RANDPERM(n) laì mäüt hoaïn vë ngáùu nhiãn cuía caïc säú nguyãn tæì 1 âãún n. Vê duû, RANDPERM(6) coï thãø laì [2 4 5 6 1 3]. Læu yï ràòng RANDPERM goüi haìm RAND vaì do âoï thay âäøi giaï trë khåíi taûo ngáùu nhiãn cuía haìm RAND DMPERM Taïch Dulmage-Mendelsohn cuía ma tráûn A p = DMPERM(A) traí vãö mäüt phuì håüp täúi âa; nãúu A coï haûng cäüt âáöy âuí thç A(p,:) vuäng våïi âæåìng cheïo khaïc 0 [p,q,r,s] = DMPERM(A) traí vãö caïc hoaïn vë âãø âàût A(p,q) vaìo daûng khäúi tam giaïc trãn: Âäúi våïi A vuäng haûng âáöy âuí, A(p,q) coï âæåìng cheïo khaïc 0 vaì thaình pháön Hall maûnh thæï i laì khäúi thæï i (bi,bi) cuía A(p,q), våïi bi = r(i):r(i+1)-1. Våïi A chæî nháût täøng quaït, thaình pháön Hall maûnh thæï i laì khäúi (r(i):r(i+1)-1, s(i):s(i+1)-1) Chuáøn, säú âiãöu kiãûn, vaì haûng NORMEST NORMEST Æåïc læåüng chuáøn 2 (2-norm) NORMEST(S) laì mäüt æåïc læåüng chuáøn-2 cuía ma tráûn S NORMEST(S,tol) duìng sai säú tæång âäúi tol thay cho 1.e-6 [nrm,cnt] = NORMEST(S) cuîng cho säú láön duìng làûp luîy thæìa CONDEST CONDEST Æåïc læåüng säú âiãöu kiãûn chuáøn-1. Caïch sæía âäøi cuía Higham tæì phæång phaïp cuía Hager [C, V] = CONDEST(A) tênh giåïi haûn dæåïi C cho säú âiãöu kiãûn chuáøn-1 cuía A, vaì vectå V âãø NORM(A*V)=NORM(A)*NORM(V)/C. V laì vectå xáúp xè 0 nãúu C låïn SPRANK Haûng cáúu truïc thæa r = SPRANK(A) haûng vãö cáúu truïc cuía ma tráûn thæa A. Coìn goüi laì luäöng cæûc âaûi, phán cäng cæûc âaûi, vaì kêch thæåïc cuía mäüt phuì håüp cæûc âaûi trong âäö thë phán âäi cuía A. Luän luän coï sprank(A) >= Phan Thanh Tao - 2004
  7. Phụ lục-Lệnh và hàm 230 rank(A), vaì trong säú hoüc sprank(A) == rank(sprandn(A)) våïi säú hoüc xaïc suáút Caïc thao taïc trãn cáy TREELAYOUT TREELAYOUT Trçnh baìy mäüt cáy hoàûc ræìng [x,y,h,s] = treelayout(parent,post) våïi parent laì vectå caïc nuït cha, våïi 0 cho gäúc. post laì hoaïn vë háûu tæû trãn caïc nuït cuía cáy (nãúu boí qua post thç tênh noï åí âáy). x vaì y laì caïc vectå gäöm caïc toüa âäü trong hçnh vuäng âån vë maì åí âoï trçnh baìy caïc nuït cuía cáy âãø taûo ra mäüt hçnh aính âeûp màõt. Caïc âäúi säú tuìy choün, h laì âäü cao cuía cáy vaì s laì säú nuït con cuía nuït gäúc TREEPLOT TREEPLOT Veî hçnh aính cuía mäüt cáy TREEPLOT(p,c,d) p laì vectå caïc âiãøm cha, våïi p(i) == 0 cho gäúc. c laì maìu vaì kyï tæû cho caïc nuït, hoàûc c='' âãø khäng veî nuït. d laì maìu vaì kyï tæû cho caïc caûnh, hoàûc d='' âãø khäng veî caûnh. c hoàûc d coï thãø boí qua, vaì caïc giaï trë ngáöm âënh håüp lyï âæåüc sæí duûng ETREE Cáy khæí cuía mäüt ma tráûn p = etree(A) traí vãö mäüt cáy khæí âäúi våïi mäüt ma tráûn vuäng âäúi xæïng coï tam giaïc trãn laì tam giaïc trãn cuía A. p(j) laì cha cuía cäüt j trãn cáy, hoàûc 0 nãúu j laì gäúc p = etree(A,'col') traí vãö cáy khæí cuía A'*A p = etree(A,'sym') giäúng p = etree(A) [p,q] = etree(...) cuîng traí vãö hoaïn vë háûu tæû q trãn cáy ETREEPLOT ETREEPLOT Veî mäüt cáy khæí etreeplot(A): Veî cáy khæí cuía A (hoàûc A+A', nãúu A khäng âäúi xæïng) etreeplot(A,c,d): Xem treeplot cho caïc tham säú tuìy choün c vaì d Phan Thanh Tao - 2004
  8. Phụ lục-Lệnh và hàm 231 Caïc thao taïc linh tinh SYMBFACT SYMBFACT Phán têch nhán tæí Symbol count = SYMBFACT(A) traí vãö vectå gäöm säú âãúm doìng cuía nhán tæí tam giaïc trãn nhán tæí Cholesky cuía mäüt ma tráûn âäúi xæïng coï tam giaïc trãn laì tam giaïc trãn cuía A, giaí sæí boí qua trong tiãún trçnh phán têch thæìa säú. Phuûc vuû naìy nhanh hån chol(A) count = SYMBFACT(A,'col') phán têch A'*A (maì khäng taûo taûo noï mäüt caïch roî raìng) count = SYMBFACT(A,'sym') giäúng nhæ p = symbfact(A). Coï mäüt säú giaï trë traí vãö tuìy choün: [count,h,parent,post,R] = symbfact(...) cuîng traí vãö âäü cao cuía cáy khæí, chênh cáy khæí, mäüt hoaïn vë cuía cáy khæí, vaì ma tráûn 0-1 R coï cáúu truïc cuía chol(A) SPPARMS SPPARMS Âàût caïc tham säú cho caïc phuûc vuû ma tráûn thæa SPPARMS('key',value) âàût mäüt hoàûc nhiãöu tham säú "tunable" duìng cho caïc toaïn tæí phæång trçnh tuyãún tênh thæa, laì \ vaì /, vaì caïc sàõp xãúp báûc âäúi xæïng täúi thiãøu, COLMMD vaì SYMMMD SPPARMS, in ra mä taí caïc caìi âàût hiãûn thåìi. Nãúu khäng coï âäúi säú nháûp thç values = SPPARMS traí vãö mäüt vectå coï caïc thaình pháön cho trong caïc caìi âàût hiãûn thåìi [keys,values] = SPPARMS traí vãö vectå âoï, vaì cuîng traí vãö mäüt ma tráûn kyï tæû coï caïc doìng laì caïc tæì khoïa cho caïc tham säú SPPARMS(values), khäng coï âäúi säú xuáút, âàût táút caí caïc tham säú vaìo caïc giaï trë chè âënh båíi vectå âäúi säú value = SPPARMS('key') traí vãö caìi âàût hiãûn thåìi cuía mäüt tham säú SPPARMS('default') âàût táút caí caïc tham säú vãö caïc caìi âàût màûc âënh cuía noï SPPARMS('tight') âàût caïc tham säú báûc täúi thiãøu vãö caïc caìi âàût chàût cheî cuía chuïng, chuïng coï thãø âáùn âãún caïc báûc êt hån báûc thay thãú, nhæng laìm cho caïc haìm thæûc hiãûn nhiãöu láön hån. Caïc tham säú våïi caïc giaï trë ngáöm âënh vaì caïc giaï trë chàût cheî laì: tæì khoïa ngáöm âënh chàût values(1) 'spumoni' 0 values(2) 'thr_rel' 1.1 1.0 values(3) 'thr_abs' 1.0 0.0 values(4) 'exact_d' 0 1 Phan Thanh Tao - 2004
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2