Luận văn ThS: Xây dựng hệ thống đại số máy tính xử lý biểu thức toán học (ĐH Công nghệ - ĐHQGHN)

Luận văn thạc sĩ: Xây dựng hệ thống đại số máy tính xử lý biểu thức toán học. Nghiên cứu chuyên sâu, ứng dụng thực tiễn trong tính toán và giải quyết bài toán.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2016

108
0
0

Phí lưu trữ

35 Point

Mục lục chi tiết

LỜI CẢM ƠN

LỜI CAM ĐOAN

Danh mục hình ảnh

Danh mục bảng

Danh mục chữ viết tắt

1. Chương 1: Kiến thức nền tảng

1.1. Ngôn ngữ giả mã

1.2. Tính toán biểu thức và chương trình toán học

1.3. Khái niệm toán học cơ bản

1.3.1. Số hữu tỉ

2. Chương 2: Cấu trúc của biểu thức đại số

2.1. Cây biểu thức

2.2. Cấu trúc đệ quy của biểu thức đại số

2.3. Cấu trúc thông thường của biểu thức đại số

2.4. Cấu trúc rút gọn của biểu thức đại số

2.5. Các toán tử cơ bản của biểu thức đại số rút gọn

2.5.1. Định nghĩa toán tử 𝐾𝑖𝑛𝑑(𝑢)

2.5.2. Định nghĩa toán tử 𝑁𝑢𝑚𝑏𝑒𝑟𝑂𝑓𝑂𝑝𝑒𝑟𝑎𝑛𝑑𝑠(𝑢)

2.5.3. Định nghĩa toán tử 𝑂𝑝𝑒𝑟𝑎𝑛𝑑(𝑢, 𝑖)

2.6. Các toán tử dựa trên cấu trúc của biểu thức

2.6.1. Định nghĩa toán tử 𝐶𝑜𝑚𝑝𝑙𝑒𝑡𝑒𝑆𝑢𝑏E𝑥𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛(𝑢)

2.6.2. Định nghĩa toán tử 𝐹𝑟𝑒𝑒𝑂𝑓(𝑢, 𝑡)

3. Chương 3: Thuật toán

3.1. Thuật toán toán học

3.2. Thuật toán đệ quy

3.3. Thủ tục đệ quy

4. Chương 4: Rút gọn biểu thức

4.1. Các phép biến đổi sử dụng trong quá trình rút gọn biểu thức

4.1.1. Biểu thức đại số cơ bản và biểu thức đại số rút gọn

4.1.2. Thể hiện của biểu thức đại số cơ bản

4.2. Thuật toán rút gọn

4.2.1. Thủ tục rút gọn chính

4.2.2. Rút gọn biểu thức số hữu tỉ

4.2.3. Thể hiện của thuật toán rút gọn

4.2.3.1. Phương thức rút gọn biểu thức số hữu tỉ
4.2.3.2. Phương thức rút gọn lũy thừa
4.2.3.3. Phương thức rút gọn tích
4.2.3.4. Phương thức rút gọn tổng
4.2.3.5. Phương thức rút gọn chính

5. Chương 5: Cấu trúc của đa thức và biểu thức hữu tỉ

5.1. Đa thức một biến

5.2. Các thể hiện của đơn thức và đa thức một biến

5.3. Đa thức nhiều biến

5.4. Đa thức tổng quát

5.4.1. Các toán tử cơ bản của đơn thức tổng quát

5.4.2. Các toán tử cơ bản của đa thức tổng quát

5.4.3. Các toán tử thao tác với đa thức tổng quát

5.5. Biểu thức hữu tỉ tổng quát

5.5.1. Toán tử 𝑁𝑢𝑚𝑒𝑟𝑎𝑡𝑜𝑟 và 𝐷𝑒𝑛𝑜𝑚𝑖𝑛𝑎𝑡𝑜𝑟

5.5.2. Toán tử RationalGPE

5.5.3. Toán tử RationalVariables

5.5.4. Hữu tỉ hóa một biểu thức đại số

5.5.5. Thể hiện của biểu thức hữu tỉ

6. Chương 6: Các toán tử trong hệ thống SMC

6.1. Khai triển Taylor

6.2. Toán tử 𝑇𝑎𝑦𝑙𝑜𝑟Series

6.3. Các toán tử khác

7. Chương 7: Kiểm thử

Tài liệu tham khảo

MỞ ĐẦU

Tóm tắt

I. Khám phá luận văn ThS Xây dựng hệ thống đại số máy tính

