Tải bản đầy đủ (.pdf) (47 trang)

Hệ phương trình đi ô phăng tuyến tính luận văn ths toán học 60 46 01 02 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (255.06 KB, 47 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
- - - - - - - - - o0o - - - - - - - - -

VŨ TUẤN ANH

HỆ PHƯƠNG TRÌNH ĐI-Ô-PHĂNG
TUYẾN TÍNH

LUẬN VĂN THẠC SĨ KHOA HỌC

Hà Nội − 2014


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
- - - - - - - - - o0o - - - - - - - - -

VŨ TUẤN ANH

HỆ PHƯƠNG TRÌNH ĐI-Ô-PHĂNG
TUYẾN TÍNH

Chuyên ngành: TOÁN GIẢI TÍCH
Mã số:
60460102

LUẬN VĂN THẠC SĨ KHOA HỌC

NGƯỜI HƯỚNG DẪN KHOA HỌC:
GS.TS. TRẦN VŨ THIỆU



Hà Nội − 2014


Mục lục
Mở đầu

2

1 Kiến thức chuẩn bị

5

1.1

Dạng chuẩn Hecmit . . . . . . . . . . . . . . . . . . . . . .

1.2

Ma trận đơn môđula . . . . . . . . . . . . . . . . . . . . . 10

2 Phương trình Đi-ô-phăng tuyến tính

5

14

2.1

Ước chung lớn nhất . . . . . . . . . . . . . . . . . . . . . . 14


2.2

Thuật toán Ơ-clít mở rộng . . . . . . . . . . . . . . . . . . 17

2.3

Phương trình Đi-ô-phăng tuyến tính . . . . . . . . . . . . . 23

2.4

Một số ứng dụng của phương trình Đi-ô-phăng . . . . . . . 29

3 Hệ phương trình Đi-ô-phăng tuyến tính

32

3.1

Hệ phương trình Đi-ô-phăng tuyến tính . . . . . . . . . . . 32

3.2

Điều kiện tồn tại nghiệm nguyên . . . . . . . . . . . . . . . 34

3.3

Thuật toán Hecmit . . . . . . . . . . . . . . . . . . . . . . 36

3.4


Nghiệm nguyên dương của hệ phương trình Đi-ô-phăng . . . 38

3.5

Quy hoạch tuyến tính Đi-ô-phăng . . . . . . . . . . . . . . 41

Kết luận

44

Tài liệu tham khảo

45

1


Mở đầu
Phương trình Đi-ô-phăng tuyến tính (Linear Diophantine Equations)
mang tên nhà toán học cổ Hy Lạp Đi-ô-phăng ở xứ Alexandria vào khoảng
Thế kỷ thứ 3 sau Công nguyên. Đi-ô-phăng đã viết một chuyên luận có
tên “Arithmetica”, đó là cuốn sách sớm nhất được biết về lý thuyết số và
đại số.
Phương trình Đi-ô-phăng là phương trình đại số đòi hỏi tìm nghiệm
hữu tỉ hoặc nguyên. Phương trình đại số là phương trình chỉ bao gồm các
biểu thức đa thức của một hoặc nhiều biến. Tính “Đi-ô-phăng” của phương
trình là ở chỗ các hệ số của đa thức phải là các số hữu tỉ (hoặc số nguyên)
và nghiệm cũng chỉ có thể là số hữu tỉ (hoặc số nguyên).
Hai phương trình quen biết từ lý thuyết số sơ khai, có từ trước thời

Đi-ô-phăng là những ví dụ về phương trình Đi-ô-phăng. Cả hai loại phương
trình này đều đã được người Babylon biết đến. Đó là
1. Phương trình bậc nhất (tuyến tính), hai biến

ax + by = c.
2. Phương trình bậc hai (phi tuyến), ba biến

x2 + y 2 = z 2 .
Luận văn này có mục đích tìm hiểu và trình bày thuật toán Ơ-clít tìm
các nghiệm nguyên của phương trình Đi-ô-phăng tuyến tính n biến có dạng

a1 x1 + a2 x2 + ... + an xn = b,

2


trong đó a1 , a2 , ..., an , b là các số hữu tỉ và thuật toán Hecmit tìm tất cả
các nghiệm nguyên của hệ phương trình Đi-ô-phăng tuyến tính Ax = b
với ma trận A và véctơ b hữu tỉ.
Luận văn được chia thành ba chương.
Chương 1 "Kiến thức chuẩn bị" nhắc lại các khái niệm của đại số về
dạng chuẩn Hecmit và ma trận đơn môđula, liên quan tới việc giải hệ
phương trình Đi-ô-phăng tuyến tính. Đáng chú ý là mọi ma trận với các
phần tử hữu tỉ và có hạng bằng số hàng của ma trận đều đưa được về dạng
chuẩn Hecmit nhờ các phép biến đổi cột trên ma trận, dạng chuẩn này là
duy nhất. Dạng chuẩn Hecmit lại có quan hệ với các ma trận đơn môđula
(ma trận nguyên, không suy biến và có định thức bằng +1 hay −1). Với
ma trận hữu tỉ A có hạng bằng số hàng luôn tồn tại ma trận đơn môđula

U sao cho AU là dạng chuẩn Hecmit của A. Nêu cách đưa một ma trận

về dạng chuẩn Hecmit, cách tìm ma trận đơn môđula tương ứng và đưa
ra các ví dụ số minh họa cách làm.
Chương 2 "Phương trình Đi-ô-phăng tuyến tính" đề cập tới phương
trình Đi-ô-phăng tuyến tính của hai hay nhiều biến số. Chương này trình
bày nhiều định nghĩa và định lý cần thiết cho việc tìm tất cả các nghiệm
nguyên của phương trình Đi-ô-phăng tuyến tính. Đó là khái niệm ước
chung lớn nhất, thuật toán Ơ-clít, thuật toán Ơ-clít mở rộng. Đưa ra các
ví dụ số và các tính toán chi tiết giúp hiểu rõ hơn các định nghĩa và định
lý. Cuối chương đề cập đến một số ví dụ ứng dụng thực tế của phương
trình Đi-ô-phăng tuyến tính.
Chương 3 "Hệ phương trình Đi-ô-phăng tuyến tính" đề cập tới hệ
phương trình Đi-ô-phăng tuyến tính và các điều kiện cần và đủ để hệ có
nghiệm nguyên, dựa trên các kết quả lý thuyết về dạng chuẩn Hecmit và
ma trận đơn môđula đã nêu ở Chương 1. Sau đó, trình bày thuật toán
Hecmit tìm tất cả các nghiệm nguyên của hệ phương trình Đi-ô-phăng
tuyến tính. Cuối chương đề cập tới nghiệm nguyên dương của hệ phương
trình Đi-ô-phăng tuyến tính và bài toán qui hoạch tuyến tính Đi-ô-phăng.
Các thuật toán tìm nghiệm nguyên hay nguyên dương đều có kèm theo
3


các ví dụ số để minh họa.
Mặc dù đã có nhiều cố gắng, nhưng do thời gian và kiến thức còn hạn
chế nên có thể luận văn này còn có những thiếu sót nhất định. Vì vậy, tác
giả mong muốn được tiếp thu và chân thành cám ơn những ý kiến đóng
góp của các thầy cô và các bạn để luận văn được hoàn thiện hơn.
Nhân dịp này, tác giả luận văn xin bày tỏ lòng kính trọng và biết ơn
sâu sắc tới GS.TS. Trần Vũ Thiệu đã hướng dẫn tận tình tác giả hoàn
thành luận văn này. Tác giả cũng xin bày tỏ lòng biết ơn chân thành đến
các thầy phản biện đã dành thời gian đọc và đóng góp nhiều ý kiến quý

báu cho tác giả. Tác giả cũng xin trân trọng cảm ơn ban lãnh đạo khoa
Toán – Cơ – Tin học, khoa Sau đại học và các thầy cô giáo trường Đại học
Khoa học Tự nhiên, Đại học Quốc gia Hà Nội đã trang bị kiến thức, tạo
điều kiện thuận lợi cho tác giả trong suốt những năm tháng tác giả học
tập tại trường. Cuối cùng, tác giả xin cảm ơn gia đình, bạn bè và đồng
nghiệp đã quan tâm, động viên và chia sẻ để tác giả hoàn thành luận văn
của mình.
Hà Nội, ngày 20 tháng 11 năm 2014
Tác giả luận văn

Vũ Tuấn Anh

4


Chương 1

Kiến thức chuẩn bị
Chương này nhắc lại khái niệm về dạng chuẩn Hecmit và ma trận đơn
môđula có liên quan tới việc giải hệ phương trình Đi-ô-phăng tuyến tính.
Mục 1.1 nói về dạng chuẩn Hecmit: mọi ma trận với các phần tử hữu tỉ và
có hạng bằng số hàng của ma trận đều đưa được về dạng chuẩn Hecmit,
dạng chuẩn này là duy nhất. Mục 1.2 nói tới ma trận đơn môđula: với ma
trận hữu tỉ A có hạng bằng số hàng luôn tồn tại ma trận đơn môđula U
sao cho AU là dạng chuẩn Hecmit của A. Nội dung của chương được tham
khảo từ các tài liệu [3] và [4].

1.1

Dạng chuẩn Hecmit


Định nghĩa 1.1. Một ma trận cấp m × n có hạng bằng số hàng của ma
trận được gọi là ở dạng chuẩn Hecmit (Hecmit normal form) nếu:

• Ma trận có dạng [BO], trong đó B là ma trận cấp m × m có nghịch
đảo;
• B có dạng tam giác dưới;
• Các phần tử đường chéo của B dương;
• Mọi phần tử khác của B không âm;
5


Chương 1. Kiến thức chuẩn bị
• Phần tử lớn nhất ở mỗi hàng của B là duy nhất và nằm trên đường
chéo chính của B , còn O là ma trận không cấp m × (n − m).
Sau đây là một ví dụ về ma trận ở dạng chuẩn Hecmit:

2 0 0 0 0
3 4 0 0 0 .
1 0 3 0 0
Định nghĩa 1.2. Các phép toán sau về ma trận được gọi là phép toán cột
sơ cấp (elementary column operations):
a) Đổi chỗ hai cột;
b) Nhân một cột với −1 (tức đổi dấu một cột);
c) Thêm một bội nguyên của một cột vào một cột khác.
Định lý 1.1. (Dạng chuẩn Hecmit, [4] Định lý 4.1, tr. 45). Mọi ma trận
với các phần tử hữu tỉ có hạng bằng số hàng của ma trận có thể đưa về
dạng chuẩn Hecmit bằng cách thực hiện các phép toán cột sơ cấp.
Chứng minh. Giả sử A là một ma trận hữu tỉ với hạng bằng số hàng.
Không giảm tổng quát, có thể xem A là ma trận với các phần tử nguyên.

