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

Về một số thuật toán số học và ứng dụng

53 536 1

Đ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 53
Dung lượng 1,46 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nhằm góp phần đẩy mạnh ứng dụng công nghệ thông tin vào đổi mới phương pháp giảng dạy và nghiên cứu toán học ở nhà trường phổ thông, mục tiêu của luận văn bước đầu tìm hiểu và giới thiệu

Trang 1

Bộ giáo dục và đào tạo

Trờng đại học Vinh

Trang 2

Bộ giáo dục và đào tạo

Trờng đại học Vinh

Ngời hớng dẫn khoa học PGS.TS Nguyễn Thành Quang

Vinh - 2006

Trang 3

Lời cảm ơn Luận văn đợc thực hiện và hoàn thành tại Trờng Đại học Vinh, dới sự hớng dẫn tận tình của PGS TS Nguyễn Thành Quang Nhân dịp này, tác giả xin bày tỏ lòng biết

ơn và kính trọng sâu sắc tới thầy giáo hớng dẫn PGS TS Nguyễn Thành Quang, ngời đã đặt ra phơng hớng nghiên cứu và hớng dẫn tác giả hoàn thành luận văn này.

Trong quá trình học tập và viết luận văn, tác giả đã nhận đợc sự giúp đỡ và dạy bảo tận tình của GS TS Nguyễn Quốc Thi, PGS TS Nguyễn Quý Dy, PGS TS Ngô

Sỹ Tùng, PGS TS Lê Quốc Hán, TS Mai Văn T, TS Chu Trọng Thanh và các thầy giáo trong chuyên ngành Đại số & Lí thuyết số, Khoa Toán và Khoa Đào tạo Sau đại học – Trờng Đại học Vinh Tác giả xin trân trọng cảm ơn sự giúp đỡ quý báu đó.

Tác giả xin chân thành cảm ơn học viên cao học toán khóa 12 về những trao

đổi bổ ích trong nhiều chứng minh chi tiết của luận văn

Tác giả xin chân thành cảm ơn Sở Giáo dục và Đào tạo Nghệ An, Phòng Giáo dục huyện Quỳnh Lu và Trờng THCS Quỳnh Hồng – Quỳnh Lu đã tận tình giúp đỡ

về tinh thần và vật chất để tác giả có thể hoàn thành luận văn này.

Tác giả xin chân thành cảm ơn các học viên cao học Khóa XXII Toán về những trao đổi bổ ích trong nhiều chứng minh chi tiết.

Luận văn không tránh khỏi nhiều thiếu sót, tác giả mong muốn nhận đợc sự giúp đỡ chỉ bảo của các thầy cô giáo và các bạn đồng nghiệp

Trang 4

Mở đầu

Ngày nay máy tính đã thâm nhập vào hầu hết các lĩnh vực khoa học và đời sống Nhiều chương trình ứng dụng đã được phát triển liên quan tới quản lý dự liệu, in ấn, đồ họa, xử lý ảnh… Riêng đối với ngành toán đã có những sản phẩm mang tính phổ dụng như Mathematica, Matlat, Maple… và nhiều chương trình chuyên dụng cho từng bộ môn toán học Những phần mềm trên giúp ích rất nhiều cho việc giảng dạy toán, học toán cũng như việc ứng dụng toán trong các ngành kỹ thuật, kinh tế và vì thế tại các nước phát triển chúng đã trở thành cẩm nang của nhiều sinh viên và các nhà khoa học Maple cho ta một công cụ tốt để triển khai các thuật toán có độ phức tạp cao mà không có mẹo mực thủ công nào có thể thay thế được Maple có đặc tính ưu việt là có ngôn ngữ câu lệnh rất giống với ngôn ngữ toán học thông thường, dễ sử dụng, đòi hỏi cấu hình của máy không lớn, đáp ứng nhu cầu tính toán của nhiều đối tượng

Maple là một hệ phần mềm chuyên dụng cho công việc tính toán bao gồm các tính toán thuần tuý bằng ký hiệu toán học, các tính toán số và các tính toán bằng đồ thị Sản phẩm này do Trường Đại học Tổng hợp Waterloo (Canada) và Trường Đại học kỹ thuật Zurich (ETZ) xây dựng và đưa vào thương mại đầu tiên năm

1985 Qua nhiều lần cải tiến Maple đã được phổ biến rộng rãi trên thế giới Maple đã tạo ra cho chúng ta cách tiếp cận mới với toán học sinh động và sáng tạo hơn

Nhằm góp phần đẩy mạnh ứng dụng công nghệ thông tin vào

đổi mới phương pháp giảng dạy và nghiên cứu toán học ở nhà trường phổ thông, mục tiêu của luận văn bước đầu tìm hiểu và giới thiệu về các thuật toán trong số học, sử dụng các phần mềm tin học để thực hiện một số tính toán cụ thể và tính toán hình thức Sau một thời gian tìm hiểu và sử dụng, chúng tôi quyết

định chọn phần mềm tính toán Maple để thực hiện một số tính toán về phương diện đại số và số học

Với những lý do trên, chúng tôi chọn hướng đề tài của luận

văn “Về một số thuật toán số học và ứng dụng” Cấu trúc của

luận văn gồm 3 chương cùng với phần mở đầu, kết luận và danh mục 10 tài liệu tham khảo

Chương 1, giới thiệu về một số kiến thức cơ sở về số học thuật toán Trong nhiều con đường khác nhau để đi vào số học,

ta có thể chọn con đường thuật toán: các định lý, khái niệm của

số học được trình bày cùng với các thuật toán xây dựng chúng, trong đó các thuật toán có kèm theo đánh giá sơ bộ về độ phức tạp Nội dung chủ yếu đề cập trong chương 1 là: Thuật toán, Độ phức tạp của thuật toán, Sơ lược về Maple

Trang 5

Lời cảm ơn Luận văn đợc thực hiện và hoàn thành tại Trờng Đại học Vinh, dới sự hớng dẫn tận tình của PGS TS Nguyễn Thành Quang Nhân dịp này, tác giả xin bày tỏ lòng biết

ơn và kính trọng sâu sắc tới thầy giáo hớng dẫn PGS TS Nguyễn Thành Quang, ngời đã đặt ra phơng hớng nghiên cứu và hớng dẫn tác giả hoàn thành luận văn này.