Luận văn thạc sĩ với chủ đề Xây dựng hệ thống đại số máy tính là một công trình nghiên cứu chuyên sâu, giải quyết bài toán xử lý biểu thức toán học một cách tự động. Công trình này thuộc lĩnh vực khoa học máy tính, cụ thể là kỹ thuật phần mềm, tập trung vào việc phát triển các thuật toán và cấu trúc dữ liệu cho tính toán ký hiệu (Symbolic Computation). Không giống như tính toán số học chỉ làm việc với các giá trị xấp xỉ, một Hệ thống tính toán hình thức, hay Computer Algebra System (CAS), thao tác trực tiếp trên các biểu thức toán học chứa biến, ký hiệu và hàm số. Mục tiêu chính là tạo ra một hệ thống có khả năng thực hiện các phép biến đổi phức tạp như rút gọn, khai triển, và giải phương trình một cách chính xác. Luận văn này, thực hiện bởi tác giả Nguyễn Văn Đồng dưới sự hướng dẫn của PGS. Trương Anh Hoàng, đặt nền móng cho việc xây dựng một hệ thống CAS mã nguồn mở, có khả năng thay thế các phần mềm thương mại đắt đỏ như Mathematica trong các ứng dụng cụ thể. Trọng tâm của nghiên cứu là thiết kế các thuật toán hiệu quả để phân tích, biểu diễn và đơn giản hóa biểu thức đại số. Công trình đi từ các khái niệm toán học cơ bản, cấu trúc dữ liệu như cây cú pháp trừu tượng (AST), cho đến việc triển khai các thuật toán rút gọn đệ quy. Đây là một tài liệu tham khảo giá trị cho sinh viên và các nhà nghiên cứu quan tâm đến lĩnh vực lập trình hệ thống, đặc biệt là những ai đang tìm kiếm ý tưởng cho đồ án tốt nghiệp CNTT liên quan đến xử lý toán học.

1.1. Giới thiệu về hệ thống tính toán hình thức CAS

Một Hệ thống tính toán hình thức (Computer Algebra System - CAS) là một chương trình phần mềm thực hiện các phép biến đổi trên biểu thức toán học. Thay vì tính toán giá trị số của một biểu thức, CAS làm việc với các ký hiệu (biến, hằng số toán học). Ví dụ, nó có thể rút gọn biểu thức (x^2 - 1)/(x - 1) thành x + 1. Các hệ thống này cung cấp các chức năng cốt lõi như đơn giản hóa biểu thức đại số, tính đạo hàm, tích phân, và giải phương trình bằng máy tính. Chúng là công cụ không thể thiếu trong nghiên cứu khoa học và kỹ thuật, vì kết quả tính toán đại số luôn chính xác và cung cấp cái nhìn sâu sắc về mối quan hệ giữa các biến số. Luận văn này tập trung vào việc xây dựng một hệ thống như vậy từ đầu.

1.2. Mục tiêu cốt lõi của luận văn khoa học máy tính này

Mục tiêu chính của luận văn thạc sĩ khoa học máy tính này là phát triển một hệ thống CAS miễn phí, có khả năng thực hiện các phép toán từ cơ bản đến phức tạp. Cụ thể, luận văn nhắm đến việc xử lý và rút gọn biểu thức, xử lý đa thức một biến và nhiều biến. Một mục tiêu ứng dụng quan trọng là phát triển các hàm xử lý đa thức nhằm thay thế hoàn toàn hệ thống Mathematica trong công cụ SMC (string model-counting). Điều này không chỉ giảm chi phí bản quyền mà còn cho phép tùy chỉnh và tối ưu hóa sâu hơn cho các bài toán cụ thể. Công trình nghiên cứu này cung cấp một bộ khung hoàn chỉnh cho việc lập trình hệ thống CAS.

II. Thách thức khi xây dựng hệ thống tính toán ký hiệu CAS

Việc xây dựng hệ thống đại số máy tính đối mặt với nhiều thách thức kỹ thuật phức tạp. Thách thức đầu tiên và cơ bản nhất là phân tích cú pháp biểu thức toán học. Máy tính cần phải hiểu được một chuỗi ký tự đầu vào, ví dụ "3*x^2 + sin(x)", và chuyển nó thành một cấu trúc dữ liệu có ý nghĩa mà nó có thể thao tác. Quá trình này đòi hỏi các thuật toán phân tích cú pháp tinh vi để xử lý đúng thứ tự ưu tiên của toán tử, dấu ngoặc và các hàm số. Một thách thức lớn khác là vấn đề "Canonical Form" – làm thế nào để đảm bảo rằng các biểu thức tương đương về mặt toán học (ví dụ: x+y và y+x) được biểu diễn theo một dạng chuẩn duy nhất. Điều này cực kỳ quan trọng cho việc so sánh và đơn giản hóa biểu thức đại số. Nếu không có một dạng chuẩn, việc xác định một biểu thức phức tạp có bằng không hay không có thể trở thành một bài toán không thể giải quyết. Hơn nữa, việc quản lý bộ nhớ và tối ưu hóa hiệu suất là rất quan trọng, vì các biểu thức trong symbolic computation có thể phát triển cực kỳ lớn trong quá trình biến đổi, dẫn đến hiện tượng "expression swell". Cuối cùng, việc triển khai một thư viện toán học đầy đủ với hàng trăm quy tắc biến đổi đòi hỏi sự chính xác và kiểm thử nghiêm ngặt để tránh các lỗi tinh vi trong logic toán học.