Giả sử ta đã biến đổi A (bằng cách thực hiện các phép toán cột sơ cấp)
về dạng

B O
C D ,
trong đó B có dạng tam giác dưới và mọi phần tử ở trên đường chéo là số
dương. Bây giờ dùng các phép toán cột sơ cấp, ta có thể biến đổi D để cho
hàng đầu của D[d11 d12 ...d1k ] không âm và sao cho tổng d11 + d12 + ... + d1k
nhỏ nhất có thể. Ta giả thiết d11 ≥ d12 ≥ ... ≥ d1k . Khi đó d11 > 0 (do A
có hạng bằng số hàng). Hơn nữa, nếu d12 > 0 thì bằng cách lấy cột thứ
nhất của D trừ cột thứ hai của D, hàng thứ nhất sẽ có tổng nhỏ hơn, trái
với giả thiết vừa nêu. Do đó d12 = ... = d1k = 0 và ta nhận được ma trận
tam giác dưới lớn hơn.
6


Chương 1. Kiến thức chuẩn bị
Bằng cách lặp lại thao tác này, cuối cùng ma trận A sẽ được biến đổi
thành [BO] với B = (bij ) là ma trận tam giác dưới với đường chéo dương.
Tiếp theo, ta biến đổi ma trận B như sau. Với mỗi hàng i = 2, ..., m
(m × m là cấp của B ), thực hiện động tác sau với mỗi cột j = 1, ..., i − 1:
thêm một bội nguyên của cột i vào cột j sao cho phần tử (i, j) không âm
và nhỏ hơn bii .
Như vậy, thao tác trên đây được áp dụng theo thứ tự: (i, j) = (2, 1), (3, 1),