Trong quá trình học tập và viết luận văn, tác giả đã nhận đợc sự giúp đỡ và dạy bảo tận tình của GS TS Nguyễn Quốc Thi, PGS TS Nguyễn Quý Dy, PGS TS Ngô

Sỹ Tùng, PGS TS Lê Quốc Hán, TS Mai Văn T, TS Chu Trọng Thanh và các thầy giáo trong chuyên ngành Đại số & Lí thuyết số, Khoa Toán và Khoa Đào tạo Sau đại học – Trờng Đại học Vinh Tác giả xin trân trọng cảm ơn sự giúp đỡ quý báu đó.

Tác giả xin chân thành cảm ơn học viên cao học toán khóa 12 về những trao đổi bổ ích trong nhiều chứng minh chi tiết của luận văn

Tác giả xin chân thành cảm ơn Sở Giáo dục và Đào tạo Nghệ An, Phòng Giáo dục huyện Quỳnh Lu và Trờng THCS Quỳnh Hồng – Quỳnh Lu đã tận tình giúp đỡ về tinh thần

và vật chất để tác giả có thể hoàn thành luận văn này

Tác giả xin chân thành cảm ơn các học viên cao học Khóa XXII Toán về những trao

đổi bổ ích trong nhiều chứng minh chi tiết

Luận văn không tránh khỏi nhiều thiếu sót, tác giả mong muốn nhận đợc sự giúp đỡ chỉ bảo của các thầy cô giáo và các bạn đồng nghiệp

Trang 6

Mở đầu

Ngày nay máy tính đã thâm nhập vào hầu hết các lĩnh vực khoa học và đời sống Nhiều

ch-ơng trình ứng dụng đã đợc phát triển liên quan tới quản lý dự liệu, in ấn, đồ họa, xử lý ảnh Riêng…

đối với ngành toán đã có những sản phẩm mang tính phổ dụng nh Mathematica, Matlat, Maple và…nhiều chơng trình chuyên dụng cho từng bộ môn toán học Những phần mềm trên giúp ích rất nhiều cho việc giảng dạy toán, học toán cũng nh việc ứng dụng toán trong các ngành kỹ thuật, kinh tế và vì thế tại các nớc phát triển chúng đã trở thành cẩm nang của nhiều sinh viên và các nhà khoa học Maple cho ta một công cụ tốt để triển khai các thuật toán có độ phức tạp cao mà không có mẹo mực thủ công nào có thể thay thế đợc Maple có đặc tính u việt là có ngôn ngữ câu lệnh rất giống với ngôn ngữ toán học thông thờng, dễ sử dụng, đòi hỏi cấu hình của máy không lớn, đáp ứng nhu cầu tính toán của nhiều đối tợng

Maple là một hệ phần mềm chuyên dụng cho công việc tính toán bao gồm các tính toán thuần tuý bằng ký hiệu toán học, các tính toán số và các tính toán bằng đồ thị Sản phẩm này do Tr-ờng Đại học Tổng hợp Waterloo (Canada) và Trờng Đại học kỹ thuật Zurich (ETZ) xây dựng và đa vào thơng mại đầu tiên năm 1985 Qua nhiều lần cải tiến Maple đã đợc phổ biến rộng rãi trên thế giới Maple đã tạo ra cho chúng ta cách tiếp cận mới với toán học sinh động và sáng tạo hơn

Nhằm góp phần đẩy mạnh ứng dụng công nghệ thông tin vào đổi mới phơng pháp giảng dạy

và nghiên cứu toán học ở nhà trờng phổ thông, mục tiêu của luận văn bớc đầu tìm hiểu và giới thiệu

về các thuật toán trong số học, sử dụng các phần mềm tin học để thực hiện một số tính toán cụ thể và tính toán hình thức Sau một thời gian tìm hiểu và sử dụng, chúng tôi quyết định chọn phần mềm tính toán Maple để thực hiện một số tính toán về phơng diện đại số và số học

Với những lý do trên, chúng tôi chọn hớng đề tài của luận văn “Về một số thuật toán số học

và ứng dụng” Cấu trúc của luận văn gồm 3 chơng cùng với phần mở đầu, kết luận và danh mục 10

tài liệu tham khảo

Chơng 1, giới thiệu về một số kiến thức cơ sở về số học thuật toán Trong nhiều con đờng khác nhau để đi vào số học, ta có thể chọn con đờng thuật toán: các định lý, khái niệm của số học đ-

ợc trình bày cùng với các thuật toán xây dựng chúng, trong đó các thuật toán có kèm theo đánh giá sơ bộ về độ phức tạp Nội dung chủ yếu đề cập trong chơng 1 là: Thuật toán, Độ phức tạp của thuật toán, Sơ lợc về Maple

Chơng 2, giới thiệu một số vấn đề cơ sở của số học hiện đại: Số giả nguyên tố, Số Carmichael, Số giả nguyên tố mạnh, Kiểm tra Miller, Mở rộng Galois của trờng số đại số Kết quả chính trong chơng 2 là đã chỉ ra đợc:

Ě Số k các chữ số trong biểu diễn của số nguyên dơng n trong hệ cơ số g có bậc O-lớn của lnn hay k = O(lnn) (xem định lý 1.2.9)

Ě Thuật toán tính n! có độ phức tạp là O(n2ln2n), (xem định lý 1.2.10)

Chơng 3, giới thiệu thực hành tính toán trên Maple gồm: Thuật toán kiểm tra nguyên tố, Thuật toán kiểm tra số giả nguyên tố, Thuật toán kiểm tra số Carmichael, Thuật toán kiểm tra số giả nguyên tố mạnh, Tính toán đồng d theo Định lý Trung Quốc Ch… ơng 3 của luận văn còn thực hiện một số tính toán hình thức: Thiết lập các mở rộng đại số của trờng số hữu tỉ; Khai báo các mở rộng

đại số của trờng Galois có đặc số nguyên tố; Tính toán trên trờng Galois Các thuật toán này đều đợc chúng tôi kiểm tra trên phần mềm Maple Chẳng hạn, trong chơng 3 của luận văn, chúng tôi quan tâm tới

