Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
243,5 KB
Nội dung
TRƯỜNG ĐẠI HỌC SƯ PHẠM THÀNH PHỐ HỒ CHÍ MINH ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ Tiểu luận Môn: phương pháp tính Chủ đề 19: một số phương pháp tính đúng nghiệm của phương trình đa thức GVHD: TS. Trịnh Công Diệu SVTH: 1) Lê Văn Sang 1) Nguyễn Thị Ngà 2) Nguyễn Hương Thủy 3) Nguyễn Hiệp Thành Lớp Toán -Văn bằng 2- khóa 2 I) Đặt vấn đề: xét đa thức bặc n của x có dạng như sau: P n (x) = a n x n + a n-1 x n-1 + …+ a 1 x+a 0 Với các hệ số a i (i=0…n) là các hệ số thực a n ≠ 0 nếu không cần nhấn mạnh biến x, đôi khi ta viết biểu thức (1) dưới dạng: P n (x) = (a n , a n-1 , …, a 0 ) Tập các hệ số a n , …,a 0 của đa thức P(x) sẽ được kí hiệu là α P(x) hay α P n II) Nghiệm của đa thức 1. Định nghĩa : số α được gọi là nghiệp của đa thức P n (x) hay còn gọi là nghiệm của phương trình P n (x) = 0 nếu ta có P( α ) = 0 2. Định lí 1 : giả sử P n (x) có bậc n ≥ 1 điều kiện cần và đủ để đa thức P n (x) có nghiệm α là nó chia hết cho x- α P n (x) = (x- α )Q(x) (2) trong đó Q(x) là đa thức có bậc n-1 Chứng minh: Điều kiện cần: nếu P n (x) có nghiệm là α ta chia P n (x) cho x- α P n (x) = (x- α )Q(x) + r (3) Trong đó Q(x) là đa thức bậc n-1, còn r là đa thức bậc 0, tức r là hằng số Thay x = α vào 2 vế của (3) ta được: P n ( α ) = r = 0 → P n (x) chia hết cho x- α Trường hợp P n (x) có bậc là 0,(P n (x) = a n = const) thì nó bằng 0 với mọi x nếu a n = 0 và khác 0 với mọi x nếu a n ≠ 0 Đều kiện đủ: Nếu P n (x) có dạng như biểu thức (2) thì rõ ràng P n ( α ) = 0 do đó nó có nghiệm là α 3. định lí 2 : mọi đa thức P n (x) mà bậc n ≥ 1 đều có ít nhất một nghiệm thực hoặc phức đây là định lí cơ bản của đại số học ta thừa nhận nó mà không chứng minh. III. Nghiệm hữu tỉ của đa thức: Để tìm nghiệm hữu tỉ của đa thức: P n (x) = a n x n + a n-1 x n-1 + …+ a 1 x+a 0 ( a n ≠ 0) Ta dựa vào nội dung của định lí sau: Định lí 3: nếu a n , a n-1 ,…, a 1 , a 0 là các hệ số nguyên của P n (x) thì nghiệm hữu tỉ của P n (x) nếu có sẽ là x = p q trong đó: P và q là nguyên tố cùng nhau (p, q = 1) P là ước của a 0 , còn q là ước của a n B. XÂY DỰNG CHƯƠNG TRÌNH TÌM NGHIỆM CỦA ÐA THỨC BẬC N I. Ý tưởng giải thuật của chương trình - Để tìm nghiệm hữu tỉ của đa thức bậc n: • P n (x) = a n x n + a n-1 x n-1 + …+ a 1 x+a 0 =0 • Ta dựa vào nội dung của định lý số 3 ta đưa ra thuật giải như sau: 1. Diễn đạt bằng ngôn ngữ tự nhiên: - Bước 1: Cung cấp số liệu cho bài toán: + Nhập bậc của đa thức n với n ≥ 0 +Nhập các hệ số i a (i=0,1, ,n) của đa thức với n a ≠ 0 - Bước 2: tìm các ước số 0 a , n a : + Tìm number1 các ước số của 0 a , lưu các giá trị ước số này vào mảng t ( có kiểu phân tử số là số nguyên) + Tìm number1 các ước số của n a , lưu các giá trị ước số này vào mảng m ( có kiểu phân tử số là số nguyên) - Bước 3: thực hiện phép thử để tìm nghiệm: + Ta lần lượt thay các giá trị [ ] [ ] t i m j vào đa thức P n (x) = (i=1…number1, j=1…number 2) + Nếu thỏa mản đa thức tức là: ( ) [ ] [ ] n P x t i m j ÷ ÷ =0 thì ta kết luận là nghiệm của đa thức [ ] [ ] t i m j và lưu giá trị này vào mảng kết quả có kiểu phần tử là số hữu tỉ. + Ngược lại thì [ ] [ ] t i m j không là nghiệm của đa thức và không lưu giá trị này vào mảng kết quả (kq). - Bước 4: giả sử đa thức P n (x) có k nghiệm hữu tỉ k>0 thì ta lần lượt xét các phần tử kq[i], với i= 1 k để loại bỏ các phần tử bằng nhau (do kq[i] chưa phải là tối giản) - Bước 5: Thông báo kết quả: + Nếu k>0 thì đa thức đã cho có nghiệm hữu tỉ. ta đưa thông báo các kết quả lên màn hình + Nếu k=0 thì thì thông báo đa thức không có nghiệm hữu tỉ. 2. Diễn đạt bằng lưu đồ: II. Xây dựng chương trình 1. Khai báo kiểu: Dựa vào các bước của giải thuật ta thấy cần các khai báo như sau: Begin - Nhập bậc của đa thức n - Nhập các hệ số i a (i=0,1, ,n) - tìm các ước số 0 a lưu vào mảng t - tìm các ước số n a lưu vào mảng m - Thay [ ] [ ] t i m j vào đa thức P n (x) =0 - Lưu [ ] [ ] t i m j vào mảng kết quả - Lưu các nghiệm trùng nhau - Xuất kết quả End. Ðịnh nghĩa kiểu số hữu tỷ: Do trong ngôn ngữ Pascal không định nghĩa kiểu số hữu tỷ. Do đó ta phải định nghĩa kiểu số hữu tỷ: : ; : ; ; Type HuuTy Record Ts Integer Ms Integer End = Ta định nghĩa số hữu tỷ là một Record gồm có 2 trường có kiểu số nguyên ( Integer ) là Ts (Tử số) và Ms (Mẫu số). Ðịnh nghĩa một kiểu Mang là một array gồm các phần tử có kiểu số nguyên để sử dụng trong chương trình. [ ] : 1 50 ; Type Mang Array of Integer 2. Khai báo biến: Biến r có kiểu là số hữu tỷ, lưu giữ giá trị số hữu tỷ trong quá trình tính toán Các biến a, t, m có kiểu là mang lưu trữ các hệ số của đa thức, các ước số của a o và a n Biến kq là 1 mảng có kiểu phần tử là số hữu tỷ để luu7 giữ nghiệm hữu tỷ của đa thức Biến Number1, Number2 cho biết số các ước số của a o và a n n là bậc của đa thức ( ) n P x ngoài ra còn có các biến được sử dụng trong các vòng lặp và xác định điều kiện trong quá trình tính toán Tóm lại, ta có phần khai báo đầu chương trình như sau: Uses Crt; { Sử dụng Unit màn hình } : ; : ; ; : Type HuuTy Record Ts Integer Ms Integer End Mang Array = [ ] 1 50 ; : ; , , , , 1, 2 : ; , , : ; 1, 2 : ; of Integer Var r HuuTy n i j k Number Number Integer a t m Mang Bien Bien Boolean [ ] : 1 30 ;Kq array of HuuTy 3. Các thủ tục và hàm sử dụng trong chương trình: • Procedure ( ) : ; Nhap Var r HuuTy Chức năng: Thủ tục này cho phép nhập vào 1 số dạng hữu tỷ • Procedure ( ) : ;Viet r HuuTy Chức năng: Thủ tục này cho phép trình bày ( viết ) ra màn hình 1 số dạng hữu tỷ • Procedure ( ) : ; : ; : ;Us n integer Var b mang Var so integer Chức năng: Thủ tục này sẽ tìm các ước số của số nguyên n, lưu các giá trị này vào mảng b, và số các ước số vào biến so. • Function ( ) , : : ;Usln n m integer integer Chức năng: Hàm này sẽ tìm ước số chung lớn nhất của 2 số nguyên n và m. • Procedure ( ) 1 : ; : ;ToiGian r HuuTy Var r HuuTy Chức năng: Thủ tục này cho phép tối giản hóa 1 số hửu tỷ bằng cách chia tử và mẫu số cho ước số chung lớn nhất của chúng. • Function ( ) 1, 2 : : ;Bang r r HuuTy Boolean Chức năng: Hàm này so sánh 2 số hữu tỷ r1 và r2. Trả về giá trị true nếu r1 = r2 và false nếu ngược lại. • Procedure ( ) 1, 2 : ; : ;Cong r r HuuTy Var r HuuTy Chức năng: Thủ tục này thực hiện phép cộng 2 số hữu tỷ r1, r2 và lưu kết quả vào số hữu tỷ r. • Procedure ( ) 1, 2 : ; : ;Tru r r HuuTy Var r HuuTy Chức năng: Thủ tục này thực hiện phép trừ 2 số hữu tỷ r1, r2 và lưu kết quả vào số hữu tỷ r • Procedure ( ) 1, 2 : ; : ;Nhan r r HuuTy Var r HuuTy Chức năng: Thủ tục này thực hiện phép nhân 2 số hữu tỷ r1, r2 và lưu kết quả vào số hữu tỷ r • Procedure ( ) 1, 2 : ; : ;Chia r r HuuTy Var r HuuTy Chức năng: Thủ tục này thực hiện phép chia 2 số hữu tỷ r1, r2 và lưu kết quả vào số hữu tỷ r. • Procedure ( ) : , 1 : ; : ;LuyThua n integer r HuuTy Var r HuuTy Chức năng: Thủ tục này thực hiện phép lũy thừa bậc n của số hữu tỷ r1 và lưu kết quả vào số hữu tỷ r. • Procedure ( ) 1 : ; : ;Doi r HuuTy Var r HuuTy Chức năng: Thủ tục này cho phép lấy số hữu tỷ đối với số hữu tỷ đã cho. • Procedure ( ) _ _ : ; : ;Doi So Nguyen n integer Var r HuuTy Chức năng: Thủ tục này cho phép đổi 1 số nguyên n thành một số hửu tỷ r. • Function ( ) : ; : ; : : ;Thu r HuuTy n integer a Mang Boolean Chức năng: Hàm này có chức năng kiểm tra xem số hữu tỷ r có phải là nghiệm hữu tỷ của đa thức không ? Nếu đúng thì trả về true cho kết quả hàm và false nếu ngược lại. III. Chương trình cụ thể Uses Crt; Type HuuTy=Record ts:Integer; ms:Integer; End; Mang=array[0 50] of Integer; Var r:HuuTy; n,i,j,k,number1,number2:Integer; a,t,m:mang; bien1,bien2:boolean; Kq:Array[1 30] of HuuTy; Ch:Char; Procedure Nhap(var r:HuuTy); Begin Write('Nhap tu so :');readln(r.ts); Write('Nhap mau so :');readln(r.ms); Writeln; End; Procedure Viet(r:HuuTy); Begin If (r.ms<0) Then Begin r.ts:=-r.ts; r.ms:=-r.ms; End; If (r.ms=1) Then Write(r.ts) Else Write('(',r.ts,'/',r.ms,')'); End; Procedure Usc(n:Integer;Var b:Mang;Var so:Integer); Var i,j:Integer; Begin n:=abs(n); j:=0; For i:=1 to n Do If (n mod i)=0 Then Begin j:=j+1; b[j]:=i; j:=j+1; b[j]:=-i; End; so:=j; End; Function Usln(n,m:Integer):Integer; Begin n:=abs(n); m:=abs(m); If (n=0) or (m=0) Then Exit; Repeat If n>m Then Begin n:=n Mod m; Usln:=m; End Else Begin m:=m Mod n; Usln:=n; End; Until (n=0) or (m=0); End; Procedure ToiGian(r1:HuuTy;Var r:HuuTy); Var Tam:Integer; Begin Tam:=Usln(r1.ts,r1.ms); r.ts:=Round(r1.ts/Tam); r.ms:=Round(r1.ms/Tam); End; Function Bang(r1,r2:HuuTy):boolean; Var Tam1,Tam2:HuuTy; Begin ToiGian(r1,Tam1); ToiGian(r2,Tam2); If ((Tam1.ms=Tam2.ms) And (Tam1.ts=Tam2.ts)) Or ((Tam1.ms=-Tam2.ms) And (Tam1.ts=-Tam2.ts)) Then Bang:=True Else Bang:=False; End; Procedure Cong(r1,r2:HuuTy;Var r:HuuTy); Begin r.ts:=r1.ms*r2.ts+r2.ms*r1.ts; r.ms:=r1.ms*r2.ms; End; Procedure Tru(r1,r2:HuuTy;Var r:HuuTy); Begin r.ts:=r1.ts*r2.ms-r2.ts*r1.ms; r.ms:=r1.ms*r2.ms; End; Procedure Nhan(r1,r2:HuuTy;Var r:HuuTy); Begin r.ts:=r1.ts*r2.ts; r.ms:=r1.ms*r2.ms; End; Procedure Doi(r1:HuuTy;Var r:HuuTy); Begin r.ts:=-r1.ts; r.ms:=r1.ms; End; Procedure Doi_So_Nguyen(n:Integer;Var r:HuuTy); Begin r.ts:=n; r.ms:=1; End; Procedure Chia(r1,r2:HuuTy;Var r:HuuTy); Begin r.ts:=r1.ts*r2.ms; r.ms:=r1.ms*r2.ts; End; Procedure LuyThua(n:Integer;r1:HuuTy;Var r:HuuTy); Var i:Integer; Begin r.ts:=1; r.ms:=1; If n>0 Then For i:=1 to n Do Begin r.ts:=r.ts*r1.ts; r.ms:=r.ms*r1.ms; End; End; Function Thu(r:HuuTy;n:Integer;a:Mang):Boolean; [...]... thuật của chương trình - Để tìm nghiệm hữu tỉ của đa thức bậc n: Pn(x) = anxn + an-1xn-1 + …+ a1x+a0 =0 Ta dựa vào nội dung của định lý số 3 ta đưa ra thuật giải như sau: 1 Diễn đạt bằng ngôn ngữ tự nhiên: - Bước 1: Cung cấp số liệu cho bài toán: + Nhập bậc của đa thức n với n ≥ 0 +Nhập các hệ số ai (i=0,1, ,n) của đa thức với an ≠ 0 - Bước 2: tìm các ước số a0 , an : + Tìm number1 các ước số của a0... thức với an ≠ 0 - Bước 2: tìm các ước số a0 , an : + Tìm number1 các ước số của a0 , lưu các giá trị ước số này vào mảng t ( có kiểu phân tử số là số nguyên) + Tìm number1 các ước số của an , lưu các giá trị ước số này vào mảng m ( có kiểu phân tử số là số nguyên) - Bước 3: thực hiện phép thử để tìm nghiệm: + Ta lần lượt thay các giá trị • • ... Tam1.ts:=0; Tam1.ms:=1; For i:=n Downto 0 Do Begin LuyThua(i,r,r1); Doi_So_Nguyen(a[i],r2); Nhan(r1,r2,r3); Cong(r3,Tam1,Tam2); Tam1:=Tam2; End; If Tam2.ts=0 Then Thu:=True Else Thu:=False; End; BEGIN {Chương trình chính} Repeat Clrscr; Writeln('CHUONG TRINH TIM NGHIEM HUU TY CUA DA THUC BAC n'); Writeln(' *************** '); Writeln; Write('Nhap bac cua da thuc n=');Readln(n); Writeln('Nhap cac he so da thuc:'); . ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ Tiểu luận Môn: phương pháp tính Chủ đề 19: một số phương pháp tính đúng nghiệm của phương trình đa thức GVHD: TS. Trịnh Công Diệu SVTH: 1) Lê Văn Sang 1). Cung cấp số liệu cho bài toán: + Nhập bậc của đa thức n với n ≥ 0 +Nhập các hệ số i a (i=0,1, ,n) của đa thức với n a ≠ 0 - Bước 2: tìm các ước số 0 a , n a : + Tìm number1 các ước số của 0 a ,. nghiệp của đa thức P n (x) hay còn gọi là nghiệm của phương trình P n (x) = 0 nếu ta có P( α ) = 0 2. Định lí 1 : giả sử P n (x) có bậc n ≥ 1 điều kiện cần và đủ để đa thức P n (x) có nghiệm