(3, 2), (4, 1), (4, 2), (4, 3), ... Có thể thấy rằng sau một số phép biến đổi cột
sơ cấp này, ma trận A sẽ đưa được về dạng chuẩn Hecmit.
Ví dụ 1.1. Đưa ma trận sau về dạng chuẩn Hecmit

2 1 4

A = −5 2 6 .
Ta có B = ∅, D = A. Ta biến đổi D như sau: cột 3 trừ hai lần cột 1,
cột 1 trừ hai lần cột 2 và đổi chỗ hai cột 1 và 2 ta lần lượt nhận được các
ma trận

2 1 0
0 1 0
1 0 0
A → −5 2 16 → −9 2 16 → 2 −9 16 .
Tiếp đó, nhân cột 2 với −1, cột 3 trừ cột 2, cột 2 trừ cột 3 và cột 3 trừ
ba lần cột 2, ta nhận được các ma trận

1 0 0
1 0 0
1 0 0
1 0 0
→ 2 9 16 → 2 9 7 → 2 2 7 → 2 2 1 .
Tiếp theo, cột 2 trừ hai lần cột 3 và đổi chỗ hai cột 2, 3 ta được ma
trận

1 0 0
1 0 0
1 0
→ 2 0 1 → 2 1 0 ⇒ B = 2 1 , (C = D = ∅).
Cuối cùng, ta biến đổi B như sau: với i = 2, lấy cột j = i − 1 = 1 trừ
hai lần cột i = 2, ta được ma trận B không âm, dạng tam giác dưới, không
suy biến và mỗi hàng của B có duy nhất một phần tử lớn nhất nằm trên
7



Chương 1. Kiến thức chuẩn bị
đường chéo chính. Từ đó nhận được dạng chuẩn Hecmit duy nhất [BO]
của ma trận A ban đầu:

1 0
B= 0 1

và [BO] =

1 0 0
0 1 0 .

Trước khi nêu hệ quả của Định lý 1.1, ta hãy nhắc lại các khái niệm
nhóm (group) và dàn (lattice).
Định nghĩa 1.3. Tập hợp G ⊂ Rn gọi là một nhóm (cộng tính) nếu có
(i) θ ∈ G (nhóm chứa phần tử không);
(ii) Nếu x, y ∈ G thì x + y ∈ G và −x ∈ G (tổng các phần tử thuộc
nhóm và phần tử đối của một phần tử thuộc nhóm phải là một phần
tử thuộc nhóm).
Ta nói nhóm sinh bởi các véctơ a1 , a2 , ..., am ∈ Rn nếu

G = {λ1 a1 + ... + λm am |λ1 , ..., λm ∈ Z}.
Định nghĩa 1.4. Nhóm G được gọi là một dàn nếu G sinh bởi các véctơ
độc lập tuyến tính. Khi đó, tập hợp các véctơ này được gọi là một cơ sở
(basic) của dàn.
Nhận xét 1.1. Nếu ma trận B nhận được từ ma trận A bằng các phép
toán cột sơ cấp thì các cột của B và các cột của A sinh ra cùng một nhóm.
Sau đây là một hệ quả đáng chú ý của Định lý 1.1.
Hệ quả 1.1. Nếu a1 , a2 , ..., am là các véctơ hữu tỉ thì nhóm sinh bởi


a1 , a2 , ..., am là một dàn, nghĩa là nhóm đó sinh bởi các véctơ độc lập tuyến
tính.
Chứng minh. Ta có thể giả thiết rằng a1 , a2 , ..., am sinh ra toàn bộ không
gian Rn , vì nếu trái lại ta có thể áp dụng phép biến đổi tuyến tính đối
với không gian có số chiều thấp hơn. Giả sử A là ma trận với các cột

a1 , a2 , ..., am , do dó A có hạng bằng số hàng của A. Giả sử [BO] là dạng
8


Chương 1. Kiến thức chuẩn bị
chuẩn Hecmit của A. Khi đó, các cột của B là các véctơ độc lập tuyến tính.
Theo Nhận xét 1.1, các véctơ này sinh ra cùng một nhóm như a1 , a2 , ..., am .
Do các cột của B độc lập tuyến tính nên theo định nghĩa, nhóm này là
một dàn.
Như vậy nếu a1 , a2 , ..., am là các véctơ hữu tỉ thì ta có thể nói tới dàn
sinh bởi a1 , a2 , ..., am . Định lý sau cho thấy rằng mọi ma trận hữu tỉ với
hạng bằng số hàng có dạng chuẩn Hecmit duy nhất. Vì thế, ta có thể nói
về dạng chuẩn Hecmit của một ma trận.
Định lý 1.2. ([4] Định lý 4.2, tr. 48). Giả sử A và A’ là hai ma trận hữu
tỉ với hạng bằng số hàng và có dạng chuẩn Hecmit tương ứng là [BO] và

[B O]. Khi đó, các cột của A và các cột của A’ sinh ra cùng một dàn như
nhau khi và chỉ khi B = B .
Chứng minh. Điều kiện đủ là hiển nhiên, bởi vì các cột của B và A sinh
ra cùng một dàn và cũng như vậy đối với B và A .
Để chứng minh điều kiện cần, ta giả sử các cột của A và các cột của

