Ma trận Hadamard có đặc điểm nổi bật là các phần tử của nó chỉ có 2 giá trị -1 và 1, và các hàng của nó đều trực giao với nhau.. Định nghĩa về cấu trúc của ma trận Hadamard Định nghĩa 1
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
🙞 ···☼··· 🙜
BÁO CÁO BÀI TẬP LỚN
MÔN ĐẠI SỐ TUYẾN TÍNH
ĐỀ TÀI 17 : MA TRẬN HADAMARD
Lớp: L13 Nhóm 19
Trang 2GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
GIỚI THIỆU
Ma trận là một công cụ quan trọng trong toán học và các ngành khoa học ứng dụng, giúp chúng ta mô tả và giải quyết nhiều bài toán phức tạp Ma trận Hadamard là một loại ma trận đặc biệt được sử dụng rộng rãi trong nhiều lĩnh vực Ma trận Hadamard không chỉ có cấu trúc độc đáo mà còn có nhiều ứng dụng hữu ích và đa dạng.
Nhà toán học người Pháp Jacques Hadamard đã đóng góp lớn vào đầu thế kỷ 20 cho Ma trận Hadamard Ma trận Hadamard có đặc điểm nổi bật là các phần tử của nó chỉ có 2 giá trị -1 và 1, và các hàng của nó đều trực giao với nhau Ma trận Hadamard có những đặc điểm riêng biệt do đó nó trở thành một công cụ quan trọng trong nhiều lĩnh vực nghiên cứu và ứng dụng.
Ma trận Hadamard có nhiều ứng dụng Ma trận này được sử dụng trong
lý thuyết mã hóa để tạo ra các mã sửa lỗi, giúp bảo vệ thông tin khỏi sự ảnh hưởng của nhiễu Ma trận Hadamard được sử dụng trong xử lý tín hiệu để thực hiện các phép biến đổi nhanh, tăng tốc độ xử lý dữ liệu Ma trận Hadamard cũng được sử dụng trong thiết kế thực nghiệm và lý thuyết thông tin.
Bài báo này cung cấp một bản tóm tắt chi tiết về ma trận Hadamard, bao gồm các khái niệm cơ bản, các đặc điểm quan trọng và các ứng dụng trong thế giới thực Chúng em sẽ trình bày các kỹ thuật xây dựng ma trận Hadamard, đưa ra những ví dụ cụ thể và trình bày các kết quả nghiên cứu liên quan Hy vọng của chúng em là bài báo cáo này sẽ cung cấp những kiến thức hữu ích và cái nhìn sâu sắc hơn về ma trận Hadamard và khơi gợi sự quan tâm và đam mê nghiên cứu trong lĩnh vực này.
Trang 3GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
MỤC LỤC
CHƯƠNG 1: CẤU TRÚC VÀ PHƯƠNG PHÁP XÂY DỰNG MA TRẬN
HADAMARD _3
1 Định nghĩa về cấu trúc của ma trận Hadamard 3
2 Phương pháp xây dựng ma trận Hadamard : _5
a Phương pháp Sylvester _5
b Phương pháp Paley 5
c Phương pháp Williamson _6 CHƯƠNG 2: MA TRẬN HADAMARD TRONG QUY HOẠCH THỰC NGHIỆM._6 CHƯƠNG 3: THỰC HÀNH XÂY DỰNG MA TRẬN HADAMARD CẤP KHÔNG QUÁ 100. _9 XÂY DỰNG MA TRẬN HADAMARD CẤP 8 9 CHƯƠNG 4: SẢN PHẨM MỘT PHẦN MỀM GIẢI QUYẾT BÀI TOÁN QUY HOẠCH THỰC NGHIỆM. _11
II Đoạn mã _11
1 Hàm hadarmard(n) _13
2 Hàm print_matrix(matrix) _13
3 Hàm main() _13 TỔNG KẾT 15 TÀI LIỆU THAM KHẢO 16
Trang 4GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
CHƯƠNG 1: CẤU TRÚC VÀ PHƯƠNG PHÁP XÂY DỰNG MA
TRẬN HADAMARD
1 Định nghĩa về cấu trúc của ma trận Hadamard
Định nghĩa 1 :Một ma trận H = (a ) vuông cấp n được gọi là ma trận Hadamard nếu thỏaij
mãn những điều sau:
|aij| = 1
Ht H=nIn
Từ định nghĩa 1, ta thấy điều kiện |a | = 1 dễ dàng kiểm chứng trong khi H H = nI yêuij t n
cầu kiểm tra bằng các bước tính toán, điều kiện này tương đương với các hàng trong ma trận H đôi một trực giao với nhau
Ta có định lý sau:
Định lý 1: Ma trận H = (a ) với |a | = 1 có tất cả các hàng trực giao với nhau từng đôi mộtij ij
nếu và chỉ nếu Ht.H có các phần tử trên đường chéo chính khác 0 và các phần tử còn lại bằng 0, khi đó nếu ma trận H là ma trận Hadamard thì:
Ht.H = nIn
Định lý 2 :Với ma trận M là ma trận vuông cấp n được tạo thành từ các phần tử +1 và -1:
|det(M)| ≤ nn/2
Từ công thức H H = nI suy ra |H H|= nn mà |H|= |H | nên |H|= n t t t n/2
Từ đó, giá trị tuyệt đối của định thức của ma trận Hadamard có giá trị lớn nhất trong số định thức của các ma trận vuông được tạo thành từ 2 phần tử 1 và -1 cùng cấp
Định lý 3: Ma trận Hadamard là ma trận khả nghịch
Định lý 4: Một ma trận Hadamard có cấp là 1, 2 hoặc 4t với t là số nguyên dương
Từ đó suy ra rằng nếu H là ma trận Hadamard thì H cũng là ma trận Hadamard, nếu cáct
hàng của H đôi một trực giao với nhau thì các cột của H cũng đôi một trực giao với nhau Một vài ma trận Hadamard (dấu "-" đại diện cho phần tử-1, dấu "+" đại diện phần tử 1): Cấp 2
¿ Cấp 4
¿
Trang 5GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
Cấp 12
¿ Một vài ma trận Hadamard dưới dạng ảnh (ô màu trắng đại diện cho các phần tử có giá trị -1, ô màu xanh đại diên cho các phần tử có giá trị1 )( Từ trái sang:
Cấp ma trận 8 -16 -32 -64 )
Bằng các phép biến đổi, người ta có thể đưa một ma trận Hadamard cho trước về dạng
ma trận cùng cấp có hàng đầu tiên hoặc hàng đầu tiên bằng 1 (dạng chuẩn)
Định nghĩa 2 (Dạng chuẩn): Là ma trận Hadamard có hàng đầu tiên và cột đầu tiên gồm toàn bộ các phần tử là 1 Lõi Hadamard là phần ma trận còn lại sau khi đã loại bỏ hàng và cột đầu tiên của ma trận Hadamard ở dạng chuẩn
*Một vài dạng đặc biệt của ma trận Hadamard:
Định nghĩa 3 (Dạng Xiên) : Là ma trận Hadamard H có dạng:
H =A+I với At = −A (ma trận phản đối xứng ) và I là ma trận đơn vị (1.2)
Nhận xét: Các ma trận A có được nhờ lấy H − I là các ma trận hội nghị (Conference matrix [7]) Đây là một loại ma trận được sử dụng nhiều trong thiết lập mạch điện thoại Định nghĩa 4 (Dạng đều) : Là ma trận Hadamard có tổng các phần tử mỗi hàng (mỗi cột) bằng nhau
Trang 6GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
Định nghĩa 5: Tích Kronecker của 2 ma trận A = [aij]m×p và B =[bij]q×s được ký hiệu là , là ma trận cấp mq × ps được định nghĩa bởi:
2 Phương pháp xây dựng ma trận Hadamard :
a.Phương pháp Sylvester
Định lý 1 :Nếu H là ma trận Hadamard thì H’=[H H
H −H] được gọi là ma trận Sylvester– Hadamard
Thực chất, ma trận H′ có được từ việc lấy tích Kronecker của ma trận H và ¿ ma trận Hadamard có cấp là 2 Tổng quát hơn, ta có thể tìm được ma trận Hadamard cấp n nào đó với điều kiện n = 2×t mà ta đã biết ma trận Hadamard cấp t
Từ 1 ma trận Hadamard đã biết, ta có thể tìm được lớp các ma trận có cấp gấp 2t cấp ma trận đã biết Như vậy, nếu ta chọn cấp của ma trận H đầu vào là 2 thì ta có thể xây dựng
ma trận Hadamard với cấp 2t với t là các số nguyên dương
b Phương pháp Paley
được gọi là ma trận tuần hoàn
Hai bổ đề dưới đây tương ứng với hai trường hợp của phương pháp Paley:
1 Nếu n=p+1 với p≡3 (mod4) và p là số nguyên tố thì tồn tại ma trận Hadamard cấp n
2 Nếu n chia hết cho 4 và có dạng n=2(p+1) ,p là số nguyên tố thì tồn tại ma trận Hadamard cấp n
Trang 7GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
c Phương pháp Williamson
Ma trận H có dạng:
được gọi là ma trận kiểu Williamson nếu các khối A, B, C và D là các ma trận vuông Nếu A, B, C, D được thay bằng các ma trận vuông cấp n, H trở thành ma trận vuông cấp 4×n Để ma trận H là ma trận Hadamard thì H H là ma trận 4nI Theo kiểu t
n
Williamson, khi nhân ma trận H và H thì sẽ được một ma trận kết quả có cấp 4n mà t
các phần tử trên đường chéo chính sẽ bằng nhau và bằng A.At+B.B +C.C +D.Dt t t= 4nI nếu H là ma trận Hadamard.Các phần tử còn lại của ma trận H.H , ví dụ như phần tử ởt
vị trí hàng 1 ,cột 2 là B.At−A.B +D.C −C.Dt t t phải bằng ma trận 0 Lần lượt thực hiện phép nhân ma trận H với H , ta thấy các ma trận A,B,C, D tương ứng trong dạng kiểu t
Williamson sẽ tạo thành ma trận Hadamard khi và chỉ khi từng đôi X,Y khác nhau được chọn từ A,B,C,D thỏa mãn: X.Yt=Y.Xt
CHƯƠNG 2: MA TRẬN HADAMARD TRONG QUY HOẠCH THỰC NGHIỆM
Qui hoạch thực nghiệm được gọi là trực giao khi tích của ma trận qui hoạch là ma trận trực giao (ATA=AA =IT ) Mục tiêu của qui hoạch trực giao nhằm đạt đến việc khi vận hành phần này của qui hoạch sẽ không gây các ảnh hưởng phụ đến các phần khác của qui hoạch Tính trực giao của một qui hoạch cho phép việc xây dựng các qui hoạch phức tạp trở nên khả thi và gọn nhẹ
Cách tìm ra ma trận Hadamard từ một ma trận Hadamard khác bằng phương pháp Sylvester :
- Nếu H là ma trận Hadamard thì H'
H −H)cũng là ma trận Hadamard, được gọi là ma trận Sylvester – Hadamard
- Ma trận H′ có được từ việc lấy tích Kronecker của ma trận H và ma trận Hadamard ¿ có cấp là 2
Trang 8GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
Từ 1 ma trận Hadamard đã biết, ta có thể tìm được lớp các ma trận có cấp gấp
2t cấp ma trận đã biết, Như vậy, nếu ta chọn cấp của ma trận đầu vào là 2 thìH
ta có thể xây dựng ma trận Hadamard với cấp 2 với là các số nguyên dương.t t
Để chứng minh tính đúng đắn của phương pháp, ta kiểm tra các điều kiện từ định nghĩa của ma trận Hadamard:
1 Các phần tử của ma trận là 1 hoặc -1
2 Các hàng (hoặc cột) đôi một trực giao với nhau
Trang 9GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
Dễ thấy, điều kiện đầu tiên luôn luôn thỏa mãn với cách sinh ma trận này Với điều kiện thứ 2, ta sẽ tính tích vô hướng các hàng trong ma trận để kiểm tra.H′ Thật vậy, vì là các ma trận Hadamard nên các hàng của đã trực giao với nhauH H từng đôi Ta lại có −H cũng là ma trận Hadamard Từ đó, ta chứng minh được tích
vô hướng của các hàng trong ma trận đều bằng 0 Suy ra, các hàng trong maH′ trận đều trực giao với nhau từng đôi một.H′
Phương pháp này có ưu điểm là dễ cài đặt, ma trận sinh ra đã ở dạng chuẩn nếu
ma trận đầu vào là dạng chuẩn, tiết kiệm thời gian và tài nguyên để chuẩn hóa ma trận Nhược điểm: Phương pháp chỉ giúp ta tìm được ma trận có cấp là 2 , nhưp
vậy, những ma trận có cấp nằm trong khoảng (2 , 2 ) sẽ bị bỏ sót.p p+1
Trang 10GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
CHƯƠNG 3: THỰC HÀNH XÂY DỰNG MA TRẬN HADAMARD CẤP KHÔNG QUÁ 100
XÂY DỰNG MA TRẬN HADAMARD CẤP 8
Hãy bắt đầu với ma trận Hardamard cấp 1, giả sử nó là
H 1=[1]
Theo cách xây dựng ma trận của Sylvester ta mở rộng ma trận cấp 1 bằng cách tạo 3 bản sao của chúng và 1 bản sao nghịch đảo ở ở góc phải ma trận Từ đó ta được ma trận cấp 2
H 2=[1 1
1 −1]
Lặp lại như bước trên ta tiếp tục mở rộng ma trận cấp 2 để thu được ma trận cấp 4
Cụ thể như sau:
Tạo 3 bản sao của ma trận cấp 2:
H 2=[1 1
1 −1] H 2=[1 1
1 −1] H 2=[1 1
1 −1]
Tạo 1 bản sao nghịch đảo của ma trận cấp 2:
Ta có :
H 4=[H 2 H 2
H 2 −H 2]
H 4=[1 1
1 −1
1 −1
1 −1
−1 −1
Tiếp tục mở rộng ma trận cấp 4 ta thu được ma trận cấp 8
1 1 1
−1 1
−1
1
−1
−1
−1
−1 1
−1
−1
−1
1
−1 1
−1 1 1
1 1
−1]
Trang 11GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
H 2=[−1 1
Tương tự ở ví dụ 1 ta xây dựng được ma trận cấp 4
H 4=[−1 1
−1 1
−1 1
Tiếp đó ta xây dựng ma trận cấp 8 từ ma trận cấp 4 đã có :
−1 −1
−1 1 −1
−1 −1
−1 −1 1
Trang 12GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
CHƯƠNG 4: SẢN PHẨM MỘT PHẦN MỀM GIẢI QUYẾT BÀI TOÁN QUY HOẠCH THỰC NGHIỆM
I Giới thiệu
Phương pháp xây dựng ma trận Hadamard có thể thực hiện thông qua nhiều cách tiếp cận khác nhau, trong đó phương pháp đệ quy (dựa theo phương pháp Sylvester) là một cách tiếp cận hiệu quả và dễ hiểu Trong phương pháp này, chúng ta sẽ bắt đầu từ một ma trận Hadamard cơ bản kích thước 1x1, và sau đó sử dụng đệ quy để xây dựng các ma trận Hadamard lớn hơn từ các ma trận nhỏ hơn
Về cách hoạt động của thuật toán, khi được tăng lên, ma trận Hadamard cấp 2 đượcn n
tạo ra bằng cách chia ma trận thành 4 phần bằng nhau và lặp lại quá trình này cho mỗi phần Việc này tạo ra một cấu trúc đệ quy, trong đó mỗi lần lặp, kích thước của ma trận lại tăng lên gấp đôi
Cách xây dựng ma trận này có ưu điểm là dễ cài đặt, ma trận sinh ra đã ở dạng chuẩn nếu ma trận đầu vào là dạng chuẩn, tiết kiệm thời gian và tài nguyên để chuẩn hóa ma trận Nhược điểm của phương pháp này là phương pháp chỉ giúp chúng ta tìm được ma trận có cấp là 2 , như vậy những ma trận có cấp nằm trong khoảng (2 , 2 ) sẽ bị bỏ sót.k k k+1
II Đoạn mã
#include<iostream>
#include<vector>
#include<cmath>
#include<iomanip>
using namespace std;
// Hàm tính toán ma trận Hadamard cấp 2^n bằng phương pháp đệ quy
vector vector< <int>> hadamard(int n) {
// Nếu n = 0, trả về ma trận 1x1 với giá trị 1
( if n== ) {0
return {{1}};
} else {
// Gọi đệ quy để tính ma trận Hadamard cấp 2^(n-1)
vector vector< < >>int smaller_hadamard=hadamard(n -1);
int size =pow(2, n); // Kích thước của ma trận Hadamard cấp 2^n
vector vector< < >>int result size( , vector< >(int size));
// Sao chép các giá trị từ ma trận Hadamard cấp 2^(n-1) vào ma trận kết quả
Trang 13GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
result i[ +size/2][j] =smaller_hadamard i j[ ][ ];
result i j[ ][ +size 2]=smaller_hadamard i j[ ][ ];
result i[ +size/2][j+size/2]=-smaller_hadamard i j[ ][ ];
}
}
returnresult;
}
}
// Hàm in ma trận
voidprint_matrix(constvector vector< < >> int &matrix) {
for (const auto&row matrix : ) {
for ( intelement row : ) {
cout<<setw(2) <<element<<" ";
}
cout<<endl;
}
}
int main() {
int n;
cout<<"Nhap so cap cua ma tran: ";
cin>>n;// Độ lớn của ma trận Hadamard là 2^n
(if floor(log2( ))n ==log2(n)){
cout<<"Ma tran Hadamard cap "<<n<<" la: "<< endl;
vector vector< < >>int hadamard_matrix =hadamard log2( (n));
print_matrix(hadamard_matrix);
}
else{
cout<<"He thong khong the tim ma tran Hadamard theo cap "<<n<<" Duoi day
la ma tran Hadamard cap "<< pow(2,( )intlog2(n)) <<":"<< endl;
vector vector< < >>int hadamard_matrix =hadamard log2( (n));
print_matrix(hadamard_matrix);
}
return ;0
}
Trang 14GVHD:ThS Huỳnh Thái Duy Phương Nhóm 19
III Sản phẩm
IV Giải thích chi tiết
1 Hàm hadarmard(n)
- Đây là một hàm đệ quy Nếu là ma trận Hadamard cấp 2 , thì hàm này tính Hn n Hn
dựa trên Hn-1
- Trong trường hợp cơ sở (gọi là điều kiện dừng), nếu = 0, hàm trả về ma trận 1x1n với phần tử duy nhất là 1
- Trong trường hợp khác, hàm gọi đệ quy để lấy ma trận Hadamard cấp 2 (n-1 Hn-1)
- Sau đó, hàm tạo ra ma trận có kích thước 2 x 2 từ Hn n n Hn-1 Bước này gần như nhân đôi kích thước của ma trận Hadamard cũ
- Ma trận Hadamard cấp 2 được tạo ra bằng cách sao chép các giá trị từ ma trậnn
Hadamard cấp 2 vào ma trận kết quả Mỗi giá trị trong ma trận Hadamard cấp 2n-1
n-1 được sao chép vào bốn vị trí trong ma trận kết quả, với hai vị trí ở góc trên bên trái giữ nguyên giá trị, hai vị trí ở góc dưới bên phải giữ nguyên giá trị và hai vị trí còn lại được gán giá trị âm của giá trị tương ứng trong ma trận Hadamard cấp 2 n-1
2 Hàm print_matrix(matrix)
- Hàm để in ma trận kết quả
- Hàm duyệt qua từng hàng của ma trận (mảng) và in ra từng phần tử của hàng đó