Trang 7

Giả thuyết Tích của các số nguyên tố liên tiếp bắt đầu từ 3 trừ đi

2 là số nguyên tố Nói khác đi, nếu ký hiệu p k là số nguyên tố thứ

k (kể từ số 3 trở đi) thì số An = p p p1 2 3 pn− 2 là số nguyên tố, với mọi n > 2.

Trong tuyển tập 30 năm báo Toán học và Tuổi trẻ, Nhà xuất bản Giáo dục, Hà Nội, 1997 viết rằng: “Bằng cách thử ta thấy các số A 3 , A 4 , A 5 , A 6 , A 7 đều là số nguyên tố Tuy nhiên muốn kiểm tra A 8 thì cần phải làm 300 phép chia và để kiểm tra A 9 cần tới 1300 phép chia, tức là mất vài buổi làm tính”.

Với Maple, luận văn kiểm định đợc giả thuyết trên nhờ lệnh ifactor (phân tích một số ra thừa số nguyên tố):

định cho giả thuyết trên.

Trong thời gian tới, với các khả năng tính toán và biểu diễn tuyệt vời của các phần mềm tin học, cộng với công sức và tài năng s phạm của ngời thầy (một điều kiện không thể thiếu), chúng ta hy vọng sẽ tạo

ra những đổi mới cơ bản và toàn diện giáo dục toán học phổ thông và

đại học ở nớc ta Luận văn này của chúng tôi mong muốn đợc đóng góp một phần vô cùng nhỏ bé trong công cuộc vận động hết sức to lớn đó

Luận văn đợc thực hiện và hoàn thành tại Trờng Đại học Vinh, dới sự hớng dẫn nghiêm túc của PGS TS Nguyễn Thành Quang Nhân dịp này, tác giả xin bày tỏ lòng biết ơn sâu sắc và kính trọng tới Thầy giáo hớng dẫn PGS.TS Nguyễn Thành Quang

Tác giả xin bày tỏ lòng biết ơn tới: GS.TS Nguyễn Quốc Thi, PGS TS Nguyễn Quý Dy, PGS TS Ngô Sỹ Tùng, PGS TS Lê Quốc Hán, TS Mai Văn T, TS Chu Trọng Thanh và các thầy giáo, cô giáo trong Tổ Đại số, Khoa Toán, Khoa Đào tạo Sau đại học - Trờng Đại học Vinh, đã tận tình giúp đỡ tác giả trong quá trình học tập và viết luận văn

Tác giả xin chân thành cảm ơn Sở Giáo dục và Đào tạo Nghệ An, Phòng Giáo dục huyện Quỳnh Lu và Trờng THCS Quỳnh Hồng – Quỳnh Lu đã tận tình giúp đỡ về tinh thần và vật chất để tác giả có thể hoàn thành luận văn này

Tác giả xin chân thành cảm ơn các học viên cao học Khóa XXII Toán về những trao đổi bổ ích trong nhiều chứng minh chi tiết

Luận văn không tránh khỏi nhiều thiếu sót, tác giả mong muốn nhận đợc sự giúp đỡ chỉ bảo của các thầy cô giáo và các bạn đồng nghiệp

Tác giả

Trang 8

Chơng 1 CáC KIếN THứC chuẩn bị

1.1 Thuật toán

1.1.1 Định nghĩa Thuật toán là một quy tắc để với những dự liệu ban đầu đã cho, tìm đợc

lời giải sau một khoảng thời gian hữu hạn

Ví dụ Cho n số X[1] , X[2] , , X[n] Tìm m, j sao cho:

Thuật toán trên đây đợc ghi lại nh sau:

Thuật toán M tìm cực đại:

M1 : [Bớc xuất phát] Đặt j ← n, k← n - 1, m ← X[n]

M2 : [Đã kiểm tra xong ] Nếu k = 0, thuật toán kết thúc

M3 : [So sánh ] Nếu X[k] ≤ m, chuyển sang M5

M4 : [Thay đổi m ] Đặt j ← k, m ← X[k] (Tạm thời m đang là cực đại )

M5 : [Giảm k] Đặt k ← k-1, quay về M2

Dấu “ ←” dùng để chỉ một phép toán là phép thay chỗ (replacement)

Trên đây ta ghi một thuật toán bằng ngôn ngữ thông thờng Trong trờng hợp thuật toán đợc viết bằng ngôn ngữ của máy tính ta có một chơng trình

Trang 9

Trong thuật toán M đầu vào (input) là các số X[1] , X[2] , , X[n].

Trong thuật toán M đầu ra (ouput) là m và j

Ta thấy thuật toán mô tả ở trên thỏa mãn yêu cầu của thuật toán nói chung, đó là:

1 Tính hữu hạn: Thuật toán cần phải kết thúc sau một số hữu hạn bớc Khi thuật toán dừng

làm việc ta phải thu đợc cho vấn đề đặt ra Thuật toán M rõ ràng thoả mãn điều kiện này, vì ở mỗi bớc ta luôn chuyển từ việc xét một số sang số đứng trớc nó, và số các số là hữu hạn

2.Tính xác định: ở mỗi bớc, thuật toán cần phải xác định tức chỉ rõ việc cần làm

Ngoài ra còn phải xét đến tính hiệu quả của thuật toán Sẽ không xét những thuật toán

mà thời gian thực hiện nó vợt quá khả năng làm việc của chúng ta; mà chỉ quan tâm đến những thuật toán có thể sử dụng thật sự trên máy tính

1.1.2 Độ phức tạp của thuật toán

Thời gian làm việc của máy tính khi chạy một thuật toán nào đó không chỉ phụ thuộc vào thuật toán mà còn phụ thuộc vào máy tính đợc sử dụng Để có một chuẩn chung, ta sẽ đo

độ phức tạp của thuật toán bằng số các phép tính phải làm khi thực hiện thuật toán Độ phức tạp của thuật toán là một hàm phụ thuộc vào cỡ của bài toán, tức là độ lớn của đầu vào

Khi làm việc máy tính dùng hệ đếm cơ số 2; để biểu diễn một số ta chỉ dùng hai kí hiệu 0 và 1 mỗi kí hiệu là một bít (viết tắt của chữ binary digit) Một số nguyên n đợc biểu