A cùng sinh ra dàn L. Khi đó, các cột của B và các cột của B cũng sinh
ra dàn L, bởi vì B và B nhận được từ A và A bằng các phép toán cột sơ

cấp. Chẳng hạn, B = (bij ) và B = (bij ). Giả sử B = B . Ta chọn bij = bij
với i nhỏ nhất có thể. Không giảm tổng quát có thể xem như bij ≥ bij . Ký
hiệu bj và bj lần lượt là cột j của B và B . Khi đó, bj ∈ L và bj ∈ L, do đó
bj − bj ∈ L. Điều này chứng tỏ bj − bj là một tổ hợp tuyến tính nguyên của
các cột của B . Theo cách chọn hàng i, véctơ bj − bj có i − 1 thành phần
đầu bằng 0. Vì thế, do B có dạng tam giác dưới nên bj − bj là tổ hợp tuyến
tính nguyên của các cột với chỉ số i, ..., n. Vì thế, bij − bij là bội nguyên
của bii . Nhưng điều này mâu thuẫn với 0 < |bij − bij | < bii (vì nếu j = i
thì 0 < bii < bii và nếu j < i thì 0 ≤ bij < bii và 0 ≤ bij < bii ≤ bii ).
Hệ quả 1.2. Mọi ma trận hữu tỉ với hạng bằng số hàng có duy nhất một
dạng chuẩn Hecmit.
Chứng minh. Áp dụng Định lý 1.2 với A = A .
9


Chương 1. Kiến thức chuẩn bị
Nhận xét 1.2. Nếu b11 , ..., bmm là các phần tử đường chéo của dạng chuẩn
Hecmit [BO] của A thì với mọi j = 1, ..., m tích số b11 × ... × bjj bằng
ước chung lớn nhất của các định thức con cấp j của j hàng đầu của A
(do ước này bất biến đối với các phép toán cột sơ cấp). Điều này cho một
cách khác để thấy rằng đường chéo chính trong dạng chuẩn Hecmit là duy
nhất.

1.2

Ma trận đơn môđula

Các phép toán cột sơ cấp của ma trận còn có thể được mô tả bởi cái
gọi là các ma trận đơn môđula. Trước hết, ta chú ý là ([3], tr.17) mỗi phép
toán cột sơ cấp trên ma trận A cấp m × n đều có thể thực hiện được bằng

cách nhân bên phải A với một ma trận sơ cấp tương ứng E cấp n × n, cụ
thể E là ma trận thu được bằng cách áp dụng cùng phép toán đó trên ma
trận đơn vị cấp n × n.
Cho A là ma trận m hàng, n cột (m ≤ n) và In là ma trận đơn vị cấp

n × n. Khi đó:
a) Phép đổi chỗ hai cột i và j của A tương đương với phép nhân A với
ma trận nhận được từ In bằng cách đổi chỗ hai cột i và j.
Ví dụ 1.2. Phép đổi chỗ hai cột 2 và 3 của ma trận A như sau:

1 0 0
1 2 3
1 3 2
1 2 3
A= 4 5 6 → 4 6 5 = 4 5 6 × 0 0 1 .
0 1 0
b) Phép nhân cột j của A với −1 tương đương với phép nhân A với
ma trận nhận được từ In bằng cách đổi dấu cột j.
Ví dụ 1.3. Phép nhân cột 2 của ma trận A với −1 như sau:

1 0 0
1 2 3
1 −2 3
1 2 3
A = 4 5 6 → 4 −5 6 = 4 5 6 × 0 −1 0 .
0 0 1
c) Thêm bội nguyên k của cột i vào cột j của A tương đương với nhân

A với ma trận nhận được từ In bằng cách thêm bội nguyên k của cột i
vào cột j.

10


Chương 1. Kiến thức chuẩn bị
Ví dụ 1.4. Thêm bội −3 của cột 1 vào cột 3 của ma trận A như sau:

1 0 −3
1 2 3
1 2 0
1 2 3
A = 4 5 6 → 4 5 −6 = 4 5 6 × 0 1 0 .
0 0 1
Định nghĩa 1.5. Cho U là một ma trận vuông không suy biến. Khi đó,

U được gọi là ma trận đơn môđula (unimodular matrix) nếu U nguyên và
có định thức bằng ±1.
Cũng có thể mở rộng khái niệm đơn môđula cho cả các ma trận suy
biến. Các ma trận đơn môđula đã được các nhà toán học Smith (1861),
Frobenius (1879-1880), Veblen và Franklin (1921-1922) nghiên cứu.
Sau đây là một số tính chất đáng chú ý của ma trận đơn môđula.
Định lý 1.3. ([4] Định lý 4.3, tr. 49). Các điều sau tương đương đối với
mọi ma trận hữu tỉ không suy biến U cấp n × n:
(i) U là đơn môđula;
(ii) U −1 là đơn môđula;
(iii) Dàn sinh bởi các cột của U là Zn (không gian véctơ nguyên n chiều);
(iv) Ma trận đơn vị là dạng chuẩn Hecmit của U;
(v) U nhận được từ ma trận đơn vị bằng các phép toán cột sơ cấp.
Chứng minh. (i) ⇒ (ii) : do det(U −1 ) = (detU )−1 = ±1 và do mỗi phần
tử của U −1 bằng một định thức con của U nên là số nguyên. Tương tự,


(ii) ⇒ (i).
Sự tương đương của (iii), (iv) và (v) được suy ra trực tiếp từ Định
lý 1.2. Quan hệ (v) ⇒ (i) là hiển nhiên, bởi vì các phép toán cột sơ cấp
không làm thay đổi tính nguyên và giá trị định thức (không kể sai khác
dấu) của ma trận. Cũng vậy, dễ dàng thấy (i) ⇒ (v): nếu B là dạng chuẩn
Hecmit của U thì B nguyên và |detB| = |detU | = 1. Vì thế B = I .
11