2.1. Phân tích cú pháp biểu thức toán học Bài toán phức tạp

Việc phân tích cú pháp biểu thức toán học là bước đầu tiên nhưng đầy khó khăn. Hệ thống phải nhận dạng được các thành phần như số, biến, toán tử (+, -, *, /, ^), và các hàm (sin, cos, log). Nó phải tuân thủ nghiêm ngặt các quy tắc về thứ tự ưu tiên (nhân chia trước, cộng trừ sau; lũy thừa trước nhân chia) và xử lý đúng các cấp độ của dấu ngoặc. Các lỗi trong giai đoạn này sẽ dẫn đến việc biểu diễn sai cấu trúc của biểu thức, khiến mọi phép biến đổi về sau đều không chính xác. Luận văn đã giải quyết vấn đề này bằng cách xây dựng một bộ phân tích cú pháp để chuyển đổi chuỗi đầu vào thành một cấu trúc cây nội bộ.

2.2. Vấn đề biểu diễn và đơn giản hóa biểu thức đại số

Sau khi phân tích cú pháp, thách thức tiếp theo là làm thế nào để đơn giản hóa biểu thức đại số một cách hiệu quả. Một biểu thức có thể có vô số dạng tương đương. Ví dụ, sin(x)^2 + cos(x)^2 phải được rút gọn thành 1. Việc này đòi hỏi hệ thống phải được trang bị một bộ quy tắc biến đổi đại số và lượng giác phong phú. Luận văn tập trung vào việc thiết kế một thuật toán rút gọn chính, kết hợp các thủ tục con để xử lý từng loại biểu thức như tổng, tích, lũy thừa và phân số hữu tỉ. Mục tiêu là đưa biểu thức về một dạng chuẩn, gọn gàng và dễ hiểu nhất có thể, đây là trái tim của mọi hệ thống tính toán hình thức.

III. Phương pháp phân tích cú pháp trong hệ thống đại số máy tính

Để một hệ thống đại số máy tính có thể hiểu và xử lý biểu thức, phương pháp phân tích cú pháp và biểu diễn cấu trúc đóng vai trò nền tảng. Luận văn này áp dụng một cách tiếp cận kinh điển và hiệu quả: chuyển đổi biểu thức toán học từ dạng chuỗi ký tự sang một cấu trúc dữ liệu phân cấp được gọi là cây cú pháp trừu tượng (AST). Cấu trúc cây này phản ánh chính xác mối quan hệ và thứ tự ưu tiên giữa các toán tử và toán hạng. Ví dụ, với biểu thức a * (b + c), nút gốc của cây sẽ là toán tử *, có hai con là a và một cây con khác. Cây con này lại có nút gốc là + và hai lá là bc. Việc biểu diễn này cho phép các thuật toán duyệt và biến đổi cây một cách dễ dàng thông qua các kỹ thuật đệ quy. Để xây dựng cây AST từ một chuỗi đầu vào, các thuật toán kinh điển như thuật toán Shunting-yard của Edsger Dijkstra thường được sử dụng. Thuật toán này chuyển đổi biểu thức từ dạng trung tố (infix notation) quen thuộc sang Ký pháp Ba Lan ngược (RPN), hay còn gọi là ký pháp hậu tố (postfix notation). Từ dạng RPN, việc xây dựng cây AST trở nên đơn giản và trực tiếp. Cách tiếp cận này giúp hệ thống xử lý các biểu thức lồng nhau phức tạp một cách có hệ thống và chính xác, tạo tiền đề vững chắc cho giai đoạn tính toán ký hiệu.

3.1. Sử dụng cây cú pháp trừu tượng AST để biểu diễn

Trong luận văn, Cây cú pháp trừu tượng (AST) là cấu trúc dữ liệu trung tâm. Mỗi nút trong cây đại diện cho một toán tử (như +, *, ^) hoặc một hàm (như sin). Các nút lá đại diện cho các toán hạng (hằng số hoặc biến). Cấu trúc đệ quy của cây hoàn toàn tương thích với bản chất đệ quy của biểu thức toán học. Luận văn định nghĩa rõ các toán tử cơ bản để thao tác trên cây như Kind(u) để lấy loại toán tử, NumberOfOperands(u) để lấy số toán hạng, và Operand(u, i) để truy cập toán hạng cụ thể. Cấu trúc này làm cho việc lập trình hệ thống CAS trở nên rõ ràng và dễ quản lý.