diễn bơỉ k chữ số 1 và 0 đợc gọi là một số k - bit Độ phức tạp của thuật toán đợc đo bằng số

các phép tính bit

Để ớc lợng cho độ phức tạp của thuật toán ta dùng khái niệm bậc O - lớn

1.1.3 Định nghĩa Giả sử f n ( ) và g n ( ) là hai hàm xác định trên tập số nguyên dơng Ta nói f n ( ) có bậc O- lớn của g n ( ), và viết f n ( ) = O g n ( ( )) hoặc f = O g ( ), nếu tồn tại một số C > 0 sao cho với n đủ lớn, các hàm f n ( ) và g n ( ) đều dơng, đồng thời

2) Nếu f n1( ) = O g n ( ( )), ( ) f n2 = O g n ( ( )) thì f1+ f2= O g ( ).

3) Nếu f1= O g ( ),1 f2= O g ( )2 thì f f1 2 = O g g ( 1 2).

Trang 10

4) Nếu tồn tại giới hạn hữu hạn ( )

lim ( )

n

f n

g n

→∞ thì f = O g ( ).5) Với mọi số ε > 0, log n O n = ( ).ε

1.1.5 Định nghĩa Một thuật toán đợc gọi là có độ phức tạp đa thức, hoặc có thời gian đa

thức, nếu số các phép tính cần thiết khi thực hiện thuật toán không vợt quá O (logdn ), trong

đó n là độ lớn của đầu vào và d là số nguyên dơng nào đó Nói cách khác nếu đầu vào là các

số k- bit thì thời gian thực hiện thuật toán là O k ( d), tức là tơng đơng với một đa thức của k.

Các thuật toán với thời gian O n ( α), α > 0 , đợc gọi là các thuật toán với độ phức tạp

mũ, hoặc thời gian mũ

Nếu có một thuật toán nào đó có độ phức tạp O g ( ), thì cũng có thể nói nó độ phức tạp O h ( ) với mọi hàm h > g

Cũng có những thuật toán có độ phức tạp trung gian giữa đa thức và mũ Chẳng hạn thuật toán nhanh nhất đợc biết đến hiện nay để phân tích một số nguyên n ra thừa số nguyên

tố là thuật toán có độ phức tạp:

exp( log log log )n n

Trang 11

1.2 Sơ lợc về Maple

Ngày nay máy tính đã thâm nhập vào hầu hết các lĩnh vực khoa học và đời sống Nhiều

ch-ơng trình ứng dụng đã đợc phát triển liên quan tới quản lý dự liệu, in ấn, đồ họa, xử lý ảnh Riêng…

đối với ngành toán đã có những sản phẩm mang tính phổ dụng nh Mathematica, Matlat, Maple, và…nhiều chơng trình chuyên dụng cho từng bộ môn toán học Những phần mềm trên giúp ích rất nhiều cho việc giảng dạy toán, học toán cũng nh việc ứng dụng toán trong các ngành kỹ thuật, kinh tế và vì thế tại các nớc phát triển chúng đã trở thành cẩm nang của nhiều sinh viên và các nhà khoa học Maple cho ta một công cụ tốt để triển khai các thuật toán có độ phức tạp cao mà không có mẹo mực thủ công nào có thể thay thế đợc Maple có đặc tính u việt là có ngôn ngữ câu lệnh rất giống với ngôn ngữ toán học thông thờng, dễ sử dụng, đòi hỏi cấu hình của máy không lớn, đáp ứng nhu cầu tính toán của nhiều đối tợng

Maple là một hệ phần mềm chuyên dụng cho công việc tính toán bao gồm các tính toán thuần tuý bằng ký hiệu toán học, các tính toán số và các tính toán bằng đồ thị Sản phẩm này do Tr-ờng Đại học Tổng hợp Waterloo (Canada) và Trờng Đại học kỹ thuật Zurich (ETZ) xây dựng và đa vào thơng mại đầu tiên năm 1985 Qua nhiều lần cải tiến Maple đã đợc phổ biến rộng rãi trên thế giới Dới đây chúng tôi giới thiệu sơ lợc các tính năng của Maple thông qua một số tính toán cụ thể

về phơng diện đại số và số học

1.2.1 Các quy định chung của Maple.

a) Cụm xử lý (Execution group).

Cụm xử lý là thành phần tính toán cơ bản trong môi trờng làm việc của Maple Mọi tính toán đều thực hiện trong cụm xử lý Trong cụm xử lý có chứa lệnh của Maple cùng với kết quả tính toán, kể cả đồ thị, Trong Maple có thể nhận biết một cụm xử lý bằng dấu…ngoắc vuông [ bên trái của dấu nhắc lệnh >:

Tiếp đến, nhấn phím [Enter] cho thực hiện lệnh, ta sẽ thấy kết quả là: 551

Ký hiệu của các phép toán trong Maple:

Phép nhân đợc biểu thị bởi dấu *

Phép chia đợc biểu thị bởi dấu /

Phép luỹ thừa đợc biểu thị bởi dấu ^

Phép khai căn bậc hai đợc biểu thị bởi dấu Sqrt ( viết tắt của square root).

Trang 12

Kết thúc của dòng lệnh phải là dấu chấm phẩy ; hoặc dấu hai chấm : và lệnh đợc thực

hiện bằng cách nhấn phím [ Enter] khi con trỏ ở cuối dòng lệnh Nếu dòng lệnh kết thúc bằng dấu chấm phẩy thì kết quả của nó sẽ đợc hiển thị trên màn hình sau khi lệnh đợc thực hiện Nếu kết quả tính toán là những biểu thức cồng kềnh chiếm nhiều chỗ hoặc là những kết quả tính toán trung gian không cần cho hiển thị, thì ta kết thúc câu lệnh bằng dấu hai chấm

Nếu có nhiều dòng lệnh trong một cụm xử lý thì việc nhấn phím [Enter] sau một dòng lệnh nào đó (trong số các lệnh) cũng tức là thực hiện tất cả các dòng lệnh trong cụm xử lý

đó

Lệnh của Maple có 2 loại: “ trơ” và “trực tiếp” Lệnh trực tiếp cho ta ngay kết quả của lệnh; còn lệnh trơ chỉ cho ra biểu thức tợng trng và khi cần biết giá trị đích thực của biểu thức đó ta phải dùng thêm lệnh lấy giá trị của biểu thức Value (%) Maple ngầm hiểu ký

hiệu % là biểu thức ngay trớc đó Lệnh trơ và lệnh trực tiếp sai khác nhau chỉ ở chữ cái đầu tiên Lệnh trực tiếp có chữ cái đầu là chữ thờng, còn lệnh trơ có chữ cái đầu là chữ hoa Các lệnh trơ cho phép ta tiết kiệm thời gian nhờ tránh đợc các tính toán trung gian không cần thiết

c) Kết quả của Maple.