Chương 1. Kiến thức chuẩn bị
Hệ quả 1.3. Cho A và A là hai ma trận không suy biến (cùng cấp). Khi
đó, các điều sau tương đương:
(i) Các cột của A và các cột của A’ sinh ra cùng một dàn;
(ii) A nhận được từ A bằng các phép toán cột sơ cấp;
(iii) A = AU với ma trận đơn môđula U nào đó (tức A−1 A đơn môđula).
Chứng minh. Trực tiếp suy từ các Định lý 1.2 và 1.3.
Hệ quả 1.4. Với mọi ma trận hữu tỉ A có hạng bằng số hàng, tồn tại ma
trận đơn môđula U sao cho AU là dạng chuẩn Hecmit của A. Nếu A không
suy biến thì U là duy nhất.
Chứng minh. Trực tiếp suy từ Hệ quả 1.2 và Định lý 1.3.
Ma trận U nêu trong Hệ quả 1.4 sẽ được sử dụng ở Chương 3 để tìm
nghiệm nguyên của hệ phương trình Đi-ô-phăng tuyến tính. Để tìm U , ta
xuất phát từ ma trận đơn vị In cấp n × n (n số cột của A) và thực hiện
các phép toán cột sơ cấp giống hệt các phép toán đã dùng để đưa A về
dạng chuẩn Hecmit.
Ví dụ 1.5. Xét ma trận A cho ở Ví dụ 1.1.
Khi đưa A về dạng chuẩn Hecmit ta đã thực hiện lần lượt các phép
toán cột sơ cấp sau:
+ Cột 3 trừ hai lần cột 1, cột 1 trừ hai lần cột 2 và đổi chỗ hai cột 1,
2.

+ Đổi dấu cột 2, cột 3 trừ cột 2, cột 2 trừ cột 3 và cột 3 trừ ba lần cột
2.
+ Cột 2 trừ hai lần cột 3 và đổi chỗ hai cột 2, 3.
+ Cuối cùng, lấy cột 1 trừ hai lần cột 2.
12


Chương 1. Kiến thức chuẩn bị
Thực hiện dãy phép toán kể trên, bắt đầu từ ma trận đơn vị In . Kết
quả ta sẽ nhận được ma trận đơn môđula U và AU là dạng chuẩn Hecmit
của A:

1 0 0
0 1 0
0 0 1



1 0 −2
0 1 0
0 0 1

0 −1 −2
1 2 0
0 0 1



0 −1 −1
1 2 −2

0 0 1

In =





0 2 −1
1 32 −14
0 −9
4





1 0 −2
−2 1 0
0 0 1



0 −1
2
1 −14 32
0 4 −9

0 0 −1
1 4 −2

0 −1 1






0 1 −2
1 −2 0 ,
0 0 1
0 0 −1
1 4 −14 ,
0 −1 4

2 −1
2
29 −14 32
−8
4 −9

= U.

Có thể thấy U nguyên, |U | = 1 và dạng chuẩn Hecmit của A là

2 −1 2
2 1 4
AU = −5 2 6 × 29 −14 32
−8 4 −9

13


1 0 0
= 0 1 0 .


Chương 2

Phương trình
Đi-ô-phăng tuyến tính
Chương này trình bày thuật toán Ơ-clít tìm ước chung lớn nhất của
các số nguyên dương và đề cập tới phương trình Đi-ô-phăng tuyến tính
hai hay nhiều biến. Nêu điều kiện (cần và đủ) tồn tại nghiệm nguyên và
thuật toán tìm nghiệm nguyên của phương trình. Cuối chương, xét một số
ví dụ áp dụng. Nội dung của chương được tham khảo chủ yếu từ các tài
liệu [3], [4] và [5].

2.1

Ước chung lớn nhất

Ta nhắc lại khái niệm ước chung lớn nhất của hai số nguyên dương và
một số tính chất cơ bản.
Định nghĩa 2.1. Cho hai số nguyên a, b > 0. Ta định nghĩa ước chung
lớn nhất (greatest common divisor) của a và b là số nguyên dương lớn nhất

c mà cả a và b đều chia hết cho c. Ước chung lớn nhất được ký hiệu là
(a, b) = c hoặc gcd(a, b) = c. Ta sẽ sử dụng (a, b) để chỉ ước chung lớn
nhất của a và b.
Ta cũng dùng ký hiệu a|b để chỉ a là ước số của b hay b chia hết cho a.
Ví dụ, 2|6 và 3|6 có nghĩa là 2 và 3 là ước của 6 hay 6 chia hết cho 2 và 3.

Ví dụ 2.1. Hãy tìm ước chung lớn nhất của 8 và 20.

14


Chương 2. Phương trình Đi-ô-phăng tuyến tính
Ta thấy các ước của 8 là ±1, ±2, ±4, ±8 và các ước của 20 là ±1, ±2,

±4, ±5, ±10. Từ đó, ước chung của 8 và 20 là ±1, ±2, ±4. Vì thế, ước
chung lớn nhất của 8 và 20 là 4. Ta viết (8, 20) = 4.
Định nghĩa 2.2. Nếu ước chung lớn nhất (a, b) = 1 thì ta nói hai số
nguyên dương a và b là nguyên tố cùng nhau (relatively prime).

a b
Định lý 2.1. Nếu a, b nguyên dương và (a, b) = d thì ( , ) = 1.
d d
Ví dụ sau minh họa cho định lý trên.
Ví dụ 2.2. Xét hai số 20 và 45.
Bằng cách phân tích ra thừa số ta có 20 = 22 ×5 và 45 = 32 ×5. Từ đó,
ta tìm được ước chung lớn nhất của 20 và 45 bằng 5, tức là (20, 45) = 5.
Ta thấy

(

20 45
, ) = (4, 9) = 1.
5 5

Định lý 2.2. Cho a, b, c là các số nguyên dương. Khi đó (a+cb, b) = (a, b).
Ví dụ 2.3. Xét ba số: a = 110, b = 44, c = 22.

Theo Định lý 2.2, ta sẽ có