3.2. Áp dụng thuật toán Shunting yard và Ký pháp Ba Lan ngược

Mặc dù luận văn không mô tả chi tiết, thuật toán Shunting-yard là một phương pháp tiêu chuẩn để giải quyết bài toán phân tích cú pháp. Nó sử dụng một hàng đợi (queue) cho đầu ra và một ngăn xếp (stack) cho các toán tử. Bằng cách đọc biểu thức trung tố từ trái sang phải, thuật toán sắp xếp lại các toán tử và toán hạng để tạo ra một chuỗi theo Ký pháp Ba Lan ngược (RPN). Ví dụ, 3 + 4 * 2 sẽ được chuyển thành 3 4 2 * +. Dạng RPN này loại bỏ hoàn toàn sự mơ hồ về thứ tự ưu tiên và dấu ngoặc, giúp việc tính toán hoặc xây dựng cây AST trở nên cực kỳ hiệu quả.

IV. Thuật toán cốt lõi Đơn giản hóa biểu thức đại số tự động

Trái tim của một hệ thống đại số máy tính nằm ở khả năng đơn giản hóa biểu thức đại số một cách thông minh và hiệu quả. Luận văn này trình bày một hệ thống các thuật toán rút gọn được thiết kế theo cấu trúc đệ quy, dựa trên các quy tắc biến đổi toán học cơ bản như luật phân phối, kết hợp và giao hoán. Quá trình rút gọn không phải là một hành động đơn lẻ mà là một chuỗi các phép biến đổi được áp dụng một cách có hệ thống. Thuật toán rút gọn chính (Simplify) hoạt động bằng cách duyệt qua cây biểu thức. Tại mỗi nút, nó gọi đệ quy chính nó trên các nút con (toán hạng), sau đó áp dụng một thủ tục rút gọn chuyên biệt dựa trên loại toán tử của nút hiện tại (tổng, tích, lũy thừa, hàm số). Ví dụ, thủ tục SimplifyProduct sẽ xử lý việc kết hợp các số mũ của các cơ số giống nhau (ví dụ: x^2 * x^3 -> x^5) và sắp xếp các nhân tử theo một thứ tự chuẩn. Tương tự, SimplifySum sẽ nhóm các số hạng đồng dạng. Cách tiếp cận module hóa này giúp hệ thống dễ dàng mở rộng với các quy tắc rút gọn mới. Quá trình này đảm bảo rằng kết quả cuối cùng là một biểu thức ở dạng chuẩn hóa, là nền tảng cho mọi tính toán ký hiệu cấp cao hơn.

4.1. Quy trình rút gọn biểu thức số hữu tỉ và đa thức

Luận văn trình bày chi tiết thuật toán rút gọn biểu thức số hữu tỉ (SimplifyRationalNumber). Quy trình này sử dụng thuật toán Euclid để tìm ước chung lớn nhất (GCD) của tử số và mẫu số, sau đó chia cả hai cho GCD để đưa phân số về dạng tối giản. Đối với đa thức, việc rút gọn bao gồm việc thu thập các số hạng đồng dạng, ví dụ 3*x + 5*x được rút gọn thành 8*x. Những thuật toán cơ bản này là các khối xây dựng thiết yếu cho việc xử lý các biểu thức phức tạp hơn, đảm bảo tính chính xác trong symbolic computation.

4.2. Triển khai các phép biến đổi đệ quy và quy tắc đại số

Bản chất đệ quy là chìa khóa của thuật toán rút gọn. Một biểu thức phức hợp được rút gọn bằng cách đầu tiên rút gọn các biểu thức con của nó. Ví dụ, để rút gọn (x*x - 1)/(x - 1), hệ thống sẽ không xử lý toàn bộ biểu thức ngay lập tức. Thay vào đó, nó sẽ cố gắng rút gọn tử số và mẫu số trước (nếu có thể). Sau đó, các quy tắc biến đổi đại số cấp cao hơn mới được áp dụng. Luận văn đã thể hiện rõ cách cài đặt các thủ tục đệ quy này bằng ngôn ngữ Java, cung cấp một ví dụ thực tế cho một đồ án tốt nghiệp CNTT.

V. Ứng dụng thực tiễn của việc lập trình hệ thống CAS