Sau khi nhấn phím [Enter] ở cuối dòng lệnh trong một cụm xử lý thì kết quả tính toán

sẽ đợc hiện ra ngay dới dòng lệnh Kết quả của lệnh sẽ là số, giá trị logic: đúng (true) – sai (false), biểu thức toán học, hoặc là đồ thị

Ghi nhớ : Cuối dòng lệnh phải là dấu chấm chấm phẩy ; hoặc dấu hai chấm : Nếu không

có một trong hai dấu kết thúc của dòng lệnh này thì máy sẽ báo lỗi (Error) và không thực hiện tính toán

Muốn thực hiện dòng lệnh nào thì đa con trỏ về sau dấu kết thúc dòng lệnh đó và

nhấn phím [Enter]

Thực hiện dòng lệnh theo đúng trình tự trớc sau vì một số tính toán trong các bớc

sau có thể yêu cầu kết quả từ các bớc trớc.

Trang 13

2175999932299115608941463976156518286256979208272237582511852109

168640000000000000000000000

2) Tìm ớc số chung lớn nhất Để tìm ớc số chung lớn nhất (most grand commn divisor) của

hai số nguyên ta dùng lệnh gcd ( , ) Ví dụ tìm CLN của 5524 và 120, ta dùng lệnh nh sau: [> gcd(5524,120 );

24

3) Tìm bội số chung nhỏ nhất Để tìm bội số chung nhỏ nhất (smallest commn multiple)

của hai số nguyên ta dùng lệnh lcm ( , )

Ví dụ: Tìm BCNN của 5524 và 120, ta dùng lệnh có cú pháp nh sau:

4) Phân tích thành thừa số nguyên tố (Decomposition into prime factor)

Muốn phân tích một số ra thừa số nguyên tố ta dùng lệnh ifactor(.)

Nhà Toán học Fermat dự đoán: số Fn = 22n + 1 là số nguyên tố với mọi số tự nhiên

n Điều này đúng với n = 0, 1, 2, 3, 4 Tuy nhiên, vào năm 1732 Euler chỉ ra với n = 5 thì

điều này không đúng: Số F5 có ớc nguyên tố là 641 Với Maple ta có thể tiếp tục công việc của Euler một cách nhanh chóng Thật vậy, với n = 6 ta có

Trang 14

(Maple ngầm hiểu ký hiệu % là biểu thức ngay trớc đó)

6) Tìm số nguyên tố đứng trớc hoặc sau ngay một số cho trớc.

Muốn tìm số nguyên tố đứng trớc một số tự nhiên cho trớc ta dùng lệnh prevprime ( );

Ví dụ: Tìm số nguyên tố đứng trớc ngay số 3335

[prevprime(3335);

3331

Muốn tìm số nguyên tố đứng sau ngay một số tự nhiên cho trớc ta dùng lệnh

nextprime ( );

7) Tìm nghiệm nguyên của phơng trình (To solve equation on set of integers).

Để tìm nghiệm nguyên của phơng trình ta dùng lệnh isolve với cú pháp nh sau:

[>isolve (eqns, vars);

Trong đó: eqns – tập các phơng trình,

vars - tập các tên biến vô định

Lệnh isolve (giải phơng trình trên tập các số nguyên) cho phép tìm nghiệm nguyên

t-ơng ứng với mọi ẩn tham gia trong các pht-ơng trình Tập tên các biến vô định (vars) đợc sử dụng biểu diễn nghiệm, các biến này có giá trị nguyên Nếu ta không chỉ rõ biến này, hoặc khai báo không đủ thì chơng trình sẽ tạo ra các tên:

- N1, - N2, Nếu ta khai báo thừa (nhiều hơn biến vô định thực tế) thì cũng không sao, ch…

-ơng trình sẽ không đụng chạm đến các biến thừa

Nếu phơng trình không có nghiệm nguyên (hoặc Maple không có khả năng tìm nghiệm) thì máy khai báo NULL hoặc không trả lời Xem ví dụ sau:

Trang 15

Nếu m, n là hai số nguyên thì lệnh irem tính phần d của m khi chia cho n và nếu có

sự tham gia của biến ‘q ’ thì nó sẽ gán cho thơng. Tơng tự, lệnh iquo tính thơng khi chia m

cho n và nếu có sự tham gia của biến thứ ba ‘ ’r thì nó đợc gán cho phần d Ví dụ muốn tìm

d của phép chia 1234567 cho 54321 ta dùng lệnh

9) Tính toán truy hồi

Dùng Maple có thể tính giá trị của các biểu thức theo công thức truy hồi Cú pháp của lệnh này là:

