1. Trang chủ
  2. » Công Nghệ Thông Tin

Ma trận và các phép toàn về ma trận

23 1,9K 4
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 189,28 KB

Nội dung

Nguyenvanbientbd47@gmail.com Giáo trình Matlab ứng dụng chơng - Ma trận phép toán ma trận 4.1- Khái niệm: Trong MATLAB liệu để đa vào xử lý dới dạng ma trận Ma trận mảng hai chiều mà phần tử số thực số phức Thông thờng hai thuật ngữ ma trận mảng đợc sử dụng thay cho Chính xác ma trận mảng hai chiều hình chữ nhật với phần từ số thực số phức Các phép toán đại số tuyến tính ma trận đợc sử dụng rộng r·i c¸c lÜnh vùc kü thuËt Trong Matlab, c¸c phần tử ma trận chữ số ký tự không số (symbol - biểu tợng) Ma trận A có n hàng, m cột đợc gọi ma trận cỡ (kích thớc) n ì m - đợc ký hiệu An ì m Phần tử aij (i = ữn, j = 1ữm) ma trận An ì m phần tư n»m ë hµng - thø i, cét j - Ma trận đơn (số đơn lẻ) ma trận hàng cột Nói cách khác, số vô hớng (số nguyên, số thực số phức) đợc coi ma trận đơn có kích thớc (1x1) - Một véc tơ hàng ma trận có kích thớc (1xm) đợc biểu diễn nh sau: a11 a12 a1m - Một véc tơ cột ma trận có kích thớc (nx1) đợc biểu diễn nh sau: a11 a21 an1 46 Nguyenvanbientbd47@gmail.com Giáo trình Matlab ứng dụng 4.1.1- Các qui định để định nghĩa ma trận: - Tên ma trận chuỗi ký tự dài tối đa 31 ký tự Tên phải bắt đầu chữ sau số, chữ cái, số ký tự đặc biệt trừ ký tự: +, -, *, /, & Tên đặt bên trái dấu bằng, bên phải dấu phần tử ma trận - Bao quanh phần tử ma trận dấu ngoặc vuông [aij] - Các phần tử hàng ma trận đợc cách ký tự trắng (space) dấu phÈy (,) - KÕt thóc mét hµng ma trËn dấu (;) Nói cách khác dấu (;) phân cách hàng ma trận 4.1.2- Các cách để nhËp mét ma trËn: - LiƯt kª trùc tiÕp: VD: >>A =[1 3; ; >> B =[1 3; 456; 9] - NhËp th«ng qua lÖnh input: >> input('Nhap gia tri cho ma tran C = ') ↵ Nhap gia tri cho ma tran C = [1 4;4 7;7 8] ↵ ans = 4 7 Chó ý: - Khi kÕt thóc mét c©u lƯnh dùng dấu (; ) không dùng dấu (;) Nếu dùng dấu (;) câu lệnh đợc thực nhng kết không 47 Nguyenvanbientbd47@gmail.com Giáo trình Matlab ứng dụng hình Nếu không dùng dấu ( ; ) câu lệnh đợc thực kết đợc hình - Trong trờng hợp sau câu lệnh đợc thực (sau nhấn enter) kết đợc lu không gian làm việc Workspace sử dụng cho câu lệnh Vd: >>a = [1 3;3 4;4 1]; >> b = [1 3;4 6;7 9] b= C¶ ma trËn A, B đợc lu vào nhớ đợc sử dụng cho câu lệnh >> c = a*b c= 30 36 42 39 48 57 31 41 51 - Các phần tử ma trận số phức: VD: >> a=[1+3i 2+2i;3+i 1+i] a= 1.0000 + 3.0000i 2.0000 + 2.0000i 3.0000 + 1.0000i 1.0000 + 1.0000i - Các phần tử ma trận ký tự (symbol) Nhng trớc tiên ta phải khai báo phần tử b»ng lÖnh syms VD >> syms sinx cosx a %sinx, cosx, a biến Symbolic 48 Nguyenvanbientbd47@gmail.com Giáo trình Matlab vµ øng dơng >> b = [ sinx cosx; a cosx] b= [ sinx, cosx] [ a, cosx] >> c=[a sinx; a a] c= [ a, sinx] [ a, a] 4.1.3- Hiển thị lại ma trận: - Để hiển thị lại ma trận ta gõ tên ma trận sau ®ã enter VD >> c c= 30 36 42 39 48 57 31 41 51 - Để hiển thị nội dung ma trận lời thông báo (trong dấu nháy đơn) ta dùng lệnh: disp VD >> disp (c) c= 30 36 42 39 48 57 31 41 51 >> disp('hiển thị lời thông báo này') hiển thị lời thông báo 49 Nguyenvanbientbd47@gmail.com Giáo trình Matlab ứng dụng 4.2- Xử lý ma trận: 4.2.1- Tạo véctơ: Công thức tổng quát: Biến = giới hạn đầu : bớc chạy : gới hạn cuối Giới hạn đầu, giới hạn cuối, bớc chạy số nguyên số thực Bớc chạy dơng âm VD Tạo vectơ t chạy từ đến 0.6 với bớc chạy tiến 0.1 >> t=0: 0.1:0.6 t= 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 VD: T¹o vectơ t chạy từ 0.6 đến với bớc chạy lïi lµ 0.1 >>t=0.6:-0.1:0 t= 0.6000 0.5000 0.4000 0.3000 0.2000 0.1000 Chú ý : Trong trờng hợp giới hạn trên, gới hạn dới số nguyên bớc chạy ta không cần đa bớc chạy vµo biĨu thøc VD >> C = 1:5 C= 4.2.2- Gọi phần tử ma trËn MATLAB cho phÐp ta xư lý ®Õn phần tử ma trận Để truy cập đến phần tử ma trận ta phải gọi đợc chúng thông qua số phần tử Tên cđa ma trËn (ChØ sè hµng, chØ sè cét) VD: >> A = [1:3; 4:6; 7:9] A= 50 Nguyenvanbientbd47@gmail.com Giáo trình Matlab vµ øng dơng >> B = A(1,1) B= >> A(3,3) = A(2,2) + B A= Chó ý: Trong tr−êng hợp ta muốn gọi tất hàng tất cột ta dùng toán tử hai chÊm ( : ) VD: >> A = [1:3; 4:6; 7:9] A= >> B = A(2,:) B= >>C = A(:,2) C= 51 Nguyenvanbientbd47@gmail.com Giáo trình Matlab vµ øng dơng 4.2.3- Gäi ma trËn tõ mét ma trËn lín VD: >> A = [1:3; 4:6; 7:9] A= >> B = A ( 2:3,1:2 ) B= >> c =[a(1,1) a(3,3); a(2,3) a(3,1)] c= 4.3- Các ma trận đặc biệt: 4.3.1- Ma trận zeros Tất phần tử ma trËn ®Ịu b»ng VD >> C = zeros (2,3) C= 0 0 0 >> d = zeros(3) d= 0 52 Nguyenvanbientbd47@gmail.com 0 0 0 Giáo trình Matlab ứng dụng 4.3.2- Ma trận ones Tất phần tử ma trËn ®Ịu b»ng VD >> C = ones (2,3) C= 1 1 1 >> d = ones(3) d= 1 1 1 1 4.3.3- Ma trËn ma ph−¬ng Magic Tỉng tất giá trị phần tử hàng = Tổng tất giá trị phần tử cột = Tổng tất giá trị phần tử ®−êng chÐo cña ma trËn Vd >> A = Magic (3) A= 4.3.4- Ma trận eye Tất phần tử đờng chéo có giá trị 1, phần tử khác có giá trị 53 Nguyenvanbientbd47@gmail.com Giáo trình Matlab vµ øng dơng VD: >> B = eye (3) B= 0 0 4.3.5- Ma trËn Pascal: >> pascal(4) ans = 1 1 3 10 10 20 4.4- C¸c phÐp to¸n vector hÐp to¸n «ng thøc atlab éng, trõ +B, A-B +B, A-B h©n mảng B=C *B hia trái mảng A \A hia phải mảng /B /B uỹ thừa mảng B ^B 4.4.1- Các phần tử số thực: >>a=[1 2;2 1] a= 1 2 1 >> b=[1 2; 1 1] b= 54 Nguyenvanbientbd47@gmail.com 2 1 Giáo trình Matlab ứng dụng >> c=a.*b c= 1 >> d=a./b d= 1.0000 0.5000 1.0000 2.0000 1.0000 1.0000 >> e=a.\b e= 1.0000 2.0000 1.0000 0.5000 1.0000 1.0000 >> f=a.^b f= 1 1 4.4.2- Các phần tử số phức >>a=[1+i 2+3i;3-4i 1+3i] a= 1.0000 + 1.0000i 2.0000 + 3.0000i 3.0000 - 4.0000i 1.0000 + 3.0000i >> b=[2+i 2+2i;1-4i 3+3i] b= 2.0000 + 1.0000i 2.0000 + 2.0000i 55 Nguyenvanbientbd47@gmail.com Giáo trình Matlab ứng dụng 1.0000 - 4.0000i 3.0000 + 3.0000i >> c=a.*b c= 1.0000 + 3.0000i -2.0000 +10.0000i -13.0000 -16.0000i -6.0000 +12.0000i 4.4.3- Các phần tử tham số: >> syms a b c % khai báo phần tử ký tự >>A=[a b; b c] A= [ a, b] [ b, c] >> B=A B= [ a, b] [ b, c] >> C=A.*B C= [ a^2, b^2] [ b^2, c^2] 4.5- Các phép toán ma trận 4.5.1- Phép chuyển vị Phép chuyển đổi véctơ hàng thành véctơ cột gọi phép chuyển vị Thực phép chuyển vị toán tử dấu nháy đơn ( ) VD: >> A = [1:3; 4:6; 7:9] 56 Nguyenvanbientbd47@gmail.com Giáo trình Matlab øng dông A= 9 >> B = A B= Ma trận B đợc gọi ma trận chuyển vị ma trận A Phép chuyển vị biến ma trận hàng (hoặc véc tơ) thµnh ma trËn cét, ma trËn cét thµnh ma trËn hàng (hoặc véc tơ) Nếu x y véc tơ cột số thực, tích x*y không đợc định nghĩa nhng hai tích số x*y *x giống nh tích vô hớng Đôíi với ma trận hay véc tơ có phần tử số phức z, đại lợng z biểu thị chuyển vị liên hợp z Phép chuyển vị không liên hợp số phức biểu thị z. tơng tự nh phép toán mảng khác Ví dụ: >>z = [1+2i 3+4i] ↵ >>z’ ↵ ans = 1-2i 3-4i >>z.’↵ ans = 1+2i 3+4i Đối với véc tơ phức, hai tích vô hớng x*y y*x liên hợp phức tích vô hớng véc tơ số phøc víi chÝnh nã x’*x lµ mét sè thùc 57 Nguyenvanbientbd47@gmail.com Giáo trình Matlab ứng dụng 4.5.2- Phép nghịch đảo ma trận Nếu A ma trận vuông không nhất, phơng trình AX = I XA = I có lời giải Lời giải đợc gọi phép nghịch đảo A, đợc biểu diễn A-1 đợc tính toán hàm inv Cú pháp: B=inv(A) Vd: > A=[1:2;2:3] = 2 > B=inv(A) ↵ = -3 > A*B↵ s = -1 0 Lu ý số trờng hợp kết phép nghịch đảo không xác sai số làm tròn Nếu có cảnh báo (Warning) xuất ta phải kiểm tra lại cách nhân hai ma trận trớc sau thực phép nghịch đảo Nếu A vuông không nhất, sai số làm tròn X = inv(A)*B lý thuyết giống nh X=A\B Y= B*inv(A) giống nh Y=B/A Tuy nhiên, phép toán sử dụng phép \ / thờng đợc sử dụng chúng đòi hỏi thời gian tính toán, nhớ có đặc tính xác định sai số tốt 4.5.3- PhÐp céng - trõ ma trËn.( + , - ) Phép cộng trừ ma trận đợc đợc định nghĩa nh mảng, cộng trừ tơng ứng phần tử Cộng trừ yêu cầu hai ma trận phải có kích thớc hai ma trận vô hớng Nếu hai ma trận không kích thớc, Matlab báo lỗi Cij = Aij + Bij Dij = AÞj - Bij >> A = [1:3; 4:6; 7:9] A= 58 Nguyenvanbientbd47@gmail.com 9 Giáo trình Matlab ứng dông >> B = A’ B= >> C = A + B C= 10 10 14 10 14 18 4.5.4- PhÐp nh©n, chia ma trËn: PhÐp nh©n ma trận đợc định nghĩa theo cách mà phản ánh thành phần phép biến đổi tuyến tính cho phép biểu diễn ngắn gọn hệ phơng trình tuyến tính Phép nhân ma trận C = A*B đợc định nghĩa số hàng A (ma trận bị nhân) số cột ma trận B (ma trận nhân) Các phần tử ma trận C đợc tính nh sau: cij = aikbkj VD phần tử ma trận số thực >> A = [1 1; 1] A= 1 >> B = [1 2; 1; 1 1] B= 2 1 59 Nguyenvanbientbd47@gmail.com 1 Gi¸o trình Matlab ứng dụng >> C = A * B C= VD phần tử ma trận số phức >> a=[1+2i 2+2i;1+3i 2+2i] a= 1.0000 + 2.0000i 2.0000 + 2.0000i 1.0000 + 3.0000i 2.0000 + 2.0000i >> b=[1+i 2+i;1+3i 2+i] b= 1.0000 + 1.0000i 2.0000 + 1.0000i 1.0000 + 3.0000i 2.0000 + 1.0000i >> c=a*b c= -5.0000 +11.0000i 2.0000 +11.0000i -6.0000 +12.0000i 1.0000 +13.0000i VD phần tử ma trận tham số >> syms a b c >>d=[2*a b c; a b c; 0 a] d= [ 2*a, b, c] [ a, b, c] [ 0, 0, a] >> e=[a b c; 2*a 2*b^2 c ; a b] e= 60 Nguyenvanbientbd47@gmail.com [ a, b, c] [ 2*a, 2*b^2, [ a, Giáo trình Matlab øng dông 0, c] b] >> f=d*e f= [ 2*a^2+2*b*a+c*a, 2*b*a+2*b^3, [ a^2+2*b*a+c*a, b*a+2*b^3, [ a^2, 0, 2*c*a+2*c*b] c*a+2*c*b] b*a] C= A = A* B B PhÐp chia ma trận thực chất phép nhân với ma trận nghịch ®¶o >> A = [1 1; 1] A= 1 >> B = [1 2; 1; 1 1] B= 2 1 1 >> C = inv(B) C= 1.0000 -0.5000 0.500 -1.000 -0.5000 1.5000 -0.5000 0.5000 >> D = A*C D= 61 Nguyenvanbientbd47@gmail.com Giáo trình Matlab ứng dụng - 0.5000 -0.5000 2.5000 0.5000 0.5000 -0.5000 Chú ý: Trong phép tính hai ma trận vô hớng (là số thực số phức) tất phần tử ma trận đợc cộng, trừ, nhân, chia ( / ) víi sè thùc ®ã t thc vào phép toán tơng ứng >> A = [1 1; 1] A= 1 >> B = A*2 B= 2 4.5.5- PhÐp l thõa vµ sè mị cđa ma trận p số nguyên dơng A^p nhân A với p lần Ví dụ: >>A = magic(3); ↵ >>X = A^3 ↵ X= 1197 1029 1149 1077 1125 1173 1101 1221 1053 NÕu A ma trận vuông không A^(-p) nhân inv(A) với p lần Ví dô: >>Y = A^(-3) ↵ Y= 0.0053 -0.0068 0.0018 -0.0034 0.0001 0.0036 -0.0016 0.0070 -0.0051 62 Nguyenvanbientbd47@gmail.com Giáo trình Matlab ứng dụng Trong trờng hợp muốn luỹ thừa phần tử sử dụng phép toán mảng >>Z = A.^3 ↵ Z= 512 216 27 125 343 64 729 Hệ phơng trình vi phân thờng tuyến tính có hệ số không đổi đợc viết: dx/dt = Ax x = x(t) véc tơ hàm theo t A ma trận phụ thuộc vào t Lời giải đợc biĨu diƠn d−íi tht ng÷ sè mị ma trËn: x(t) = etAx(0) đợc tính toán hàm expm(A) Ví dô: >> A = pascal(3);↵ >>x0 = [1;1;1] ;↵ >>X = []; >>for t = 0:.01:1 X = [X expm(A*t)*x0]↵ end 4.5.6- PhÐp quay ma trËn Sư dơng lƯnh rot90 ®Ó quay ma trËn ®i gãc 90 ®é theo ngợc chiều kim đồng hồ >> a=[1 3;4 6;7 9] a= >> b=rot90(a) b= 63 Nguyenvanbientbd47@gmail.com Giáo trình Matlab ứng dụng Lệnh rot90(A,k) quay Matlab trận mét gãc k*90o víi k = ± 1, ± 2,… 4.5.7- Phép đảo ma trận Đảo phần tử ma trận từ trái sang phải lệnh fliplr, đảo ma trËn tõ trªn xng d−íi dïng lƯnh flipud > c=fliplr(b) >d = flipud(pascal(3)) = = 3 2 1 1 4.5.8- Tính định thức ma trận >> A=[2 7;4 5;1 8] A= >> det(A) ans = 90 4.6- øng dơng c¸c phÐp to¸n ma trận 4.6.1- Nhân đa thức Để nhân hai đa thức ta dïng lÖnh conv: y1 = anxn + an-1xn-1+ +a0 y = bnxn + bn-1xn-1+ +b0 64 Nguyenvanbientbd47@gmail.com Gi¸o trình Matlab ứng dụng Bớc1: Lập ma trận hàng tên y1, y2 có phần tử hệ số từ an đến a0 bn đến b0 giảm dần theo bậc phơng trình ( Nếu hệ số ghi ) Bớc 2: dùng lệnh conv để nhân đa thức >>y3= conv(y1,y2) VD: y1 = 2x2 + 3x+1 y2 = 3x2 + 4x >> y1 = [2 1] >> y2 = [3 0] >> y3 = conv(y1,y2) >> y3 = 17 15 Chó ý: hµm conv chØ thùc nhân đa thức Muốn nhân nhiều đa thức với ta phải thực nhiều lần hàm conv 4.6.2- Giải phơng trình bậc cao Sử dụng lệnh Roots để giải phơng trình bậc n: y = anxn + an-1xn-1+ +a0 Bớc1: Lập ma trận hàng có phần tử hệ số từ an đến a0 giảm dần theo bậc phơng trình ( Nếu hệ số ghi ) Bớc 2: Dùng lệnh Roots để giải ma trận vừa tạo đợc VD giải phơng trình sau: y = x5 -2x4 + 5x2 -1 >> y = [ -2 -1] y= -2 -1 >> kq=roots(y) kq = 1.5862 + 1.1870i 1.5862 - 1.1870i 65 ... trình tuyến tính Phép nhân ma trận C = A*B đợc định nghĩa số hàng A (ma trận bị nhân) số cột ma trận B (ma trận nhân) Các phần tử ma trận C đợc tính nh sau: cij = aikbkj VD phần tử ma trận số thực... Giáo trình Matlab ứng dụng A= 9 >> B = A’ B= Ma trận B đợc gọi ma trận chuyển vị cđa ma trËn A PhÐp chun vÞ biÕn ma trËn hàng (hoặc véc tơ) thành ma trận cột, ma trận cột thành ma trận hàng (hoặc... tử ma trận - Bao quanh phần tử ma trận dấu ngoặc vuông [aij] - Các phần tử hàng ma trận đợc cách ký tự trắng (space) dấu phẩy (,) - Kết thúc hàng ma trận dấu (;) Nói cách khác dấu (;) phân cách

Ngày đăng: 29/09/2013, 20:20

TỪ KHÓA LIÊN QUAN

w