Việc lập trình hệ thống CAS không chỉ là một bài tập học thuật mà còn mang lại những ứng dụng thực tiễn giá trị. Mục tiêu ứng dụng cụ thể và nổi bật nhất được nêu trong luận văn là tích hợp hệ thống này vào công cụ SMC (string model-counting). SMC là một công cụ phân tích chương trình tiên tiến, sử dụng hàm sinh (generating functions) để đếm số lượng chuỗi ký tự thỏa mãn các ràng buộc phức tạp. Trước đây, SMC phụ thuộc vào hệ thống Mathematica độc quyền để thực hiện các phép toán trên đa thức và khai triển chuỗi Taylor. Bằng cách xây dựng hệ thống đại số máy tính của riêng mình, nhóm nghiên cứu đã tạo ra một giải pháp thay thế mã nguồn mở, miễn phí và có thể tùy chỉnh. Điều này không chỉ loại bỏ rào cản về chi phí mà còn cho phép tối ưu hóa hiệu suất cho các tác vụ cụ thể của SMC. Ngoài ra, một hệ thống CAS tự xây dựng còn mở ra tiềm năng cho nhiều ứng dụng khác, chẳng hạn như tạo ra các công cụ hỗ trợ giáo dục toán học, tự động hóa việc chứng minh định lý, và giải phương trình bằng máy tính. Đây là một minh chứng rõ ràng về việc chuyển đổi từ lý thuyết khoa học máy tính sang giải pháp phần mềm hữu ích, là một hướng đi đầy hứa hẹn cho các luận văn thạc sĩ.

5.1. Tích hợp vào công cụ SMC thay thế cho Mathematica

Luận văn đã phát triển thành công các hàm xử lý đa thức và khai triển chuỗi Taylor, là những yêu cầu cốt lõi của công cụ SMC. Hệ thống có khả năng thực hiện các toán tử như TaylorSeries, MINF, MAXF, DEDUP một cách hiệu quả. Việc thay thế Mathematica không chỉ là một thành tựu về kỹ thuật mà còn có ý nghĩa lớn về mặt thực tiễn, giúp công cụ SMC trở nên dễ tiếp cận hơn với cộng đồng nghiên cứu. Đây là một ví dụ điển hình về ứng dụng của symbolic computation trong lĩnh vực an ninh và phân tích phần mềm.

5.2. Tiềm năng giải phương trình bằng máy tính và hơn thế nữa

Mặc dù trọng tâm của luận văn là rút gọn biểu thức và xử lý đa thức, nền tảng được xây dựng mở ra khả năng phát triển các tính năng cao cấp hơn. Với cấu trúc cây biểu thức và các thuật toán biến đổi, việc mở rộng hệ thống để giải phương trình bằng máy tính (cả phương trình đại số và vi phân) là hoàn toàn khả thi. Hơn nữa, hệ thống có thể được phát triển để hỗ trợ các lĩnh vực toán học khác như đại số tuyến tính (thao tác ma trận ký hiệu) hay tính toán tensor. Điều này cho thấy tiềm năng to lớn của các hệ thống tính toán hình thức mã nguồn mở.

VI. Kết luận từ luận văn và tương lai của Symbolic Computation

Luận văn Xây dựng hệ thống đại số máy tính đã hoàn thành xuất sắc các mục tiêu đề ra, cung cấp một công trình nghiên cứu toàn diện và có giá trị thực tiễn cao. Tác giả đã thành công trong việc thiết kế và triển khai một hệ thống CAS từ các nguyên tắc cơ bản, bao gồm phân tích cú pháp, biểu diễn bằng cây cú pháp trừu tượng, và các thuật toán rút gọn phức tạp. Đóng góp quan trọng nhất của luận văn là việc tạo ra một giải pháp mã nguồn mở, có khả năng thay thế phần mềm thương mại trong một ứng dụng cụ thể là công cụ SMC, qua đó khẳng định tính khả thi của dự án. Công trình này không chỉ là một luận văn thạc sĩ khoa học máy tính xuất sắc mà còn là một tài liệu hướng dẫn quý báu cho những ai muốn tìm hiểu sâu về lập trình hệ thống CAS. Hướng đi tương lai của lĩnh vực Symbolic Computation đang ngày càng tập trung vào các thư viện mã nguồn mở, linh hoạt và có khả năng tích hợp cao như thư viện SymPy trong Python. Những hệ thống này đang dân chủ hóa khả năng tiếp cận các công cụ toán học mạnh mẽ, thúc đẩy sự đổi mới trong cả nghiên cứu khoa học và phát triển phần mềm. Luận văn này là một bước tiến đáng ghi nhận theo định hướng đó.

6.1. Đóng góp chính của luận văn thạc sĩ khoa học máy tính

Đóng góp cốt lõi của luận văn thạc sĩ khoa học máy tính này bao gồm: (1) Xây dựng một bộ khung lý thuyết và thuật toán hoàn chỉnh cho việc phát triển một hệ thống CAS. (2) Cài đặt thành công một hệ thống thực tế bằng Java, có khả năng xử lý và rút gọn biểu thức đại số, đa thức. (3) Ứng dụng thành công hệ thống vào một bài toán thực tế, thay thế cho phần mềm Mathematica trong công cụ SMC. Những đóng góp này mang lại giá trị cả về mặt học thuật và ứng dụng, là một tài liệu tham khảo chất lượng cho các đồ án tốt nghiệp CNTT.

