1. Trang chủ
  2. » Cao đẳng - Đại học

Bài tiểu luận môn phương pháp tính nhóm 19

17 653 2

Đ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 17
Dung lượng 605 KB

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

Nội dung

Nguyễn Hiệp Thành Lớp Toán -Văn bằng 2- khóa 2... Đị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

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

2 Nguyễn Thị Ngà

3 Nguyễn Hương Thủy

4 Nguyễn Hiệp Thành

Lớp Toán -Văn bằng 2- khóa 2

Trang 2

I) Đặt vấn đề:

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

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

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

II) Nghiệm của đa thức

1 Định nghĩa : số  được gọi là nghiệm 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ố

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à

Đều kiện đủ:

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

Trang 3

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 = q p 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

Trang 4

Ví dụ 1: cho phương đa trình đa thức P(x) = x2 +4x +3 = 0 Gọi P là ước của 3, và q ước của 1 thì:

P = (-1,1,-3,3),

Q = 1,-1

X1 = 1 thế vào phương trình đa thức trên ta có: P(x1) = 0

X2 = -1 (loại)

X4 = - 3 (nhận)

Ví dụ 2:

Trang 5

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 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

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:

Trang 6

+ 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:

phân tử số là số nguyên)

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

number 2)

 

n

P x t i

m j

=0 thì ta kết luận là nghiệm của đa thức

 

 

t i

 

t i

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 7

- Nhập bậc của đa thức n

- Nhập các hệ số a i(i=0,1, ,n)

 

t i

m j vào đa thức P n (x)

=0

 

t i

- Lưu các nghiệm trùng nhau

- Xuất kết quả

End.

Trang 8

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:

Ðị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 }

Trang 9

: ;

: ;

;

:

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   Kq : array 1 30 of HuuTy; 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

Trang 10

 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 ;

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;

Trang 11

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;

Trang 12

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;

Trang 13

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

Trang 14

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;

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

Trang 15

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]);

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

Trang 16

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

END.

Trang 17

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

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

phân tử số là số nguyên)

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: 02/05/2015, 14:50

TỪ KHÓA LIÊN QUAN

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

w