Matlab cung cÊp mét vµi ph¬ng tiÖn cho ngêi sö dông ®Ó t¹o ra mét matrËn, mçi ph¬ng tiÖn cã nh÷ng u ®iÓm cña nã vµ ®îc sö dông tuú theo tõng yªu cÇu bµi to¸n.Nãi chung Matlab cung cÊp ba ph¬ng tiÖn. • NhËp MatrËn trùc tiÕp tõ cöa sæ command Window. • NhËp MatrËn tõ mét file( sö dông Mfile hoÆc load) • NhËp matrËn tõ nh÷ng hµm cã s½n trong Matlab.
Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Ch¬ng Ma trận mảng Matlab 3.1 Nhập ma trận Matlab 3.1.1 C¸c C¸ch nhËp matrËn Matlab Matlab cung cấp vài phơng tiện cho ngời sử dụng để tạo matrận, phơng tiện có u điểm đợc sử dụng tuỳ theo yêu cầu toán.Nói chung Matlab cung cấp ba phơng tiƯn • NhËp MatrËn trùc tiÕp tõ cưa sỉ command Window • NhËp MatrËn tõ mét file( sư dơng M-file load) ã Nhập matrận từ hàm có sẵn Matlab a NhËp MatrËn trùc tiÕp tõ cưa sỉ command Window Trong môn học toán cao cấp ®· biÕt nhËp mét matrËn nh sau mét ma trËn cã sè hµng m = số cột n= Đây Để nhập matrận Matlab ta nhập trực tiếp nh sau A= Từ dòng nhắc lệnh cưa sỉ command Window >> ta nhËp >> A=[ 1,2,3 ; ,6;7 9]; hc >>A=[ 456 9]; Các hàng đợc cách dấu chấm phẩy (;) nh trên,các phần tử hàng đợc cách dấu cách(thanh space) dấu phẩy(,) Kết thúc dòng lệnh có kh«ng cã dÊu ; NÕu kh«ng cã dÊu chÊm phÈy cuối dòng Matlab in kết matrËn võa nhËp Nh vÝ dơ trªn: >> A=[ 1,2,3 ; ,6;7 9] nhÊn Enter sÏ cho kết A= 123 456 Trong trờng hợp số phần tử hàng dài ta xuèng dßng b»ng dÊu ba chÊm Trang Tungvn40@yahoo.com VÝ dô CM Soft 70 NCT F2 Q10 >> b=[1,2,3,4, 9] % matrận hµng vµ mét cét Lu ý r»ng mét sè trờng hợp matrận mảng liệu dài việc không thêm dấu chấm phẩy sau câu lệnh nhập, Matlab sÏ in sè liƯu dµi cưa sỉ command Window, gây khó nhìn cho ngời dùng b Nhập Matrận tõ M-file Ta cã thĨ nhËp mét matrËn b»ng cưa sổ soạn thảo M-file, mở cửa sổ cách vào File- New- M-file Một cửa sổ soạn thảo đợc cho phép bạn soạn thảo dới dạng text, cửa sổ soạn thảo dạng text bạn soạn thảo từ file word sau copy vào cửa sổ M-file.Để nhập matrận ta soạn thảo tơng tự nh cửa sổ command window sau ®ã lu vµo file nh sau: VÝ dơ: A=[1 ; ; 7, 8,9];% kh«ng cã dấu chấm phẩy in kết Cũng tơng tự nh số phần tử hàng nhiều ta xuống dòng A=[1 10]; Sau kết thúc soạn thảo ta lu vào tên_file §Ĩ thùc thi c¸c lƯnh nhËp M-file ta dïng lÖnh sau command window nh sau: >> ten_file ; c Nhập matrận từ hàm có sẵn Matlab có th viện hàm cho phép tạo ma trận.Sau số hàm ã ones(m,n) tạo ma trận m hàng n cột ,với phần tử 1, ones(m) tạo ma trận vuông cấp m, với phần tử ã zeros(m,n) tạo ma trận kích thớc m x n, với phần tử 0, zeros(m) tạo ma trận vuông cấp m • eyes(m,n) t¹o ma trËn kÝch thíc m xn víi phần tử 1, eyes(m) tạo ma trận vu«ng cÊp m vÝ dơ: ones(2,3) ans= 1 1 1 Trang Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 eyes(2,3) ans= 0 zeros(2,3) ans= 0 0 0 3.2 Ma trận số phức Số phức matlab đợc viết nh sau: VÝ dơ sè phøc 3+4*i dïng i ®Ĩ chØ sè ¶o >> a=3+ 4*i a= 3+ 4*i NÕu muốn ii để số ảo Ta định nghĩa ii= sqrt(-1) Sau bạn viết: >> a=3+ 4*ii a= 3+ 4*i >>A=[ 1+2*i , 3+4*i ; 5+6*i, 4+5*i ] A=[ 1+2*i 5+6*i 3.3 3+ 4*i 4+5*i ] Tạo vec tơ Khi ta cần khảo sát đặc tính đồ thị khoảng xác định, khoảng xác định đợc biểu diễn dới dạng vectơ Ví dụ khảo sát đặc tính đồ thị khoảng x=1 đên 100 >> x= 1:100; % x lấy giá trị từ đên100, bớc tăng x >>t=0: 0.1 : 10;% bớc nhảy t 0.1 Công thức chung tạo vec tơ X=Xmin : bớc_tăng: Xmax 3.4 Truy nhập phần tử ma trận Đê truy nhập phần tử ma trận ta làm nh sau: Gi¶ sư ma trËn A=3 Trang Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Th× >> A(i,j) ; sÏ truy nhËp đến phần tử hàng thứ i cột thứ j Ví dụ để truy nhập đến phần tử thứ ta : >> A(1,1) ans= Đặc biệt để gọi toàn số hàng toàn số cột dùng toán tử (:) >> A(:,1) % gọi toàn số hàng tơng ứng với cột ans= >>A(1,:) % gọi toàn số cột tơng ứng hàng ans= >> A(1:2,1) % gäi hµng đến hàng tơng ứng với cột thứ ans= >>A(1:2,:) % gọi hàng đến hàng tơng ứng với tất cột ans= 123 456 3.5 Phép tính ma trận mảng a Phép tính ma trËn • PhÐp tÝnh céng , phÐp tÝnh trõ :Điều kiện hai ma trận A B phải có kích thớc hai số vô híng vÝ dơ: >>a=[1 ;4 6; 9]; >>b=[2 4; 7; 10]; >>a+b; ans= 11 13 Trang Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 15 17 19 • Nh©n hai ma trËn A*B lu ý r»ng sè cét cđa ma trËn A ph¶i b»ng sè cét cđa ma trận B, ngoại trừ hai số vô hớng ã Chia trái ma trận (\) X=A\B tơng đơng với việc giải hệ phơng trình tuyến tính A*X=B, gần tơng đơng với X=inv(A)*B ã Chia phải ma trận(/) X=B/A tơng đơng với việc giải phơng trình tuyến tính X*A=B gần tơng đơng với X= B*inv(A) b Phép tính dÉy Cho hai m¶ng sau: >>x=[1 3]; >>y=[2 4]; • PhÐp tÝnh céng , trõ gièng nh phÐp tính ma trận >>x+y ans= ã Phép tính nhân(.*) >>x.*y ans= 12 ã Phép tÝnh chia(./ hc \) >> x./y ans= 0.5 0.66 0.75 >>x \y ans= 1.5 0.75 3.6 Giải hệ phơng trình tuyến tính 3.6.1 Hệ phơng trình tuyến tính : Xét hệ phơng trình sau: a11*x1 + a12*x2+ +a1n*xn=b1 a21*x2 + a22*x2+ +a2n*xn=b2 Trang Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 am1*x1 + am2*x2+ +amn*xn=bm Bài toán đặt tìm véc tor x=[x1;x2;x3 ;xn] cho thoả mÃn toán 3.6.2 Hệ Phơng trình tuyến tính không đồng Phơng trình nh sau gọi phơng trình tuyến tính KĐN a1*x1 + a2*x2 + + an*xn = b b ®øng ®éc lËp (nã không nhân với biến cả) Xét hệ thống sau: a11*x1 + a12*x2+ +a1n*xn=b1 a21*x2 + a22*x2+ +a2n*xn=b2 am1*x1 + am2*x2+ +amn*xn=bm ViÕt theo ma trËn A= [a11 a12 a1n; a21 a22 a2n, am1 am2 amn] X=[x1 x2 xn]; B=[b1 b2 bn]; Trong A đợc gọi ma trận hệ số, X vector kết 3.6.2.1 Giải hệ phơng trình hàm nghịch đảo inv Nếu m=n A ma trận vuông, det(A) khác tồn A-1 vector kết X đợc cho : A-1*A*X=X=A-1*B Ví dụ Giải hÖ sau: 2*x1 - x2 = x1 + x2 = Matlab command >> A=[ -1 ; 1 ]; >> B=[ ; 5]; >> X= inv(A)*B >> X= 2.3333 2.667 >> X= rats(X) X= 7/3 8/3 Trang Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Tuy nhiên áp dụng phơng pháp cho 2*x1 - x2 = 2*x1 - x2 = Ma trËn hÖ sè A=[ -1 ; -1]; Vì det(A)=0 => không áp dụng đợc hàm nghịch đảo cho ma trận A 3.6.3 Hệ phơng trình tuyến tính đồng Biểu diễn dới dạng ma trận nh sau A*x=0 • NÕu det(A)#0 hƯ cã nghiƯm nhÊt X=0 Ví dụ xét hệ phơng trình tuyến tính sau 2*x1 - x2=0 x1+ x2=0 det(A)= cho nghiệm x1=0 , x2=0 ã Đối với hệ phơng trình có det(A)=0 hệ có vô số nghiệm Ví dụ Xét hệ phơng trình tuyến tính sau -6* x1 + 3*x2 = 2* x1 - x2 = Ma trËn hÖ sè A= [ -6 ; -1] , det(A)= biĨu diƠn trªn đồ thị thấy hai đờng trùng hệ có vô số nghiệm ã Trờng hợp số biến n< số phơng trình m Ví dụ nh sau: 3*x1 + 4*x2 - 2*x3= -2*x1 + 3*x2 - 4*x3= 5*x1 + -9*x1 x2 + 2*x3= + 5*x2 - 10*x3= Ma trËn hƯ sè lµ ma trận x ,định thức lớn đ ợc xây dựng từ ma trận A ®Þnh thøc ma trËn x 3, nhng ®Þnh thøc cđa ma trËn kÝch thíc by =0 ( A1=[ - 2; -2 - ; 2]=> det(A1)=0 ) Do ta xác định tiÕp ma trËn x VÝ dô nh sau Trang Tungvn40@yahoo.com A2=[ 4; -2 3] vµ CM Soft 70 NCT F2 Q10 det(A) # ta nãi hạng ma trận A(ma trận hệ số) đồng nghĩa với việc ta giải hai phơng trình số tất phơng trình trên, số biến gán giá trị tuỳ ý = n- r ( n số biến r hạng ma trận A) Giải hai phơng trình : 3*x1 + 4*x2 - 2*x3= -2*x1 + 3*x2 - 4*x3= KÕt qu¶ : x1= (-10/17)*x3 x2=(16/17)*x3 , với x3 lấy giá trị tuỳ ý 3.6.4 Giải hệ phơng trình tuyến tính b»ng Matlab(Dïng to¸n tư \) 2*x1 - x2 = x1 + x2 = >> A=[ -1 ; 1]; >> B=[2 ; 5]; >>X=A\B Phơng pháp giải gọi phơng pháp Gaussian elimination Toán tử (\) thông thờng cung cấp kết Matlab , số trờng hợp phơng pháp giải riêng 3.7 Điều kiện có nghiệm Theo Kronecker-Capelli Một hệ phơng trình có lời giải ma trËn hƯ sè A vµ ma trËn [A B] có hạng Giả sử hạng hai ma trận r xảy trờng hợp sau ã r=n Hệ phơng trình có nghiệm nhất, ã r< n Hệ phơng trình có vô số nghiƯm, chóng ta cã thĨ gi¶i cho r biÕn nh hàm n-r biến khác ,các biến khác lấy giá trị tuỳ ý Ví dụ rank(a)= rank([a b]) = n cho nªn hƯ nghiƯm nhÊt >> rank(A), rank([A B]) ans= ans= Trang Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Chóng ta xem xÐt vÝ dô sau: 2* x1 + 3* x2 + 4*x3 = x1 + x2 + x3 = >> A=[ ; 1 1]; >>B=[ ; 5]; >>rank(A), rank([A B]) ans= ans= >> X= A\B X= H¹ng cđa hai ma trËn A vµ [A B] b»ng vµ hệ có lời giải , nhng rank(A) < n ta giải cho hai biến nh hàm biến lại Kết Matlab cho trờng hợp riêng (n-r biến đợc gán =0) Xét hệ sau x1 + *x2 + *x3 = 12 3* x1 + *x2 + x3 = 15 3*x1 + *x2 + *x3 = 13 10*x1 + *x2 + *x3 = 17 TÝnh to¸n b»ng Matlab nh sau >> A=[1 ; ; 7; 10 8]; >>B= [12 ; 15; 13 ; 17 ]; >>rank(A), rank([A B]) ans= ans= >> X= A\B ans= Trang Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 1.0887 -0.2527 1.5349 Khi thư l¹i nh sau >> A* ans ans= 5.1882 4.2957 13.0000 20.8925 Kết không B Hệ phơng trình vô nghiệm ,tuy nhiên Matlab cho nghiệm ,nghiệm nghiệm mà nghiệm xấp xỉ giải theo tiêu chuẩn bình phơng tối thiểu( ta không đề cập tíi) 3.8 HƯ ®iỊu kiƯn u Chóng ta nãi r»ng vấn đề đợc coi điều kiện yếu thay đổi nhỏ liệu dẫn đến thay đổi lớn kết Điều nguy hiểm kỹ s làm việc với thiết bị , sai số thiết bị , sai số làm tròn (điều chắn xảy ra) Nếu liệu đầu vào vấn đề kết thu đợc khủng khiếp Vấn đề bàn tới Điều kiện yếu hệ phơng trình tuyến tính Ma trận yếu điển hình ma trận Hibert có dạng nh sau: A=[ 1/2 1/3 1/4 1/3 1/n;1/2 1/3 1/(n+1) 1/5 1/n 1/(n+2) 1/(2n)] Ví dụ sau đây: Giải hệ phơng trình tuyến tính có ma trận hệ số sau A=[1 1; 1.01] B=[2 ; 2.01]; >> X= A\B X= 1.0000 1.0000 Một sai số nhỏ đợc thể hiÖn long format Trang 10 Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 >> format long; X= A\B X= 1.000000000002 0.999999999998 Nếu ta thay đổi phần tử A vÝ dô A(1, 2)=1.005 >> A(1,2)=1.005 ; X= A\B X= -0.0000000099991 1.9999999999991 Thay đổi A(1,2) =1.005 so với giá trị cũ tức tăng 0.5% tơng ứng với giá trị x(1) giảm 101%, tăng x(2) tăng 100% Cách giải hệ phơng trình điều kiện yếu A*X=B Nếu A ma trận Hillbert sử dụng hàm tính nghịch đảo invhilb(n) n kích thớc ma trËn ®ã VÝ dơ >>A= [ 1/1 1/2 ; 1/2 1/3]; >> B=[1 ;1/2] >>X= invhilb(2)* b NÕu A kh«ng phải ma trận hilbert sử dụng hàm symbolic VÝ dô A= [ 1.01; 0.5 1.02]; A=sym( [1 1.01 ; 0.5 1.02] ); B=[ 1.1; 1.2]; X= A\b LƯnh cond TÝnh ®iỊu kiƯn cđa ma trËn CÊu tróc: >> cond(A) % A lµ ma trËn kÕt trả lại dạng nh sau: a* 10k ; < a < k số digits không tin cậy kết giải hệ phơng trình tuyến tính việc nghịch đảo ma trận Nếu k xấp xỉ đólà ma trận có well -condition Ví dô >>A=[1/2 1/3 1/4 ; 1/3 1/4 1/5; 1/4 1/5 1/6]; >> cond(A) ans= 1.3533e+003 Ta thÊy r»ng k= tức có số không đáng tin cậy Tổng kết Định nghĩa :Hạng ma trận Trang 11 Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Ar lµ mét ma trËn r hàng r cột đợc xây dựng từ A , kh«ng nhÊt thiÕt theo thø tù ma trËn A det(Ar)#0 Nếu ma trận Ar+1 đợc xây dựng từ r+1 hàng r+1 cột A, det(Ar+1)=0 nói Matrận A có hạng r Một hệ thống m phơng trình tuyến tính n biÕn (cha biÕt) a11*x1 + a12*x2+ +a1n*xn=b1 a21*x1 + a22*x2+ +a2n*xn=b2 am1*x1 + am2*x2+ +amn*xn=bm Cã thÓ viết dới dạng form ma trận AX=B Trong A lµ ma trËn hƯ sè vµ X lµ vector kÕt Điều kiện có nghiệm Matrận [A B] đợc gọi lµ ma trËn më réng cđa hƯ Theo Kronecker- Capelli hệ phơng trình tuyến tính có nghiệm chØ h¹ng cđa ma trËn A b»ng h¹ng cđa ma trận bổ xung ã Nếu r= n nghiệm ã Nếu r A=[ -1 ; 1 ]; >> B=[ ; 5]; >> X= inv(A)*B >> X= 2 .33 33 2.667 >> X= rats(X) X= 7 /3 8 /3 Trang Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10