6.2. Hướng phát triển các thư viện mã nguồn mở như SymPy

Công trình nghiên cứu này đi cùng xu hướng phát triển của các hệ thống CAS mã nguồn mở hiện đại. Các thư viện như thư viện SymPy (cho Python) đã chứng minh được sức mạnh và sự linh hoạt của mình. Hướng phát triển trong tương lai cho hệ thống được xây dựng trong luận văn có thể bao gồm việc tối ưu hóa hiệu suất, mở rộng thư viện các quy tắc biến đổi, và cải thiện khả năng tương tác với các ngôn ngữ lập trình khác. Việc xây dựng một cộng đồng người dùng và nhà phát triển xung quanh các dự án mã nguồn mở như thế này sẽ là chìa khóa cho sự phát triển bền vững của lĩnh vực tính toán ký hiệu.

24/09/2025

Trích đoạn nội dung tài liệu

Chương 1 Kiến thức nền tảng 1.1 Ngôn ngữ giả mã Là một ngôn ngữ biểu tượng được sử dụng trong luận văn để mô tả các khái niệm, định lý, ví dụ, đặc biệt là các thuật toán và các thủ tục thực hiện thuật toán. Ngôn ngữ giả mã tương tự như một ngôn ngữ đại số máy tính nhưng nó mang tính hình thức vì sử dụng cả biểu tượng toán học, tiếng anh và tiếng việt trong đó. Để sử dụng một hệ thống đại số máy tính hiệu quả thì điều quan trọng là phải hiểu rõ ràng về cấu trúc và ý nghĩa của các biểu thức toán học. Về cơ bản biểu thức toán học trong ngôn ngữ giả mã cũng giống như các biểu thức toán học thông thường nhưng có một số thừa nhận để thích hợp trong môi trường tính toán.

Các biểu thức được mô tả bằng cấu trúc sử dụng các toán tử và các ký hiệu sau:  Số nguyên và phân số Một phần mềm thực hiện chính xác các thao tác trên biểu thức toán học phải có khả năng thực hiện chính xác các tính toán số học. Trong các ngôn ngữ lập trình thông thường việc tính toán với số thực dấu phẩy động thường có liên quan đến làm tròn số nên sẽ không phù hợp với hầu hết các hệ thống đại số máy tính. Thay vào đó các hệ thống sử dụng số hữu tỉ để đảm bảo thu được kết quả chính xác.99)/(𝑥 − 1) Mặc dù giá trị của 𝑓 và 𝑔 là gần như nhau với mỗi giá trị của 𝑥 nhưng đặc điểm toán học của hai biểu thức là hoàn toàn khác nhau.Với 𝑥 ≠ 1 thì 𝑓 có thể rút gọn thành (𝑥 + 1) trong khi đó 𝑔 thì không thể rút gọn được.  Số thực Trong ngôn ngữ giả mã thì số thực là một số hữu hạn bao gồm dấu phẩy thập phân và có thể có số mũ của 10 Ví dụ: 467.

Trong toán học một số thực không có dạng hữu tỉ thì gọi là số vô tỉ. Do khó có thể thực hiện các thao tác tính toán biểu tượng với số vô tỉ nên số vô tỉ sẽ được 1 thay bằng các ký hiệu (𝑒, 𝑙𝑛.) hoặc các biểu thức đại số (22 …)  Định danh Trong ngôn ngữ giả mã định danh là một chuỗi các chữ cái tiếng anh, tiếng hy lạp, chữ số và dấu gạch dưới. Định danh được sử dụng trong ngôn ngữ giả mã như là biến lập trình tương ứng với kết quả của một phép tính, như một hàm, một toán tử, tên của thủ tục, ký hiệu toán học hoặc các ký tự đặc biệt.  Toán tử đại số và dấu ngoặc Các toán tử đại số được trình bày trong bảng dưới.