[>rsolve (eqns, fcns) ;

Trong đó, enqs là phơng trình, fcns là tên hàm mà lệmh rsolve phải tìm Ví dụ, tìm công thức cho hàm f(k) sau đây theo truy hồi:

f(n) = - 3 f(n-1) - 2 f(n -2)với các giá trị ban đầu f(0) và f(1) bất kỳ, bằng lệnh

[>rsolve(f(n)=- 3*f(n-1) 2*f(n -2),f(k));

Ta có ngay kết quả tính f(k) thông qua các giá trị ban đầu:

(2f(0) + f(1)) (-1) + ( - f(0) - f(1)) ( -2) .

Trang 16

NÕu muèn cã c«ng thøc cña f(k) víi gi¸ trÞ ban ®Çu cho tríc th× ph¶i khai b¸o gi¸ trÞ Êy vµo

eqns ThÝ dô ta khai b¸o f(1) = f(2) = 1, nh sau:

[>rsolve(f(n)=-3*f(n-1) 2*f(n -2),f(1 .2) = 1,{f});

Cho ngay kÕt qu¶: {f(n) = - 3(-1) + (-2) }.n n

VÝ dô: TÝnh sè h¹ng f(n) cña d·y Fibonacci cã c«ng thøc

{ f(n) = f(n -1) + f( n -2) }víi ®iÒu kiÖn ban ®Çu lµ: f(1) = f(2) = 1

Trang 17

1.2.4 Các tính toán số học phức tạp.

Đây chính là nội dung sẽ đợc đề cập đến trong các chơng sau của luận văn này Các lệnh tính toán phức tạp trong Lý thuyết số sẽ đợc hỗ trợ trong Maple bởi gói công cụ chuyên dụng cho lĩnh vực này Rất nhiều lệnh sẽ không thực hiện hoặc sẽ thực hiện sai nếu nh ta không mở sẵn gói công cụ đó Vì vậy, mỗi khi mở máy thực hành tính toán, việc đầu tiên ta nên làm là gọi nó ra bằng lệnh:

[> with (numtheory) ;

Trang 18

Chơng 2 Biểu diễn số nguyên và các thuật toán số học 2.1 Độ phức tạp của thuật toán trong việc biểu diễn số nguyên

Mặc dù đã quen thuộc với cách biểu diễn số nguyên trong cơ số tuỳ ý, chúng tôi nhắc lại vấn đề đó để thuận tiện cho việc trình bày thuật toán và độ phức tạp của thuật toán trong việc biểu diễn các số nguyên.

2.1.1 Định lý Giả sử g là số nguyên lớn hơn 1 Khi đó, mọi số tự nhiên n ≠ 0 có thể viết duy nhất dới dạng

0 1

1

a g a

n = k k + kk− +  + +

trong đó aj là các số nguyên, 0 ≤ ajg − 1 , j = 0 , 1 , , k và hệ số đầu tiên ak ≠ 0

Chứng minh Ta thực hiện liên tiếp phép chia n chog:

0 1

1 > > > =

>

> qo q qkqkn

Vì vậy, quá trình trên phải kết thúc với qk = 0 Thay các qjlần lợt theo các ajg

ta sẽ thu đợc cách viết cần có của n.

Giả sử ta còn có

0 1

1

b g b

n = l l + ll− +  + +

trong đó bj là các số nguyên, 0 ≤ bjg − 1 , j = 0 , 1 , , l và hệ số đầu tiên bl ≠ 0 Khi đó,

từ đẳng thức

= + +

+

a g

ak k k kblgl + bl−1gl−1 +  + b1g + b0

cho ta a0 = b0,vì đó là số d trong phép chia n cho g Giả sử ta đã có

, ,

Trang 19

Từ đó ta có

= + +

s s

s k

a  1 blgls +  + bs+1g + bs.Lại nh trên ta đợc as = bs.Giả sử k > l, tức khắc ta có

k

Đẳng thức này trái với điều kiện ak ≠ 0 Vì vậy, k = laj = bj, j = 0 , 1 , , k

2.1.2 Hệ cơ số Từ định lý trên đây, cho phép chỉ bằng g ký hiệu biểu thị g số tự nhiên

đầu tiên 0 , 1 , , g − 1, ta có thể biểu diễn đợc mọi số tự nhiên Các ký hiệu này đợc gọi là các chữ số trong hệ cơ số g Cho n là số tự nhiên khác không, khi đó

0 1

1

a g a

n = k k + kk− +  + +

trong đó aj là các số nguyên, 0 ≤ ajg − 1 , j = 0 , 1 , , k với hệ số đầu tiên ak ≠ 0

Ta viết ( akak−1 a1a0)g để chỉ số n trong hệ cơ số g Các hệ số aj đợc gọi là các chữ số

log 1

=

g

n n

trong đó ký hiệu log để chỉ logarit cơ số e Trong hệ cơ số tuỳ ý, ta có k = O (log n ).

2.1.3 Hệ đếm thập phân Hệ cơ số 10 đợc gọi là hệ thập phân Trong tiếng Việt tên của tất

cả các số từ 1 cho tới một triệu gồm có 14 từ, chỉ các số 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100,

1000, 10 000, 1000 000 Ngoài ra, để cho dễ đọc một số từ đã đợc biến thể khi ghép: một thành “mốt”, năm thành “lăm”, mời thành “mơi” Cơ sở của cách tạo từ ở đây là số 10 và vì vậy hệ thống danh pháp của chúng ta là hệ đếm thập phân Sỡ dĩ số 10 có vai trò đặc biệt là vì hai bàn tay chúng ta có 10 ngón Chẳng hạn, đối với số 1994 trong hệ thập phân, ta có:

1994 = 1.103 + 9.102 + 9.10 + 4

2.1.4 Hệ đếm nhị phân Hệ cơ số 2 đợc gọi là hệ nhị phân Hệ nhị phân có rất nhiều ứng

dụng, do chỉ dùng hai kí hiệu 0 và 1 và việc tính toán với các số trong hệ này rất đơn giản Máy tính sử dụng cách viết nhị phân, lí do là vì trong máy tính ngời ta dựa trên một nguyên tắc vật lý đơn giản gọi là nguyên tắc “ Sáng, Tắt”: bóng đèn sáng chỉ số 1, bóng đèn tắt chỉ

số 0 Ta dùng “bít” để chỉ chữ số nhị phân 0 và1 Một ký hiệu 0 hoặc 1 đợc gọi là một bít (viết tắt của chữ “binary digit”) Một số nguyên biểu diễn bởi k chữ số 1 và 0 đợc gọi là một

số k-bit Số tự nhiên n sẽ là một số k-bit với k = [log2n] + 1

Trang 20

Chẳng hạn đối với số 1994 trong hệ thập phân, có

(1994)10 = (11111001010)2.Trong máy tính, bên cạnh hệ cơ số 2, ngời ta còn dùng hệ cơ số 8 hoặc cơ số

16 Lý do chủ yếu là vì chuyển một số trong cơ số 2 sang cơ số 8, ta chỉ việc nhóm từ phải sang trái từng khối ba chữ số, rồi chuyển số đợc viết trong khối đó

sang dạng thập phân Số

(11111001010)2

đợc tách thành các nhóm1, 110, 010, 100, 110 Từ đó ta đợc

(11111001010)2 = (16236)8.Máy tính nào cũng có giới hạn về độ lớn của các số có thể đa vào tính toán Giới hạn

đó đợc gọi là cỡ từ của máy, ký hiệu bởi ω Cỡ từ thờng là một luỹ thừa của 2, chẳng hạn

235 Để thực hiện các phép tính số học với những số nguyên lớn hơn cỡ từ, ta làm nh sau: Muốn đa một số n > ω vào máy, ta viết n dới dạng cơ số g và khi đó n đợc biểu diễn

bằng những số không vợt quá cỡ từ Ví dụ, nếu cỡ từ của máy là 235 thì có thể đa một số có

độ lớn cỡ 2350-1, ta chỉ cần dùng 10 số nhỏ hơn cỡ từ của máy, bằng cách biểu diễn n trong

cơ số 235 Nh đã nói ở trên việc chuyển một số từ cơ số 2 sang cơ số 235 đợc thực hiện bằng cách nhóm từng khối 35 chữ số

2.1.5 Thuật toán nhân nhanh hai số.

Trong những thập kỷ gần đây của thế kỷ XX, ngời ta tìm ra những thuật toán nhân với

độ phức tạp bé hơn nhiều so với cách nhân thông thờng Ta sử dụng tính

chất phân phối của phép nhân đối với phép cộng các số nguyên:

Nếu a a = +1 a b b2, = +1 b2, thì ab = a1b1 + a2b2 + a2b1 + a1b2.

Điều đáng chú ý ở đây là, thay cho việc nhân hai số nguyên n bít, ta thực hiện việc

phép nhân các số có số chữ số nhỏ hơn, cùng với một số phép cộng Thực ra điều này không

có gì mới, ngay trong quan niệm ban đầu phép nhân a với b là phép cộng b lần số a Tuy

nhiên để có một thuật toán nhân nhanh, ta không thể cộng b lần số a, mà phải tìm đợc một

cách tối u nào đó để tách b và a thành những phần nhỏ hơn Thuật toán dới đây, cho ta một

cách để làm việc phân chia nh vậy

2.1.6 Thuật toán Karatuba, Ofman (xem[ 5]).

Giả sử muốn nhân hai số nguyên 2n bit

2 0 1 2 2 1

( a a a a

a = nn

)

( b2 1b2 2 b1b0 2

b = nn

Ta viết a = 2nA1 + A0, b = 2nB1 + B0, trong đó

2 2

2 1 2

1 ( a n a n an)

A = − − , A0 = ( an−1an−2 a1a0)2

Trang 21

2 2

2 1 2

1 ( b n b n bn)

B = − − , B0 = ( bn−1bn−2 b1b0)2.Khi đó, ta có:

)

1 2 ( ) )(

( 2 )

2 2

( 2 A1B1 A1 A0 B1 B0 A0B0

Nh vậy phép nhân các số 2n bit đợc đa về việc nhân các số n bit, cùng với phép cộng,

trừ và dịch chuyển ( nhân một số với một luỹ thừa bậc n của 2 đợc thực hiện bằng cách dịch

số đó sang trái n vị trí).

2.1.7 Định lý Thuật toán Karatuba - Ofman có độ phức tạp là O ( nlog23).

Chứng minh Gọi M(n) là số các phép tính bit tối đa cần thiết khi thực hiện nhân hai số

nguyên n bit bằng thuật toán Karatuba - Ofman Từ công thức

( 3 ) 2 ( n M n Cn

)

( n M log 2n M log 2n 1 c log 2n 1 log 2n 1 c log 2n 1 cnlog 2n

Định lý đợc chứng minh 

2.1.8 Định lý (xem [4]) Với mọi ε > 0, tồn tại thuật toán nhân sao cho số phép tính bít

M(n) cần thiết để nhân hai số n bit thỏa mãn bất đẳng thức

1

( ) ( )

M n <C ε n

với hằng số C ( ) ε nào đó độc lập với n.

2.1.9 Định lý Giả sử số nguyên dơng n biểu diễn trong cơ số g tuỳ ý có k chữ số Khi đó

k = O(lnn).

Chứng minh Vì số nguyên dơng n biểu diễn trong cơ số g tuỳ ý có k chữ số nên:

k-1 k-2 1 0 g

n = ( a a a a )trong đó a 0 , 0 a g-1 , j= 1,2, , k-1 k-1 ≠ ≤ j ≤

Trang 22

1 Để cộng hai số nguyên lần lợt có k, h bit ta cần O(max{k,h}) phép tính bit.

2 Để nhân hai số nguyên lần lợt có k, h bit ta cần O(kh) phép tính bit và số các chữ số của tích đó không vợt quá tổng các chữ số của mỗi thừa số cộng một.

Thật vậy, giả sử :

n = ( a a a a )k-1 k-2 1 0 2

m = ( a a a a )hai số nguyên lần lợt có k, h bit và giả sử k h Ta có:

Nh vậy để cộng m và n ta chỉ cần làm việc với các chữ số của nó Từ đó ta có để cộng

hai số nguyên lần lợt có k, h bit ta cần O(k) = O(max{k,h})phép tính bit Tơng tự :

k+h-2

mn = a b 2 + + a b

Trang 23

Từ đó suy ra để nhân hai số nguyên lần lợt có k, h bit ta cần O(max{k,h}) phép tính bit và các chữ số của tích đó không vợt quá tổng các chữ số của mỗi thừa số cộng một.

2.1.10 Thuật toán tính n! có độ phức tạp là O(n 2 ln 2 n).

Chứng minh Để tính n! ta cần phải thực hiện (n - 2) phép nhân j ! với (j + 1) , với j = 2,3 ,n-1 Ta thấy số chữ số của j ! ít hơn số chữ số của j.j.j j = ji Ta ký hiệu k(j)

số bit (số chữ số trong hệ nhị phân) của j Theo nhận xét vừa nêu trên, ta có:

k( j ) k( j j) k( j ) k( j) 1 jk( j) j 1

jk( j) j j(k( j) 1) n(k(n) 1).

Nh vậy, nếu n là số k-bit ( k(n) = k) thì j ! là số O( n(k + 1)) bit Tại mỗi bớc

(B2, ,Bn-1) ta nhân số (j + 1) có O(k)- bit (do j + 1 n) với số j ! có O(n(k + 1)) bit nên

số phép tính bit mỗi bớc không quá nk(k + 1) Vì (n-2) bớc nên theo định lý 2.1.9 ta có số

phép tính bit là O((n-2)nk(k + 1)) = O(n2k2) Theo định lý 2.1.9 ta có số phép tính bit cần thiết để thực hiện thuật toán tính n! là O(n2ln2n) Định lý đợc chứng minh

2.1.11 Mệnh đề Thuật toán nhân hai ma trận vuông cấp n theo quy tắc thông thờng có độ

phức tạp O(n 3 m 2 ) nếu mỗi phần tử của ma trận là những số O(m) bit

Chứng minh. Giả sử A = (a ) và ij n B = (b ) ij n là hai ma trận vuông cấp n và C =AB =

Trang 24

2.2 thuật toán kiểm tra nguyên tố

2.2.1 Định nghĩa Số nguyên tố là số nguyên lớn hơn 1, không chia hết cho số nguyên dơng

nào ngoài 1 và chính nó (không có ớc thực sự) Một số nguyên lớn hơn 1 và không phải là số nguyên tố đợc gọi là hợp số.

2.2.2 Định lý ứớc nhỏ nhất khác 1 của một số tự nhiên lớn hơn 1 là số nguyên tố.

Chứng minh Giả sử a là một số tự nhiên lớn hơn 1 và p là ớc nhỏ nhất khác 1 của a Nếu

p là hợp số, khi đó p có một ớc thực sự q sao cho 1 < q < pp là ớc của a nên q

cũng là ớc của a, điều này mâu thuẫn với giả thiết p là ớc nhỏ nhất khác 1 của a.

2.2.3 Định lý Có vô hạn số nguyên tố.

Chứng minh Giả sử chỉ có hữu hạn các số nguyên tố p1, , pk( k ≥ 1 ), ta đặt

1

2

= p p pk

Theo định lý 2.2.2, ớc nhỏ nhất p khác 1 củaa là số nguyên tố Vì chỉ có hữu hạn các số

nguyên tố ở trên, cho nên p = pj nào đó Từ đó suy ra, số nguyên tố p là ớc của 1 Ta gặp

phải một mâu thuẫn g

Ngay từ thời cổ đại, ngời ta đã biết rằng tập hợp các số nguyên tố là vô hạn Có rất nhiều chứng minh khác nhau của sự kiện đó Không chỉ quan tâm đến tập hợp các số nguyên

tố, trong nhiều vấn đề của lý thuyết và ứng dụng, ngời ta còn cần biết có hữu hạn hay vô hạn

số nguyên tố biểu thị trong một dạng nào đó Chẳng hạn, cho số n lấy các giá trị nguyên

d-ơng, có Giả thuyết: Tập hợp các số nguyên tố dạng n2 + 1 là vô hạn

2.2.4 Giả thuyết Goldbach.

Biểu diễn một số nguyên dới dạng nào đó luôn luôn là bài toán thu hút sự quan tâm của nhiều ngời Hơn nữa, nhiều khi cần trả lời câu hỏi: có bao nhiêu cách Một câu hỏi thuộc hớng trên là một giả thuyết lớn sau:

Giả thuyết Goldbach Mọi số nguyên chẵn lớn hơn 2 đều có thể viết dới dạng tổng của hai

2.2.5 Định lý Mọi hợp số n đều có ớc nguyên tố không vợt quá n

Trang 25

Chứng minh Vì n là hợp số nên ta có thể viết n = ab ,trong đó a, b là các số nguyên

với 1 < ab < n Rõ ràng ta phải có a hoặc b không vợt quá n .

Giả sử đó là a, khi đó ớc nguyên tố của a cũng chính là ớc nguyên tố của n

Từ định lý trên, ta có thuật toán sau đây để tìm ra các số nguyên tố nhỏ hơn hoặc bằng

số n > 1 cho trớc

2.2.6 Sàng Eratosthenes Trớc tiên, ta viết dãy số từ 1 đến n Trong dãy đó gạch đi số 1, vì

nó không phải là số nguyên tố Số nguyên tố đầu tiên là 2 Tiếp đến ta gạch tất cả những số trong dãy chia hết cho 2 Số đầu tiên không chia hết cho 2 là 3 Số 3 là số nguyên tố Ta lại gạch các số chia hết cho 3 còn lại trong dãy Tiếp tục nh thế, ta gạch khỏi dãy những số chia hết cho một trong các số nguyên tố bé hơn hoặc bằng n Theo định lý trên, những số còn lại của dãy không bị gạch là tất cả các số nguyên tố không vợt quá n Thật vậy, những số này không có ớc nguyên tố nhỏ hơn hoặc bằng căn bậc hai của nó, cho nên phải là số nguyên tố

Sàng Eratosthenes cho ta một thuật toán xác định mọi số nguyên tố không vợt quá một số cho trớc Tuy nhiên sẽ rất khó khăn khi ta phải làm việc với các số lớn Nguyên nhân

là vì thuật toán có độ phức tạp quá lớn: ta phải thực hiện phép chia cho tất cả các số nguyên

tố không vợt quá căn n Bây giờ ta hãy xét về độ phức tạp của thuật toán nói trên.

2.2.7 Thuật toán kiểm tra số nguyên tố trong Maple

Muốn kiểm tra một số có phải nguyên tố không ta dùng lệnh:

Trang 26

[> ithprime ( k )

VÝ dô T×m sè nguyªn tè thø mét triÖu nh sau:

[>ithprime(1000000);

15485863

2.2.8 Ph©n tÝch mét sè nguyªn ra thõa sè nguyªn tè

Muèn ph©n tÝch mét sè nguyªn ra thõa sè nguyªn tè cho kÕt qu¶ mét c¸ch th«ng thêng ta dïng lÖnh:

Ngày đăng: 15/12/2015, 07:32

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w