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

một số phương pháp tính đúng nghiệm của phương trình đa thức

13 835 0

Đ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 13
Dung lượng 243,5 KB

Nội dung

định lí 2 : mọi đa thức Pnx 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.. XÂY DỰNG CHƯƠNG TRÌNH TÌM NGH

Trang 1

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

Trang 2

xét đa thức bặc n của x có dạng như sau:

Pn(x) = anxn + an-1xn-1 + …+ a1x+a0

Với các hệ số ai(i=0…n) là các hệ số thực

an  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:

Pn(x) = (an, an-1, …, a0)

Tập các hệ số an, …,a0 của đa thức P(x) sẽ được kí hiệu là  P(x) hay  Pn

1 Định nghĩa : số  được gọi là nghiệp của đa thức Pn(x) hay còn gọi là nghiệm của phương trình Pn(x) = 0 nếu ta có P( ) = 0

2 Định lí 1 : giả sử Pn(x) có bậc n  1 điều kiện cần và đủ để đa thức Pn(x) có nghiệm 

là nó chia hết cho x-

Pn(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 Pn(x) có nghiệm là  ta chia Pn(x) cho x-

Pn(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:

Pn( ) = r = 0  Pn(x) chia hết cho x- 

Trường hợp Pn(x) có bậc là 0,(Pn(x) = an = const) thì nó bằng 0 với mọi x nếu an= 0 và khác 0 với mọi x nếu an  0

Đều kiện đủ:

Nếu Pn(x) có dạng như biểu thức (2) thì rõ ràng Pn( ) = 0 do đó nó có nghiệm là 

3 định lí 2 : mọi đa thức Pn(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:

Pn(x) = anxn + an-1xn-1 + …+ a1x+a0 ( an  0)

Ta dựa vào nội dung của định lí sau:

Định lí 3: nếu an, an-1,…, a1, a0 là các hệ số nguyên của Pn(x) thì nghiệm hữu tỉ của Pn(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 a0, còn q là ước của an

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

Trang 3

- Để 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ố a i(i=0,1, ,n) của đa thức với a n 0

- Bước 2: tìm các ước số a0, a n:

+ 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 a n, 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 Pn(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 Pn(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 đồ:

Trang 4

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ố a i(i=0,1, ,n)

- tìm các ước số a0lưu vào mảng t

- tìm các ước số a nlưu vào mảng m

 

t i

m j vào đa thức Pn(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

Trang 5

Ðị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 ao và an  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 ao và an  n là bậc của đa thức P x n 

 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

 

Kq : array 1 30 of HuuTy;

Trang 6

3 Các thủ tục và hàm sử dụng trong chương trình:

 Procedure NhapVar 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 ToiGian r 1 :  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 Bang 1, 2 :  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 Cong r r 1, 2 :  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 Tru r r 1, 2 :  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 Nhan r r 1, 2 :  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 Chia r r 1, 2 :  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 LuyThua :  n integer r, 1 : HuuTy Var r; : HuuTy ;

Trang 7

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 Doi r 1 :  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

Trang 8

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

Trang 9

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;

Trang 10

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;

Trang 11

Var r1,r2,r3,Tam1,Tam2:HuuTy;

i,j:Integer;

Begin

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:');

For i:=n DownTo 0 Do

Begin

Write(' Nhap he so a[',i,']=');

Readln(a[i]);

end;

Writeln('Ta co da thuc :');write('P(x)=');

For i:=n DownTo 1 Do

Write(a[i],'*x^',i,' + ');

Writeln(a[0]);

Trang 12

Writeln;

Usc(a[0],t,Number1);

Usc(a[n],m,Number2);

k:=0;

For i:=1 to Number1 Do

For j:=1 to Number2 Do

Begin

r.ts:=t[i];

r.ms:=m[j];

If Thu(r,n,a) Then

Begin

k:=k+1;

Kq[k]:=r;

End;

End;

Bien2:=False;

For i:=1 to k Do

Begin

Bien1:=True;

For j:=1 to i-1 Do

If Bang(Kq[i],Kq[j]) Then

Bien1:=False;

If Bien1 Then

Begin

ToiGian(Kq[i],Kq[i]);

Viet(Kq[i]);

Writeln(' La nghiem cua da thuc da cho');

End;

Bien2:=True;

End;

If Not(Bien2) Then

Writeln('Phuong trinh khong tim duoc nghiem huu ty !'); Write(' Tiep tuc hay khong (C/K)');Readln(ch);

Until Upcase(ch)='K';

Trang 13

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:

 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ố a i(i=0,1, ,n) của đa thức với a n 0

- Bước 2: tìm các ước số a0, a n:

+ 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 a n, 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ị

Ngày đăng: 29/12/2014, 16:30

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w