Dấu ngoặc được sử dụng để thay đổi cấu trúc của biểu thức. TIEU LUAN MOI download : skknchat@gmail.com 2 Toán tử toán học Toán tử trong ngôn ngữ giả mã Cộng, trừ +, − Nhân, chia ∗,/ Lũy thừa ^ Giai thừa ! Bảng 1.1 Các toán tử đại số  Hàm số Trong ngôn ngữ giả mã hàm số dùng để biểu diễn các hàm toán học như (𝑠𝑖𝑛(𝑥), 𝑒𝑥𝑝(𝑥), 𝑎𝑟𝑐𝑡𝑎𝑛(𝑥).), các toán tử toán học (𝐸𝑥𝑝𝑎𝑛𝑑(𝑢), 𝐹𝑎𝑐𝑡𝑜𝑟 (𝑢), 𝐼𝑛𝑡𝑒𝑔𝑟𝑎𝑙(𝑢, 𝑥 ).), và các hàm như ( 𝑓(𝑥), 𝑔(𝑥, 𝑦).Trong hệ thống đại số máy tính các hàm toán học được định nghĩa thông qua các hành động của các luật biến đổi trong hệ thống. Hàm dùng để thao tác và phân tích biểu thức toán học được gọi là toán tử toán học. Một dạng quan trọng của hàm là dạng không xác định, trong dạng này biểu thức được ký hiệu (𝑓(𝑥), 𝑔(𝑥, 𝑦).

Các hàm dạng này không có luật biến đổi, không có thuộc tính mà chỉ có sự phụ thuộc của tên hàm vào biểu thức bên trong dấu ngoặc đơn.  Các toán tử logic và toán tử quan hệ o Các toán tử quan hệ được sử dụng trong ngôn ngữ giả mã là: =, ≠, <, ≤, >, ≥ o Các tán tử logic: 𝑎𝑛𝑑, 𝑜𝑟, 𝑛𝑜𝑡, 𝑡𝑟𝑢𝑒, 𝑓𝑎𝑙𝑠𝑒  Tập hợp và danh sách o Tập hợp Trong ngôn ngữ giả mã một tập hợp là một tập bao gồm hữu hạn các biểu thức toán học được bao quanh bởi cặp dấu ngoặc ‘{}’ và thỏa mãn hai tính chất sau: 1. Nội dung của một tập hợp không phụ thuộc vào thứ tự của các phần tử trong tập hợp. Các phần tử trong tập hợp phải là duy nhất.

Các toán tử của tập hợp: Cho A và B là hai tập hợp các toán tử của tập hợp được định nghĩa như sau:  Hợp ( A ∪ B ): là một tập mới chứa tất cả các phần tử của A và B. Ví dụ: {𝑎, 𝑏, 𝑐, 𝑑} ∪ {𝑐, 𝑑, 𝑒, 𝑓} → {𝑎, 𝑏, 𝑐, 𝑑, 𝑒, 𝑓}  Giao (A ∩ B): là một tập mới chứa các phần tử có trong cả A và B. Ví dụ: {𝑎, 𝑏, 𝑐, 𝑑} ∩ {𝑐, 𝑑, 𝑒, 𝑓} → {𝑐, 𝑑} o Danh sách Trong ngôn ngữ giả mã một danh sách bao gồm một số hữu hạn các biểu thức toán học và được bao quanh bởi cặp dấu ngoặc ‘[]’. Một danh sách rỗng thì không chứa biểu thức nào và được ký hiệu là [].

TIEU LUAN MOI download : skknchat@gmail.com 3 Danh sách có các tích chất sau: 1. Thứ tự của các phần tử trong danh sách là có ý nghĩa. Các phần tử trong danh sách có thể giống nhau. Cho L, M, N tương ứng là các danh sách và biểu thức x.

Các toán tử của danh sách được định nghĩa như sau:  First(L): toán tử sẽ trả về biểu thức đầu tiên trong L. Nếu L = [] thì toán tử trả về Undefined. - Ví dụ: First([a, b, c]) → a  Rest(L): toán tử trả về một danh sách bao gồm tất cả các biểu thức có trong L ngoại trừ biểu thức đầu tiên. Nếu L = [] thì toán tử trả về Undefined.

- Ví dụ: Rest([a, b, c]) → [b, c]  Adjoin(x, L): toán tử trả về một danh sách mới chứa toán tử đầu tiên là biểu thức x và theo sau là các biểu thức của L., N): toán tử sẽ trả về một danh sách mới chứa các biểu thức của L và các biểu thức có trong các danh sách còn lại. - Ví dụ: Join([a, b], [b, c], [c, d, e]) → [a, b, b, c, c, d, e]  Biểu thức toán học trong ngôn ngữ giả mã Trong ngôn ngữ giả mã biểu thức toán học là bất kỳ biểu thức nào được tạo thành bằng cách sử dụng số nguyên, phân số, số thực, định danh, hàm số, tập hợp, danh sách và các toán tử đại số, toán tử logic, toán tử quan hệ được mô tả ở trên.2 Tính toán biểu thức và chương trình toán học Tính toán biểu thức Thuật ngữ tính toán biểu thức liên quan đến các hành động trong hệ thống đại số máy tính để xử lý một biểu thức đầu vào. Các hành động bao gồm: [13] 1. Phân tích cấu trúc của biểu thức và biến đổi sang cấu trúc của hệ thống.

Tính giá trị của các biến được gán và toán tử toán học xuất hiện trong biểu thức. Áp dụng một số các quy tắc rút gọn cơ bản của đại số và lượng giác. Chương trình toán học Một chương trình toán học hay còn gọi là một thuật toán toán học là một chuỗi các câu lệnh để thực hiện các toán tử và cấu trúc điều khiển trong lập trình đại số máy tính. Cấu trúc của chương trình thường có các tính chất sau: [13] 1.

Các câu lệnh trong chương trình được xem như một đơn vị kết thúc bằng dấu chấm phẩy. Các câu lệnh bao gồm các biểu thức toán học, các câu lệnh gán, câu lệnh quyết định, câu lệnh lặp, hàm và các thủ tục được định nghĩa. TIEU LUAN MOI download : skknchat@gmail. Như với các chương trình thông thường một số câu lệnh có vai trò như là các câu lệnh đầu vào, một số câu lệnh là tính toán trung gian với đầu ra không được hiển thị, một số câu lệnh thì để hiển thị dữ liệu là kết quả của quá trình tính toán.

Chương trình được thiết kế tổng quát để có thể thực hiện một lớp các vấn đề thay vì một vấn đề duy nhất.3 Khái niệm toán học cơ bản 1.1 Số nguyên Trong phần này sẽ đưa ra các tính chất cơ bản của số nguyên và mô tả một số thuật toán quan trọng để thao tác với số nguyên trong đại số máy tính.1: Cho số nguyên 𝑎 và 𝑏 khác 0, có số nguyên 𝑞 và 𝑟 là duy nhất sao cho: 𝑎 =𝑞∗𝑏+𝑟 Số nguyên 𝑞 là thương tương ứng với toán tử 𝑖𝑞𝑢𝑜𝑡(𝑎, 𝑏) và 𝑟 là phần dư tương ứng toán tử 𝑖𝑟𝑒𝑚(𝑎, 𝑏).2:  Số nguyên 𝑏 ≠ 0 là ước của số nguyên 𝑎 nếu có một số nguyên 𝑞 sao cho 𝑎 = 𝑞∗𝑏  Một ước chung của hai số nguyên 𝑎 và 𝑏 là một số nguyên 𝑐 sao cho 𝑐 là ước của 𝑎 và 𝑏.3: Hai số nguyên a và b là số nguyên tố cùng nhau nếu chúng chỉ có ước chung là 1 và -1. Ước chung lớn nhất Ước chung lớn nhất của hai số nguyên 𝑎 và 𝑏 là số nguyên 𝑑 thỏa mãn: 1. d là ước chung của a và b 2. Nếu e là ước chung khác của a và b thì e chia hết cho d 3.

d > 0 Chú ý: Nếu cả 𝑎 và 𝑏 bằng 0 thì định nghĩa trên không được áp dụng. Trong trường hợp này quy định 𝑔𝑐𝑑(0,0) = 0. Thuật toán Euclid để tìm ước chung lớn nhất Định nghĩa 1.4: Cho 𝑎 và 𝑏 là các số nguyên khác 0 và cho 𝑟 = 𝑖𝑟𝑒𝑚(𝑎, 𝑏) thì 𝑔𝑐𝑑(𝑎, 𝑏) = 𝑔𝑐𝑑(𝑏, 𝑟).  Thủ tục thực hiện toán tử tìm ước chung lớn nhất của hai số nguyên a và b TIEU LUAN MOI download : skknchat@gmail.com 5 Procedure 𝐼𝑛𝑡𝑒𝑔𝑒𝑟𝐺𝐶𝐷(a, b); Input a, b : là các số nguyên; Output Ước chung lớn nhất của a và b; Local Variables A, B, R; Begin A := a; B := b; while B = 0 do R := 𝐼𝑟𝑒𝑚(A, B); A := B; B := R; Return(𝐴𝑏𝑠𝑜𝑙𝑢𝑡𝑒𝑉𝑎𝑙𝑢𝑒(A)) End Hình 1.1 Thủ tục tìm ước chung lớn nhất của hai số nguyên a và b Chú ý: - 𝑔𝑐𝑑(𝑎, 𝑏) là ước chung lớn nhất của a và b (Greatest Common Divisor).

- AbsoluteValue(A): giá trị tuyệt đối của A 1.2 Số hữu tỉ Một số hữu tỉ là một phân số 𝑎/𝑏 với 𝑎 và 𝑏 ≠ 0 là các số nguyên. Với định nghĩa trên thì số hữu tỉ có thể biểu diễn dưới nhiều dạng (1⁄2, (−2)/(−4). Quá trình rút gọn sẽ biến đổi số hữu tỉ về dạng chuẩn. Ví dụ: 2/4 → 1/2, 2/(−4) → (−1)/2 (−2)/(−4) → 1/2, 4/1 → 4 Phép biến đổi sẽ thu được bởi luật sau: Định nghĩa 1.5: Cho 𝑎 và 𝑏 là các số nguyên.

Phân số 𝑎/𝑏 là ở dạng chuẩn nếu thỏa mãn hai điều kiện sau: 1.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