(110 + 22 × 44, 44) = (110, 44) hay (1078, 44) = (110, 44).
Để kiểm tra đẳng thức này, ta cần tính (1078, 44) và (110, 44). Ta thấy
44 = 22 × 11, 110 = 2 × 5 × 11 và 1078 = 2 × 72 × 11.
Từ đó suy ra (1078, 44) = (110, 44) = 22. Kết quả kiểm tra đúng.
Định nghĩa 2.3. Cho a và b là hai số nguyên dương. Tổ hợp tuyến tính
(linear combination) của a và b là tổng có dạng ax + by, trong đó x, y là
số nguyên.
Định lý 2.3. Nếu a, b là các số nguyên dương và c là ước số chung của a
và b thì c cũng là ước số của ma + nb với m, n là các số nguyên, nghĩa là

(c|a và c|b) ⇒ c|(ma + nb).

15


Chương 2. Phương trình Đi-ô-phăng tuyến tính
Ví dụ 2.4. Giả sử a = 21, b = 39, và c = 3.
Ta có 21 = 3 × 7 và 39 = 3 × 13. Vì thế, 21 và 39 chia hết cho 3. Giả
sử m = 7, n = −3. Khi đó

7 × 21 − 3 × 39 = 147 − 117 = 30.
Rõ ràng 3 là ước của 30, vì 30 = 10 × 3.
Định lý 2.4. Cho hai số nguyên a, b > 0. Khi đó d = (a, b) là số nguyên
dương nhỏ nhất biểu diễn được dưới dạng ax + by với x, y nguyên.
Ví dụ 2.5. Giả sử a = 51 và b = 187.
Ta thấy 51 = 3 × 17 và 187 = 11 × 17. Từ đó (51, 187) = 17. Nếu chọn

x = 4, y = −1, ta có

51 × 4 − 187 × 1 = 204 − 187 = 17 = (187, 51).
Định lý 2.5. Nếu a, b là các số nguyên dương thì tập hợp các tổ hợp tuyến
tính của a và b trùng với tập các bội nguyên của (a, b).
Ví dụ 2.6. Giả sử a = 52, b = 117.
Ta thấy 52 = 22 × 13 và 117 = 32 × 13.
Do đó (52, 117) = 13. Với bất kỳ x, y ∈ Z tìm được số nguyên k
nghiệm đúng phương trình 52x + 117y = 13k. Tìm x và y khi k = 2,
tức là x, y thỏa mãn 52x + 117y = 13 × 2 = 26. Chia cả hai vế cho 13,
phương trình rút gọn còn 4x + 9y = 2. Ta tìm được x = 5 và y = −2, vì

4 × 5 − 9 × 2 = 20 − 18 = 2.
Định nghĩa 2.4. Ta mở rộng định nghĩa ước chung lớn nhất cho n số
nguyên dương với n ≥ 2. Xét n số nguyên dương. Ta định nghĩa ước chung
lớn nhất của chúng là số lớn nhất trong các ước chung của n số đó và ký
hiệu là (a1 , a2 , ..., an ).
Ví dụ 2.7. Có thể thấy (2, 6, 14) = 2 và (7, 21, 49) = 7.
Tuy nhiên, đôi khi ta gặp nhiều hơn ba số nguyên dương hoặc nhiều số
phức tạp mà ta không thể dễ dàng tìm được ước chung của chúng. Trong
những trường hợp như thế, ta có thể dùng định lý sau đây.
16


Chương 2. Phương trình Đi-ô-phăng tuyến tính
Định lý 2.6. Nếu a1 , a2 , ..., an là các số nguyên dương thì

(a1 , a2 , ..., an−1 , an ) = (a1 , a2 , ..., (an−1 , an )).
Ví dụ 2.8. Hãy tìm ước chung lớn nhất của 96, 405, 693 và 1989.
Phân tích các số nguyên ra thừa số và dùng Định lý 2.6, ta thấy

96 = 25 × 3, 405 = 34 × 5, 693 = 32 × 7 × 11, 1989 = 32 × 13 × 17.

(96, 405, 693, 1989) = (96, 405, (693, 1989))
= (96, 405, 9)
= (96, (405, 9))
= (96, 9) = 3.
Bổ đề 2.1. Nếu c và d là hai số nguyên dương và c = dq + r, với q và r
nguyên dương thì (c, d) = (r, d).
Ví dụ 2.9. Xét đẳng thức

48 = 9 × 5 + 3.
Nếu phân tích đẳng thức này theo Bổ đề 2.1, ta thấy

c = 48, d = 9, q = 5 và r = 3.
Ta có 48 = 24 × 3 và 9 = 32 . Áp dụng Bổ đề 2.1 ta được
(48, 9) = (3, 9) = 3.

2.2

Thuật toán Ơ-clít mở rộng

Mục này sẽ đề cập tới thuật toán Ơ–clít quen thuộc để tìm ước chung
lớn nhất của hai số nguyên dương. Đó là thuật toán cực kỳ nhanh để tìm
ước chung lớn nhất.
Định lý 2.7. (Thuật toán Ơ-clít) Để tìm ước chung lớn nhất của hai số
nguyên dương a và b ta đặt r−1 = a, r0 = b, rồi tính liên tiếp thương qi+1
và số dư ri+1 theo

ri−1 = ri qi+1 + ri+1
17



Chương 2. Phương trình Đi-ô-phăng tuyến tính
với i = 0, 1, 2, ... cho tới khi gặp số dư rn+1 = 0. Khi đó, số dư khác không
cuối cùng rn sẽ là ước chung lớn nhất của a và b.
Chứng minh. Thuật toán thực hiện như sau:

a = b × q1 + r1 , 0 ≤ r1 < b,
b = r1 × q2 + r2 , 0 ≤ r2 < r1 ,
r1 = r2 × q3 + r3 , 0 ≤ r3 < r2 ,
r2 = r3 × q4 + r4 , 0 ≤ r4 < r3 ,
...
ri−1 = ri × qr+1 + ri+1 , 0 ≤ ri+1 < ri ,
...
rn−3 = rn−2 × qn−1 + rn−1 , 0 ≤ rn−1 < rn−2 ,
rn−2 = rn−1 × qn + rn , 0 ≤ rn < rn−1 ,
rn−1 = rn × qn+1 + 0.
Từ đó suy ra rn > 0 là ước chung lớn nhất của a và b.
Ta sẽ giải thích vì sao số dư khác không cuối cùng rn là ước chung lớn
nhất của a và b?
Từ dòng cuối cho thấy rn là ước của rn−1 , do đó (rn , rn−1 ) = rn . Tiếp
theo, từ dòng trước dòng cuối cho thấy rn là ước của rn−2 , vì rn là ước
của rn−1 và rn . Theo Bổ đề 2.1, rn = (rn , rn−1 ) = (rn−1 , rn−2 ). Chuyển lên
dòng trước đó ta thấy rn là ước của rn−3 , vì rn là ước của rn−2 và rn−1 .
Lại theo Bổ đề 2.1, rn = (rn−1 , rn−2 ) = (rn−2 , rn−3 ). Ở dòng giữa, bằng
lập luận tương tự, ta có thể thấy

rn = (rn , rn−1 ) = (rn−1 , rn−2 ) = (rn−2 , rn−3 ) = ... = (ri−1 , ri ) = (ri , ri+1 ).
Chuyển lên trên từng dòng một, khi tới dòng thứ hai ta đã biết rn là
ước của r2 và r1 và

rn = (rn , rn−1 ) = (rn−1 , rn−2 ) = (rn−2 , rn−3 ) = ... = (r3 , r2 ) = (r2 , r1 ).

18


Chương 2. Phương trình Đi-ô-phăng tuyến tính
Dòng thứ hai b = r1 × q2 + r2 nên rn là ước của b và theo Bổ đề 2.1,
ta có

rn = (rn , rn−1 ) = (rn−1 , rn−2 ) = (rn−2 , rn−3 ) = ... = (r2 , r1 ) = (r1 , b).
Cuối cùng do rn là ước của r1 và b nên từ dòng đầu a = b × q1 + r1
cho thấy rn cũng là ước của a và theo và Bổ đề 2.1, ta có

rn = (rn , rn−1 ) = (rn−1 , rn−2 ) = (rn−2 , rn−3 ) = ... = (r2 , r1 ) = (r1 , b) = (a, b).
Đến đây, ta biết được rằng số dư khác 0 cuối cùng sẽ là ước chung
lớn nhất của a và b, nhưng bây giờ ta cần trả lời câu hỏi làm sao ta biết
được luôn có một số dư bằng 0. Khi tìm thương số, ta thực hiện phép chia

a = b × q + r với số dư r sẽ ở giữa 0 và b − 1. Điều này là rõ ràng, bởi vì
nếu r ≥ b thì ta có thể thêm 1 vào thương q và bớt b từ r. Vì vậy số dư sẽ
giảm dần:
b = r0 > r1 > r2 > ...
Do mọi số dư đều lớn hơn hoặc bằng 0 nên ta có dãy số nguyên không
âm giảm dần. Rốt cuộc ta có số dư bằng 0. Rõ ràng, ta sẽ gặp số dư 0
sau nhiều nhất b lần thực hiện phép chia. Định lý được chứng minh đầy
đủ.
Ví dụ 2.10. Ta minh họa thuật toán Ơ-clít qua việc tìm (246, 699).
Lần lượt thực hiện các phép chia sau:

699 = 246 × 2 + 207
246 = 207 × 1 + 39
207 = 39 × 5 + 12

39 = 12 × 3 + 3
12 = 3 × 4 + 0.
Thuật toán Ơ-clít nói rằng ước chung lớn nhất của hai số là số dư khác
0 cuối cùng. Ở ví dụ trên, số dư khác 0 cuối cùng là 3 nên (246, 699) = 3.
19


Chương 2. Phương trình Đi-ô-phăng tuyến tính
Nếu muốn tìm ước chung lớn nhất của nhiều hơn hai số thì ta có thể
sử dụng thuật toán Ơ-clít, kết hợp với Định lý 2.6.
Ví dụ 2.11. Sử dụng thuật toán Ơ-clít tìm (33, 176, 275, 352, 539, 1331).

• Trước hết tìm (539, 1331) bằng cách sử dụng thuật toán Ơ-clít. Ta

1331 = 539 × 2 + 253
539 = 253 × 2 + 33
253 = 33 × 7 + 22
33 = 22 × 1 + 11
22 = 11 × 2 + 0.
Số dư khác 0 cuối cùng là 11. Vì thế, (539, 1331) = 11.

• Tiếp theo là tìm (33, 176, 275, 352, 11) = (33, 176, 275, (352, 11)).
Ta có 352 = 11 × 32 + 0. Số dư bằng 0, vì thế (352, 11) = 11.
• Tiếp theo ta tìm (33, 176, 275, 11) = (33, 176, (275, 11)). Ta có
275 = 11 × 25 + 0, tức 275 là bội của 11 và (275, 11) = 11.
• Tiếp theo tìm (33, 176, 11) = (33, (176, 11)). Do 176 = 11 × 16 + 0
nên (176, 11) = 11.
• Cuối cùng, tìm (33, 11) = (11 × 3, 11) = 11. Kết quả là (33, 176,
275, 352, 539, 1331) = 11.
Ta đã biết cách tìm ước chung lớn nhất của hai số nguyên dương bằng

thuật toán Ơ-clít. Giả sử rn = (a, b), a > b, rn−2 = rn−1 × qn + rn và

rn−1 = rn × qn+1 + 0.
Khi ta muốn viết ước chung lớn nhất của hai số nguyên dương dưới
dạng một tổ hợp tuyến tính của những số nguyên dương này, ta sử dụng
quy trình sau:
20


Chương 2. Phương trình Đi-ô-phăng tuyến tính
Đẳng thức (a, b) = rn = rn−2 − rn−1 × qn cho thấy (a, b) là một tổ hợp
tuyến tính của rn−2 và rn−1 . Từ đẳng thức trước đó rn−3 = rn−2 × qn−1 +

