Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
90,84 KB
Nội dung
Chơng 3 Matrận v mảngtrongMatlab 3.1 Nhập matrậntrongMatlab 3.1.1 Các Cách nhập matrận trongMatlabMatlab cung cấp một vi 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 bi 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 hoặc load) Nhập matrận từ những hm có sẵn trong 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 chúng ta đã biết nhập một matrận nh sau A= Đây l một matrận có số hng m = 3 v số cột n= 3 1 2 3 4 5 6 7 8 9 Để nhập matrận trên trongMatlab ta nhập trực tiếp nh sau Từ dòng nhắc lệnh trong cửa sổ command Window >> ta nhập >> A=[ 1,2,3 ; 4 5 ,6;7 8 9]; hoặc >>A=[ 1 2 3 4 5 6 7 8 9]; Các hng đợc cách nhau bằng một dấu chấm phẩy (;) nh trên,các phần tử trong một hng đợc cách nhau bằng dấu cách(thanh space) hoặc dấu phẩy(,) . Kết thúc dòng lệnh có hoặc không có dấu ; Nếu không có dấu chấm phẩy ở cuối dòng thì Matlab sẽ in ra kết quả matrận vừa nhập Nh ví dụ trên: >> A=[ 1,2,3 ; 4 5 ,6;7 8 9] nhấn Enter sẽ cho kết quả l A= 1 2 3 4 5 6 Trongtrờng hợp số phần tử trên một hng quá di ta có thể xuống dòng bằng dấu ba chấm . Ví dụ >> b=[1,2,3,4, . 5 6 7 8 9] % đây matrận 9 hng v một cột Trang 1 Lu ý rằng trong một số trờng hợp matrận hoặc mảng dữ liệu di thì việc không thêm dấu chấm phẩy sau câu lệnh nhập, Matlab sẽ in ra số liệu di trong 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ổ ny bằng cách vo File- New- M-file. Một cửa sổ soạn thảo sẽ đợc hiện ra cho phép bạn soạn thảo dới dạng text, do l cửa sổ soạn thảo dạng text cho nên bạn có thể soạn thảo từ file word sau đó copy vo cửa sổ M-file.Để nhập matrận ta soạn thảo tơng tự nh trong cửa sổ command window sau đó lu vo file nh sau: Ví dụ: A=[1 2 3 ; 4 5 6 ; 7, 8,9];% không có dấu chấm phẩy sẽ in ra kết quả Cũng tơng tự nh trên nếu số phần tử trên một hng quá nhiều thì ta có thể xuống dòng A=[1 2 3 4 . 5 6 7 8 9 10]; Sau khi kết thúc soạn thảo ta lu vo tên_file . Để thực thi các lệnh nhập trong M-file ta dùng lệnh sau trong command window nh sau: >> ten_file ; c. Nhập matrận từ các hm có sẵn Matlab có một th viện các hm cho phép tạo ma trận.Sau đây l một số hm ones(m,n) tạo matrận m hng v n cột ,với các phần tử đều bằng 1, ones(m) tạo matrận vuông cấp m, với các phần tử đều l 1. zeros(m,n) tạo matrận kích thớc m x n, với các phần tử đều bằng 0, zeros(m) tạo matrận vuông cấp m. eyes(m,n) tạo matrận kích thớc m xn với các phần tử đều bằng 1, eyes(m) tạo matrận vuông cấp m . ví dụ: ones(2,3) ans= 1 1 1 1 1 1 eyes(2,3) ans= 1 0 0 0 1 0 zeros(2,3) ans= 0 0 0 Trang 2 0 0 0 3.2 Matrận số phức Số phức trongmatlab đợ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 để chỉ 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 3+ 4*i 5+6*i 4+5*i ] 3.3 Tạo vec tơ Khi ta cần khảo sát đặc tính của đồ thị no đó trong một khoảng xác định, khoảng xác định ny đợc biểu diễn dới dạng vectơ Ví dụ khảo sát đặc tính đồ thị trong khoảng x=1 đên 100 >> x= 1:100; % x lấy giá trị từ 1 đên100, bớc tăng của x l 1 >>t=0: 0.1 : 10;% bớc nhảy l của t l 0.1 Công thức chung tạo vec tơ l X=Xmin : bớc_tăng: Xmax 3.4 Truy nhập các phần tử của matrận Đê truy nhập các phần tử của matrận ta lm nh sau: Giả sử matrận A= Thì >> A(i,j) ; sẽ truy nhập đến phần tử hng thứ i v cột thứ j 1 2 3 4 5 6 7 8 9 Ví dụ để truy nhập đến phần tử thứ nhất ta : >> A(1,1) ans= 1 Đặc biệt để gọi ton bộ số hng hoặc ton bộ số cột dùng toán tử (:) >> A(:,1) % gọi ton bộ số hng tơng ứng với cột 1 ans= Trang 3 1 4 7 >>A(1,:) % gọi ton bộ số cột tơng ứng hng 1 ans= 2 3 >> A(1:2,1) % gọi hng 1 đến hng 2 tơng ứng với cột thứ nhất ans= 1 4 >>A(1:2,:) % gọi hng 1 đến hng 2 tơng ứng với tất cả các cột ans= 1 2 3 4 5 6 3.5 Phép tính matrận v mảng a. Phép tính matrận Phép tính cộng , phép tính trừ :Điều kiện hai matrận A v B phải có cùng kích thớc hoặc một trong hai l số vô hớng ví dụ: >>a=[1 2 3 ;4 5 6; 7 8 9]; >>b=[2 3 4; 5 6 7; 8 9 10]; >>a+b; ans= 5 7 9 11 13 15 17 19 Nhân hai matrận A*B lu ý rằng số cột của matrận A phải bằng số cột của matrận B, ngoại trừ một trong hai l số vô hớng Chia trái matrậ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 Trang 4 Cho hai mảng sau: >>x=[1 2 3]; >>y=[2 3 4]; Phép tính cộng , trừ giống nh phép tính đối với matrận >>x+y ans= 5 7 Phép tính nhân(.*) >>x.*y ans= 2 6 12 Phép tính chia(./ hoặc .\) >> x./y ans= 0.5 0.66 0.75 >>x .\y ans= 2 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 . . am1*x1 + am2*x2+ . . . +amn*xn=bm Bi toán đặt ra l tìm véc tor x=[x1;x2;x3 ;xn] sao cho thoả mãn bi toán trên 3.6.2 Hệ Phơng trình tuyến tính không đồng nhất Phơng trình nh sau gọi l 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 no 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 matrận A= [a11 a12 .a1n; a21 a22 .a2n, am1 am2 .amn] Trang 5 X=[x1 x2 xn]; B=[b1 b2 . bn]; Trong đó A đợc gọi l matrận hệ số, X l vector kết quả 3.6.2.1 Giải hệ phơng trình bằng hm nghịch đảo inv Nếu m=n thì A l matrận vuông, v nếu det(A) l khác 0 thì tồn tại A -1 v vector kết quả X đợc cho bởi : A -1 *A*X=X=A -1 *B Ví dụ Giải hệ sau: 2*x1 - x2 = 2 x1 + x2 = 5 Matlab command >> A=[ 2 -1 ; 1 1 ]; >> B=[ 2 ; 5]; >> X= inv(A)*B >> X= 2.3333 2.667 >> X= rats(X) X= 7/3 8/3 Tuy nhiên chúng ta không thể áp dụng phơng pháp trên cho 2*x1 - x2 = 2 2*x1 - x2 = 0 Matrận hệ số A=[ 2 -1 ; 2 -1]; Vì det(A)=0 => không áp dụng đợc hm nghịch đảo cho matrận A 3.6.3 Hệ phơng trình tuyến tính đồng nhất Biểu diễn dới dạng matrận nh sau A*x=0 Nếu det(A)#0 hệ có nghiệm duy nhất l X=0 Ví dụ xét hệ phơng trình tuyến tính sau 2*x1 - x2=0 x1+ x2=0 ở đây det(A)= 3 cho nghiệm x1=0 , x2=0 Đối với hệ phơng trình thuần nhất có det(A)=0 thì hệ ny có vô số nghiệm Ví dụ Xét hệ phơng trình tuyến tính sau -6* x1 + 3*x2 = 0 2* x1 - x2 = 0 Trang 6 Matrận hệ số A= [ -6 3 ; 2 -1] , det(A)= 0 biểu diễn trên đồ thị thấy rằng hai đờng ny trùng nhau do vậy hệ trên 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= 0 -2*x1 + 3*x2 - 4*x3= 0 5*x1 + x2 + 2*x3= 0 -9*x1 + 5*x2 - 10*x3= 0 Matrận hệ số l matrận 4 x 3 ,định thức lớn nhất có thể đợc xây dựng từ matrận A l định thức matrận 3 x 3, nhng định thức của matrận kích thớc 3 by 3 =0 ( A1=[ 3 4 - 2; -2 3 - 4 ; 5 1 2]=> det(A1)=0 ) Do đó ta xác định tiếp matrận 2 x 2 Ví dụ nh sau A2=[ 3 4; -2 3] v det(A) # 0 ta nói rằng hạng của matrận A(ma trận hệ số) l bằng 2 đồng nghĩa với việc ta chỉ giải hai phơng trình bất kỳ trong số tất cả các phơng trình trên, v số biến chúng ta gán giá trị tuỳ ý l = n- r ( trong đó n l số biến còn r l hạng của matrận A) Giải hai phơng trình : 3*x1 + 4*x2 - 2*x3= 0 -2*x1 + 3*x2 - 4*x3= 0 Kết quả : x1= (-10/17)*x3 v 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 = 2 x1 + x2 = 5 >> A=[ 2 -1 ; 1 1]; >> B=[2 ; 5]; >>X=A\B Phơng pháp giải ny gọi l phơng pháp Gaussian elimination Toán tử (\) thông thờng cung cấp một kết quả trongMatlab , trong một số trờng hợp nó l phơng pháp giải riêng 3.7 Điều kiện có nghiệm Theo Kronecker-Capelli thì Một hệ phơng trình có một lời giải khi v chỉ khi matrận hệ số A v matrận [A B] có cùng hạng. Giả sử hạng của hai matrận đều l r thì xảy ra các trờng hợp sau đây r=n Hệ phơng trình có nghiệm duy nhất, Trang 7 r< n Hệ phơng trình có vô số nghiệm, chúng ta có thể giải cho r biến nh l hm của n-r biến khác ,các biến khác ny có thể lấy giá trị tuỳ ý Ví dụ trên rank(a)= rank([a b]) = n cho nên hệ nghiệm duy nhất >> rank(A), rank([A B]) ans= 2 ans= 2 Chúng ta xem xét ví dụ sau: 2* x1 + 3* x2 + 4*x3 = 4 x1 + x2 + x3 = 5 >> A=[ 2 3 4 ; 1 1 1]; >>B=[ 4 ; 5]; >>rank(A), rank([A B]) ans= 2 ans= 2 >> X= A\B X= 8 0 3 Hạng của hai matrận A v [A B] bằng nhau v bằng 2 cho nên hệ có một lời giải , nhng do rank(A) < n cho nên ta chỉ giải cho hai biến nh l hm của biến còn lại. Kết quả Matlab cho trên chỉ l một trờng hợp riêng (n-r biến đợc gán =0) Xét hệ sau x1 + 2 *x2 + 3 *x3 = 12 3* x1 + 2 *x2 + x3 = 15 3*x1 + 4 *x2 + 7 *x3 = 13 10*x1 + 9 *x2 + 8 *x3 = 17 Tính toán bằng Matlab nh sau >> A=[1 2 3 ; 3 2 1 ; 3 4 7; 10 9 8]; >>B= [12 ; 15; 13 ; 17 ]; >>rank(A), rank([A B]) ans= Trang 8 3 ans= 4 >> X= A\B ans= 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 quả không bằng B Hệ phơng trình trên vô nghiệm ,tuy nhiên Matlab vẫn cho nghiệm ,nghiệm ny không phải nghiệm đúng m l 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 yếu Chúng ta nói rằng một vấn đề đợc coi l điều kiện yếu nếu một sự thay đổi nhỏ trong dữ liệu sẽ dẫn đến thay đổi lớn trong kết quả. Điều ny l rất nguy hiểm đối với các kỹ s lm việc với các thiết bị , sai số ở các thiết bị , sai số do lm tròn (điều ny chắc chắn xảy ra) Nếu dữ liệu ny l đầu vo đối với vấn đề trên thì kết quả thu đợc sẽ khủng khiếp Vấn đề chúng ta bn tới l Điều kiện yếu của hệ phơng trình tuyến tính Matrận yếu điển hình l matrận Hibert có dạng nh sau: A=[ 1 1/2 1/3 .1/n;1/2 1/3 .1/(n+1) 1/3 1/4 1/5 1/(n+2) 1/n 1/(2n)] Ví dụ sau đây: Giải hệ phơng trình tuyến tính có matrận hệ số sau A=[1 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 trong long format >> format long; X= A\B X= Trang 9 1.000000000002 0.999999999998 Nếu ta thay đổi một phần tử của 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ũ l 1 tức l tăng 0.5% tơng ứng với giá trị x(1) giảm 101%, v 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 l matrận Hillbert sử dụng hm tính nghịch đảo invhilb(n) trong đó n l kích thớc của matrậ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 l matrận hilbert thì sử dụng hm symbolic Ví dụ A= [ 1 1.01; 0.5 1.02]; A=sym( [1 1.01 ; 0.5 1.02] ); B=[ 1.1; 1.2]; X= A\b 3 .9 Lệnh cond Tính điều kiện của matrận Cấu trúc: >> cond(A) % A l matrận kết quả trả lại dạng nh sau: a* 10 k ; 0 < a < 9 k l số digits không tin cậy trong kết quả giải hệ phơng trình tuyến tính v trong việc nghịch đảo ma trận. Nếu k xấp xỉ 1 thì đól matrậ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= 3 tức l có 3 số không đáng tin cậy Tổng kết Định nghĩa :Hạng matrận Ar l một matrận r hng r cột đợc xây dựng từ A , không nhất thiết theo thứ tự trongmatrận A v det(Ar)#0 .Nếu bất kỳ matrận Ar+1 no đợc xây dựng từ r+1 hng v r+1 cột của A, det(Ar+1)=0 thì chúng ta nói rằng Matrận A có hạng bằng r Một hệ thống m phơng trình tuyến tính trong n biến (cha biết) a11*x1 + a12*x2+ . . . +a1n*xn=b1 Trang 10 [...]... 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 quả Đ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 KroneckerCapelli thì hệ phơng trình tuyến tính có nghiệm khi v chỉ khi hạng của matrận A bằng hạng của matrận bổ xung Nếu r= n thì nghiệm trên l duy nhất Nếu r . Chơng 3 Ma trận v mảng trong Matlab 3.1 Nhập ma trận trong Matlab 3.1.1 Các Cách nhập matrận trong Matlab Matlab cung cấp một vi phơng. command Window. Nhập Matrận từ một file( sử dụng M-file hoặc load) Nhập matrận từ những hm có sẵn trong Matlab. a. Nhập Matrận trực tiếp từ cửa sổ command