Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 48 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
48
Dung lượng
269 KB
Nội dung
Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặt lời mở đầu Đạisốđathức là một lĩnh vực quan trọng của đại số. Nó là công cụ để nghiên cứu các phơng trình đạisố trong toán học và nhiều lý thuyết của Toán học hiện đại. Chúng ta đã tiếp xúc với các phép toán về đathức ngay từ học trung học phổ thông. Với học sinh phổ thông việc thực hiện các phép toán đathức là rất cần thiết mặc dầu mất khá nhiều thời gian. Ngày nay tin học đã thâm nhập vào tất cả mọi hoạt động của xã hội loài ngời và máy tính điện tử trở thành công cụ đắc lực không chỉ giảm nhẹ lao động (kể cả lao động có trí tuệ) mà còn giúp thêm cho con ngời những năng lực mới mà trớc đây chúng ta khó hình dung đợc. Việc xây dựng một chơng trình có thể thực hiện đợc các phép tính đathức nhằm hiểu sâu hơn các vấn đề về càiđặt dữ liệu vàcác giải thuật thích hợp với các dữ liệu ấy. Nó sẽ là một công việc có ích cho bản thân đồng thời có thể giúp các học sinh trung học tự kiểm tra các kết quả tính toán khi làm toán với cácđa thức. Với ý nghĩa đó đề tài đã tiến hành nghiên cứu các vấn đề về đạisốđathứcvàcác phơng áncàiđặtđa thức. Nội dung của đề tài đợc trình bày trong năm chơng, ngoài phần mở đầu, kết luận và tài liệu tham khảo. Kết quả chính thu đợc của đề tài: Chơng 1: Đathứcvà phép tính đathức Trong chơng này trình bày đathức nh là một tổng đạisố của các đơn thức một biến vàcác phép toán cơ bản trên tập hợp cácđathức một biến (cộng, trừ, nhân, chia, giá trị của đathức tại một điểm và khái niệm về ớc chung lớn nhất của hai đa thức). Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 1 Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặt Chơng 2: Càiđặtđathức bằng mảng Dựa vào định nghĩa cũng nh các phép toán về đathứcđa ra đ- ợc cách lu trữ đathức trong mảng là mảng một chiều gồm -1 -> n phần tử (n là một số cố định cho trớc), trong đó phần tử đầu tiên lu giá trị bậc của đa thức. Từ đó càiđặtcác phép toán: cộng, trừ, nhân, tính giá trị của đathứcvà tìm ớc chung lớn nhất của hai đathức trên mảng. Tuy nhiên với cách lu trữ này cũng có một số thuận lợi và khó khăn khi càiđặt chơng trình. Chơng 3: Càiđặtđathức bẳng mảng con trỏ Đathức đợc lu trữ bởi một bản ghi gồm hai trờng, một trờng để lu bậc của đathức trờng còn lại là mảng con trỏ. Trong quá trình càiđặtcác phép tóan, khi cần thiết để lu các hệ số của đathức tơng ứng với lũy thừa ta mới cấp phát biến động tơng ứng với chỉ số của mảng con trỏ. Dựa trên lu trữ đathức bằng mảng con trỏ để thực hiện các phép toán đối với đa thức, càiđặt thuật toán cũng giống nh đối với mảng. Chơng 4: Càiđặtđathức bảng danh sách liên kết Các phơng pháp lu trữ đã trình bày ở trên dễ dàng càiđặt nhng rất tốn bộ nhớ. Để khắc phục bằng cách lu trữ đathức dới dạng là một danh sách liên kết bao gồm các nút đợc liên kết với nhau. Mỗi nút là gồm ba trờng: hệ số, lũy thừa và một con trỏ để lu địa chỉ của nút tiếp theo trong danh sách, ngoài ra còn có một nút để chứa bậc của đa thức, nút này là nút đầu trong danh sách. Lu trữ bằng danh sách liên kết phức tạp hơn đối với mảng và mảng con trỏ, vì vậy việc thực hiện càiđặtcác phép toán khó khăn hơn. Bằng cách lu trữ này cũng đãthực hiện thành công việc càiđặtcác phép Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 2 Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặt toán cộng, trừ, nhân, chia, tính giá trị và tìm ớc chung lớn nhất của hai đa thức. Chơng 5: Thiết kế đồ họa Để giao diện thân thiện hơn với ngời sử dụng, đề tài còn nghiên cứu về kỹ thuật đồ họa trong Pascal trong việc tạo menu, dùng tiếng việt trong Pascal và có sử dụng ngắt 33h vàcác hàm của BIOS để điều khiển chuột. Đề tài đợc hoàn thành dới sự hớng dẫn của thầy giáo Tiến sỹ Nguyễn Trung Hòa. Nhân dịp này em xin đợc bày tỏ lòng biết ơn sâu sắc tới thầy giáo hớng dẫn vì sự giúp đỡ và chỉ dẫn hết sức nhiệt tình, chu đáo. Em xin gửi lời cảm ơn tới Nhà trờng, khoa Công nghệ Thông tin đã tạo điều kiện cho chúng em đợc học tập và rèn luyện trong suốt bốn năm học vừa qua. Em xin tỏ lòng biết ơn sâu sắc tới các thầy giáo, cô giáo, bạn bè trong khoa đã giúp đỡ trong quá trình học tập và nghiên cứu. Đề tài không tránh khỏi nhiều thiếu sót. Em kính mong nhận đ- ợc sự chỉ bảo của các thầy giáo, cô giáo và sự góp ý của các bạn trong khoa. Sinh viên Trần Thị Lê Na Chơng 1: đathứcvàcác phép toán đathức Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 3 Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặt 1. Định nghĩa đathức Biểu thức hình thức: (1) f(x) = a n x n + a n-1 x n-1 + . + a 1 x + a 0 - Trong đó a n , a n- 1 , ., a 1 , a 0 K (K là một trờng tuỳ ý) với a n 0, đợc gọi là đathức bậc n. Ta viết degf = n có nghĩa là bậc của f bằng n. - Các phần tử a n , a n-1 , ., a 1 , a 0 K đợc gọi là các hệ tử, x là ẩn - a i x i , i = n,0 là các hạng tử của đathức f(x) - a n x n là hạng tử cao nhất của đathức f(x). - a 0 là hạng tử tự do của đathức f(X). - Đathức f(x) = a n x n , a 0 còn đợc gọi là đơn thức bậc n. - Trong trờng hợp a 0 0, n = 0 thì f(x) có bậc bằng 0. - Đathức f(x) đợc gọi là đathức không nếu và chỉ nếu tất cả các hệ số của nó bằng 0. - Nhấn mạnh ở đây rằng ta luôn đồng nhất biểu thức (1) với các biểu thức dẫn dắt từ (1), tức là tổng theo thứ tự tuỳ ý các đơn thức tham gia trong (1). Nh vậy biểu thức viết theo thứ tự ngợc lại với (1). (2) a 0 + a 1 x + . + a n-1 x n-1 + a n x n cùng là một đathức g(x) đồng nhất với f(x). - Khi K là một trờng sốthực hoặc phức thay cho thuật ngữ hệ tử và hạng tử ta sẽ dùng thuật ngữ hệ sốvàsố hạng. 2. Định nghĩa các phép toán trên đathức 2.1) Phép cộng hai đathức Cho f(x) = a n x n + a n-1 x n-1 + . + a 1 x + a 0 Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 4 Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặtvà g(x) = b n x n + b n-1 x n-1 + . + b 1 x + b 0 , là cácđathức với hệ số trong K. Khi đó đa thức: f(x) + g(x) = (a n + b n ) x n + (a n-1 + b n-1 ) x n-1 + . + (a 1 + b 1 )x + (a 0 + b 0 ) đợc gọi là tổng của hai đathức f(x) và g(x). ở đây nếu bậc của hai đathức không bằng nhau ta viết thêm cácsố hạng với hệ số bằng không. 2.2) Trừ hai đathức Phép trừ hai đathức cũng tơng tự nh phép cộng hai đa thức: Cho f(x) = a n x n + a n-1 x n-1 + . + a 1 x + a 0 và g(x) = b n x n + b n-1 x n-1 + . + b 1 x + b 0 , là cácđathức với hệ số trong K. Khi đó đa thức: f(x) - g(x) = (a n - b n ) x n + (a n-1 - b n-1 ) x n-1 + . + (a 1 - b 1 )x + (a 0 - b 0 ) đợc gọi là hiệu của hai đathức f(x) và g(x). ở đây nếu bậc của hai đathức không bằng nhau ta viết thêm cácsố hạng với hệ số bằng không. 2.3) Phép nhân hai đathức Cho hai đa thức: f(x) = a n x n + a n-1 x n-1 + . + a 1 x + a 0 , a n 0 g(x) = b m x m + b m-1 x m-1 + . + b 1 x + b 0 , b m 0 thì f(x)g(x) = d n+m x n+m + d n+m-1 x n+m-1 + . + d 1 x+ d 0 trong đó d i = =+ ijk a k b j , i = 0, 1, ., n +m. Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 5 Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặt Hiển nhiên degf(X)g(X) = degf(X) + degg(X) f(X)g(X) = g(X)f(X) và f(X)(r(X) + s(X)) = f(X)r(X) + f(X)s(X) 2.4) Phép chia hai đathức Giả sử f, g K[x] và g 0 khi đó f có thể viết duy nhất dới dạng: (1) f = gq + r Với q, r K[x] và degr < degq Biểu thức (1) đợc gọi là phép chia có d đathức f(x) cho đathức g(x) 0. Đathức f(x) đợc gọi là đathức bị chia, đathức g(x) là đathức chia, đathức q(x) là thơng còn đathức r(x) là phần d của phép chia. Nếu r(x) = 0 ta nói f(x) chia hết cho g(x), khi đó ta cũng nói g(x) là một ớc của f(x). 2.5) Tính giá trị của đa thức. Cho đathức f(x) = a n x n + a n-1 x n-1 + . + a 0 . Với các hệ số của đathức a 0 , a 1 , . , a n-1 , a n và x cho trớc. Để tính giá trị của đathức ta dùng thuật toán Horner P = ( . ((a n x + a n-1 )x + a n-2 )x + . + a 1 )x + a 0 , trong đó quá trình truy hồi đợc tiến hành nh sau: P n = a n P n-1 = P n x + a n-1 . P = P 0 = P 1 x + a 0 <=> P := Px + a k Với k = 1,1 n Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 6 Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặt 2.6) Ước chung lớn nhất của hai đa thức. Nhắc lại rằng g K[x], g 0 đợc gọi là ớc chung của f K[x] nếu f chia hết cho g và ta viết f | g. Cho f, g, h K[x]. Ta nói + h là ớc chung của f và g nếu h | f và h | g. + h là ớc chung lớn nhất (UCLN) của f và g, nếu nó là ớc chung của f và g và chia hết cho mọi ớc chung khác. áp dụng thuật chia ECLIDE ta có thể tìm ớc chung lớn nhất của hai đathức f và g không đồng thời bằng không. Thật vậy ta coi g 0. Chia f cho g ta đợc phần d r 1 . Nếu r 1 0, ta chia g cho r 1 , đợc phần d r 2 . Cứ tiếp tục vì bậc của các phần d giảm dần nên tồn tại k 1 sao cho r k-1 | r k . Ta sẽ kiêm lại khi đó rằng. r k = (f, g) Thật vậy xuất phát từ đẳng thức r k-1 = r k h k+1 suy ra r k | r k-2 và cũng vậy r k |r k-3 . Cứ nh vậy ta nhận đợc r k |g và r k |f Bây giờ nếu là một ớc chung tuỳ ý của f và g thì | r 1 và cũng vậy | r 2 . Cứ nh thế ta lại nhận đợc | r k Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 7 Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặt Chơng 2: Càiđặtđathức bằng mảng 1. Lý do càiđặt bằng mảng Cấu trúc mảng là cấu trúc rất quen thuộc ở mọi ngôn ngữ lập trình. Đặc biệt trong ngôn ngữ lập trình Pascal. Nếu nh chúng ta biết cách khai thác và sử dụng sẽ giúp chúng ta giải quyết đợc nhiều bài toán. 1.1) u điểm: - Dùng mảng có lợi điểm là có thể đọc ngợc, đọc xuôi một cách dễ dàng và truy xuất đến một phần tử mảng cũng hết sức nhanh chóng. - Mảng đợc lu trữ kế tiếp nên việc truy nhập vào phần tử của mảng đợc thực hiện trực tiếp dựa vào địa chỉ tính đợc, nên tốc độ nhanh và đồng đều đối với mọi phần tử. 2.2) Nhợc điểm: Mặc dầu có rất nhiều ứng dụng ở đó mảng có thể đợc sử dụng để thể hiện mối quan hệ về cấu trúc giữa các phần tử dữ liệu. Tuy nhiên cũng lộ rõ một số nhợc điểm nh: - Không có phép bổ sung phần tử hoặc loại bỏ phần tử đợc thực hiện đối với mảng. - Không tận dụng đợc các vùng nhớ có kích thớc nhớ nhỏ vì các thành phần của mảng cần đợc lu trữ một cách kế tiếp. - Khi dùng mảng đều phải khai báo trớc kích thớc của mảng. Trong khi đó chúng ta lại không thể dự đoán trớc kích thớc của dữ liệu vì thế thờng xảy ra tình trạng: khai báo kích thớc gây lãng phí bộ Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 8 Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặt nhớ hoặc ngợc lại khai báo thiếu thì máy bị treo không chạy nổi ch- ơng trình. Ví dụ cộng (3x^2 x + 3) Với (2x^2 + x - 3) Để có kết quả là (5x^2) Có thể dùng mảng một chiều để biểu diễn: hệ số của số hạng x i sẽ đợc lu trữ ở phần tử thứ i của mảng một chiều, ta quy ớc bậc của đathức đợc lu trữ ở phần tử -1. Nh vậy phép cộng hai đathức chính là phép cộng hai mảng. Cách biểu diễn đãđa tới phép xử lý đơn giản. Tuy nhiên ta cũng thấy một số nhợc điểm: Đa thức: 3x^2 x + 3 đợc lu trữ Chỉ số mảng -1 0 1 2 2 3 -1 3 Các hệ số tơng ứng các lũy thừa Đa thức: 2x^2 + x 3 đợc lu trữ -1 0 1 2 Kết quả khi cộng hai đathức trên: -1 0 1 2 2 5 0 0 Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 9 2 2 1 -3 Hệ số Khóa luận Tốt nghiệp Đạisốđathứcvàcác phơng áncàiđặt Ta thấy kết quả là một mảng mới biểu diễn nhiều phần tử bằng 0, nó vẫn chiếm ô nhớ trong bộ nhớ, trong khi đó các giá trị đó không sử dụng tới khuynh hớng này tạo ra sự lãng phí bộ nhớ rất rõ. 2. Định nghĩa kiểu mảng. Kiểu mảng (Array) là một kiểu dữ liệu có cấu trúc gồm một số cố định các phần tử có cùng một kiểu dữ liệu đặt sau tên mảng. Nói cách khác, dữ liệu kiểu mảng là một mảng (dãy) của nhiều dữ liệu thuộc một kiểu khác. Kiểu mảng có những đặc trng sau: - Các phần tử của mảng phải cùng kiểu, kiểu đó gọi là kiểu cơ sở hay kiểu thành phần. - Các phần tử trong mảng có chỉ số, tức là vị trí số thứ tự của chúng trong mảng. Kiểu của chỉ số phải là kiểu rời rạc. Mỗi phần tử có thể đợc truy nhập trực tiếp thông qua chỉ số. - Các chỉ số là các biểu thức nằm trong dấu ngoặc vuôn [] đặt ngay sau tên mảng và kiểu của chúng gọi là kiểu chỉ số. - Kiểu chỉ số là một kiểu nguyên hoặc miền con, giá trị của chỉ số có thể là âm hoặc dơng. 3. Cách khai báo. 3.1) Khai báo gián tiếp TYPE <Tên kiểu mảng> = Array[<chỉ số>] of <kiểu>; VAR <Tên biến>:<Tên mảng>; Trần Thị Lê Na Lớp 43B1 - khoa Công nghệ Thông tin - Đại học Vinh 10 . nghiệp Đại số đa thức và các phơng án cài đặt lời mở đầu Đại số đa thức là một lĩnh vực quan trọng của đại số. Nó là công cụ để nghiên cứu các phơng trình đại. tin - Đại học Vinh 1 Khóa luận Tốt nghiệp Đại số đa thức và các phơng án cài đặt Chơng 2: Cài đặt đa thức bằng mảng Dựa vào định nghĩa cũng nh các phép