rn−1 suy ra
rn−1 = rn−3 − rn−2 × qn−1 .
Vì vậy, ta nhận được

rn = rn−2 − (rn−3 − rn−2 × qn−1 ) × qn
= rn−2 (1 + qn−1 × qn ) − qn × rn−3 .
Biểu thức cuối cho thấy rn là một tổ hợp tuyến tính của rn−2 và rn−3 .
Ta tiếp tục quá trình "biểu diễn (a, b) như tổ hợp tuyến tính của mỗi
cặp số dư" cho tới khi tìm được (a, b) như tổ hợp tuyến tính của a và b.
Với cặp số dư ri và ri−1 ta có biểu diễn (a, b) = k × ri + m × ri−1 .
Do ri = ri−2 − ri−1 × qi nên ta có

(a, b) = k × (ri−2 − ri−1 × qi ) + m × ri−1 .
= k × ri−2 + (m − k × qi )ri−1 .
Tiếp tục cho tới đẳng thức đầu a = b × q1 + r1 , ta sẽ tìm được (a, b)
như một tổ hợp tuyến tính của a và b. Định lý sau đưa ra phương pháp
quy nạp để tìm (a, b) dưới dạng một tổ hợp tuyến tính của a và b.

Định lý 2.8. Cho a, b là hai số nguyên dương. Khi đó

(a, b) = kn × a + mn × b
với kn và mn là số hạng thứ n của dãy số được xác định theo đệ quy bởi
k−1 = 1, m−1 = 0, k0 = 0, m0 = 1 và
ki = ki−2 − ki−1 × qi , mi = mi−2 − mi−1 × qi với i = 1, 2, ... , n;
trong đó qi là thương số của các phép chia trong thuật toán Ơ-clít, khi thuật
toán được dùng để tìm ước chung lớn nhất của a và b.
Chứng minh. Dùng quy nạp, ta sẽ chứng minh rằng

ri = ki × a + mi × b, i = −1, 0, 1, ..., n.
21

(2.1)


Chương 2. Phương trình Đi-ô-phăng tuyến tính
Với i = −1: r−1 = k−1 × a + m−1 × b = 1 × a + 0 × b = a.
Với i = 0: r0 = k0 × a + m0 × b = 0 × a + 1 × b = b.
Từ thuật toán Ơ-clít ta thấy đẳng thức (2.1) đúng với i = −1, 0.
Bây giờ giả sử rằng ri = ki × a + mi × b đúng với i = −1, 0, 1, . . . , p − 1.
Ở bước thứ p của thuật toán Ơ-clít, ta biết rp = rp−2 − rp−1 × qp (do

rp−2 = rp−1 × qp + rp ).
Theo giả thiết quy nạp và theo hệ thức đệ quy trong định lý, ta có
rp = (kp−2 × a + mp−2 × b) − (kp−1 × a + mp−1 × b) × qp
= (kp−2 − kp−1 × qp ) × a + (mp−2 − mp−1 × qp ) × b
= kp × a + mp × b.
Vậy đẳng thức (2.1) đúng với mọi i ≤ n. Do (a, b) = rn nên với i = n
ta có


(a, b) = rn = kn × a + mn × b.
Kết quả là ta có thể viết (a, b) như một tổ hợp tuyến tính của a và b.
Định lý được chứng minh đầy đủ.
Ví dụ 2.12. Tìm số nguyên x và y sao cho 161x + 1274y = (161, 1274).
Trước hết ta sử dụng thuật toán Ơ-clít để tìm (161, 1274). Ta có

1274 = 161 × 7 + 147,
161 = 147 × 1 + 14,
147 = 14 × 10 + 7,
14 = 7 × 2 + 0.
Số dư khác 0 cuối cùng là 7, vì thế (161, 1274) = 7. Bây giờ sử dụng
phép thay thế theo hướng ngược lại để tìm cách biểu diễn 7 như một tổ
hợp tuyến tính của 161 và 1274.

22


Chương 2. Phương trình Đi-ô-phăng tuyến tính
Ta có

7 = 147 − 14 × 10,
= 147 − (161 − 147) × 10,
= 11 × 147 − 161 × 10,
= 11 × (1274 − 161 × 7) − 161 × 10,
= −87 × 161 + 11 × 1274.
Kết luận: một nghiệm nguyên của phương trình

161x + 1274y = (161, 1274) = 7
là x = −87, y = 11 (Kiểm tra lại: 1274 × 11 − 161 × 87 = 14014 − 14007 =


7).

2.3

Phương trình Đi-ô-phăng tuyến tính

Định nghĩa 2.5. Phương trình Đi-ô-phăng là phương trình đa thức với
các hệ số nguyên và nghiệm của phương trình cũng là số nguyên hoặc số tự
nhiên. Phương trình Đi-ô-phăng cơ bản nhất là phương trình Đi-ô-phăng
tuyến tính. Ví dụ phương trình ax + by = c với a, b, c ∈ Z (Z là tập các
số nguyên).
Định lý 2.9. Cho a, b và c là các số nguyên với a và b không cùng bằng
0. Phương trình Đi-ô-phăng tuyến tính ax + by = c có nghiệm khi và chỉ
khi d = (a, b) là ước của c.
Chứng minh. (⇒) Giả sử x0 và y0 là một nghiệm. Khi đó ax0 + by0 = c.
Do d|a và d|b nên theo định lý 2.3 ta có d|(ax0 + by0 ), tức d là ước của c.
(⇐) Giả sử d|c. Khi đó c = d × k với k là số nguyên. Theo Định lý
2.4, có thể viết (a, b) như một tổ hợp tuyến tính của a và b. Do đó, tồn
tại u, v ∈ Z thỏa mãn d = a × u + b × v. Nhân hai vế với k ta được

c = d × k = a(u × k) + b(v × k). Chứng tỏ phương trình ax + by = c có
nghiệm x = u × k, y = v × k .
23


×