1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Sáng kiến kinh nghiệm) chuyên đề ứng dụng nhân ma trận trong các bài toán tin học

24 8 0

Đ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

ỨNG DỤNG NHÂN MA TRẬN TRONG CÁC BÀI TOÁN TIN HỌC Contents I Lý thuyết ma trận 1.1 Định nghĩa ma trận 1.2 Phép cộng phép nhân hai ma trận + Phép cộng hai ma trận A B: +Phép nhân hai ma trận: 1.3 Ma trận vuông + Ví dụ ma trận tam giác trên: .3 + Ví dụ ma trận tam giác dưới: + Ví dụ ma trận chéo: + Ma trận đơn vị In: 1.4 Ma trận đối xứng + Khái niệm ma trận chuyển vị: + Ma trận đối xứng: .4 II Bài tập ứng dụng I Lý thuyết ma trận 1.1 Định nghĩa ma trận Ma trận mảng chữ nhật chứa số đối tượng tốn học khác, mà định nghĩa số phép toán cộng nhân ma trận Hay gặp ma trận trường F mảng chữ nhật chứa đại lượng vô hướng F Bài viết đề cập đến ma trận thực, tức ma trận mà phần tử số thực A 11  A   A= 21  A  m1 A 12 A 22 A m2 A  1n  A 2n    A  mn  Trong Aij €F ( 1≤i≤n; 1≤j≤m), gọi ma trận m hàng n cột với phần tử F Véc tơ hàng ( ( Ai1 Ai Ain ) gọi hàng thứ i ma trận A ) Véc tơ cột (  A1 Am gọi cột thứ j ma trận A A2 j j j Ma trận gọi ma trận A=(Aij)m×n Tập hợp ma trận m hàng, n cột với phần tử F kí hiệu M(m×n,F) 1.2 Phép cộng phép nhân hai ma trận Ta định nghĩa phép cộng phép nhân vơ hướng M(m×n,F) sau: + Phép cộng hai ma trận A B: A  11 A  A A 12 1n A 21 A 2n  22  A  m1     A  mn  A m2 B  11 B +  21  B  m1 B  B 12 1n B  B 2n  22   B  mn  B m2  A +B  11 11 +B  A =  21 A +B  A12 + B12 1n A +B  21   A +B  m1 m1 1n 2n A22 + B22 Cài đặt pascal: Am + Bm 2n    A +B  mn  mn for i:=1 to M for j:=1 to N C[i,j]:= A[i,j] + B[i,j];  −3.5  −2 Ví dụ:     6   3 +      0  −3.5   =  −1 6  3  8     01 +Phép nhân hai ma trận: Cho hai ma trận A=(Aij) € M (m × n,F), B = (Bjk) € M(n × p,F) Tích AB ma trận A ma trận B ma trận C =(Cik) € M(m × p,F) với phần tử xác định sau:  ,n Cik= Aij Bjk ( 1≤ i ≤m, 1≤ k ≤p) j= Trong Pascal cài đặt sau: for i:=1 to M for k:=1 to P begin C[i,k]:=0; for j:=1 to N C[i,k]:=C[i,k]+A[i,j] * B[j,k]; end Ví dụ:  1 3    0    1 1  × 0 =     1  13         32 Tích số a ma trận A€M(m × n,F) ma trận B€M(m × n,F) A 11  A Ví dụ: a×  A12 1n A22 21  A  m1 A  A  2n    A  mn  aA 11  aA  = 21  aA  m1 aA 12 aA 22 aA m2 aA  1n  aA 2n    aA  mn  Am 1.3 Ma trận vuông Ma trận vng ma trận có số hàng số cột Ma trận n × n cịn gọi ma trận vng bậc n Bất kì hai ma trận vng bậc thực phép cộng phép nhân với Các phần tử A ii tạo thành đường chéo ma trận vng + Các loại thường gặp: Nếu phần tử A bên đường chéo 0, A gọi ma trận tam giác Tương tự, phần tử A nằm phía đường chéo 0, A gọi ma trận tam giác Nếu phần tử nằm bên ngồi đường chéo khơng A gọi ma trận chéo   + Ví dụ ma trận tam giác trên:    2  + Ví dụ ma trận tam giác dưới:   4 5  3  1 0  0   0   0 + Ví dụ ma trận chéo:    0 3  1 + Ma trận đơn vị In: Có số chiều n ma trận n × n phần tử đường chéo tất phần tử khác 0, ví dụ:  0  1     (1 0   ,…., In =  I1=  , I3=  ) , I2=    0    0 10 0  0   1 Nó ma trận vuông bậc n, trường hợp đặc biệt ma trận chéo Nó ma trận đơn vị thực nhân ma trận với thu ma trận đó: AIn = ImA = A với ma trận A mxn 1.4 Ma trận đối xứng + Khái niệm ma trận chuyển vị: Nếu A ma trận có kích thước m×n với giá trị a ij hàng i cột j ma T trận chuyển vị B = A ma trận có kích thước n × m với giá trị: bji= aij 1 Ví dụ: A=    5   64 T B=A =  5    6 + Ma trận đối xứng: T Ma trận vuông A ma trận chuyển vị nó, tức A=A , A ma trận đối xứng     Ví dụ: A=       221 II Bài tập ứng dụng Bài LÁT VIỀN = AT Đường viền trang trí nhà có kích thước × lát loại gạch: loại kích thước × loại × Hãy xác định số cách lát khác thực Dữ liệu: Vào từ file vãn TILE.INP  Dòng đầu chứa số nguyên dương ( ≤ 10) – số lượng liệu  T dòng tiếp, dịng thứ ghi số ngun dương kích thước nhà liệu thứ Kết quả: Đưa file văn TILE.OUT dòng tương ứng kết tìm với liệu theo thứ tự Đưa theo số dư cho 109 + Ví dụ: TILE.INP 12 Hướng dẫn: Gọi TILE.OUT 171 2731 số cách tạo đường viền kích thước × Dễ thấy: = −1 +2 −2 Khi ta có: =[ −1 = −1 × −1 ] × −1 −2 1 với = [ ] Do đó, để tính ta dùng phương pháp nhân ma trận giải toán thời gian (log2 × ( )3) Code mẫu: using namespace std; typedef long long ll; struct matrix { int val[maxn][maxn]; matrix() { memset(val, 0, sizeof(val)); } matrix operator * ( const matrix & x) { matrix res; for (int u = 0; u < 2; u++) for (int v = 0; v < 2; v++) for (int i = 0; i < 2; i++) res.val[u][v] = ((ll)val[u][i] * x.val[i][v] + res.val[u][v] ) % MOD; return res; } }; matrix A, res; long long n; long long F[10000001]; matrix POWW(matrix A, long long b) { matrix C; for (int i = 0; i < 2; i++) C.val[i][i] = 1; for ( ; b; b /= 2, A = A * A) if (b % 2) C = C * A; return C; } int main() { ios_base::sync_with_stdio(0); freopen(Task".inp", "r", stdin); freopen(Task".out", "w", stdout); int T; cin >> T; while (T ){ cin >> n; A.val[0][0] = 1; A.val[0][1] = 2; A.val[1][0] = 1; res= POWW(A,n+1); cout

Ngày đăng: 15/06/2021, 14:30

Xem thêm:

w