Chuyển đa thức từ dạng ctsr này sang dạng ctsr khác .... Đa thức được biểu diễn duy nhất dưới các dạng sau: •Dạng chính tắc: với •Dạng chuẩn tắc: với •Dạng chính tắc suy rộng: với •Dạ
Trang 1GVHD: TS Trịnh Công Diệu Lớp: Toán VB2-K2 – NHÓM 2
BỘ GIÁO DỤC VÀ ĐÀO TẠO Trường Đại Học Sư Phạm TP.HCM
Khoa Toán – Tin
THÀNH VIÊN NHÓM 2:
1 NGUYỄN THỊ MỸ THUẬN
2 MAI XUÂN BÌNH
3 PHẠM THỊ KIM CƯƠNG
4 PHẠM THẾ SINH
Trang 2I ĐẶT VẤN ĐỀ 1
II GIẢI QUYẾT VẤN ĐỀ 1
1 Định lí về phép chia có dư 2
2 Thuật toán tính giá trị của đa thức 3
3 Cơ sở lí luận cho bài toán chuyển đổi 3
4 Chuyển đa thức từ dạng ctsr này sang dạng ctsr khác 7
4.1 Thuật toán 7
4.2 Ví dụ 8
4.3 Chương trình 10
III KẾT LUẬN 11
IV Bổ sung dạng chuyển đổi đa thức 11
1 Chuyển đa thức từ dạng chính tắc sang dạng chuẩn tắc suy rộng ……… 11
2 Chuyển đa thức từ dạng chuẩn tắc suy rộng sang dạng chính tắc ……… 13
V.TÀI LIỆU THAM KHẢO 17
MỤC LỤC
Trang 3I Đặt vấn đề:
Cho là một đa thức bậc n theo biến Đa thức được biểu diễn duy nhất dưới các dạng sau:
•Dạng chính tắc:
với
•Dạng chuẩn tắc:
với
•Dạng chính tắc suy rộng:
với
•Dạng chuẩn tắc suy rộng:
với Vấn đề đặt ra là làm thế nào để chuyển đa thức từ dạng này sang dạng khác ?
II Giải quyết vấn đề:
1 Cơ sở lí luận
Ta nhận thấy dạng chính tắc, chuẩn tắc, chính tắc suy rộng là các trường hợp đặc biệt của dạng chuẩn tắc suy rộng
Dạng chuẩn tắc:
Dạng chính tắc suy rộng:
1 Định lý: về phép chia có dƣ
Trong trường số thực R, cho hai đa thức P(x) và Q(x) bất kỳ của vành , trong đó
deg(Q) 1, tồn tại duy nhất các đa thức S(x) và R(x) thoả mãn đồng thời các điều kiện:
i) P(x) = Q(x).S(x) + R(x)
ii) deg(R) < deg(Q)
( )
0
( )
n
i
i
i
a a a0 ; ; 1 2 ;a nR
0
n
i i
i
;a0 ; a a1 ; 2 ;a nR
[ ]
0
( )
n
i i
i
a a1 ; 2 ;a nR
[ ; ] 0
n
i h i
i
;a0 ; a a1 ; 2 ;a nR
h 0
h
1, 0
h
[ ]
R x
Trang 4Chứng minh
Tồn tại.Ta chứng minh bằng quy nạp theo m = deg(P), n = deg(Q) Nếu deg(P) < deg(Q) thì ta có
thể chọn S(x) 0 và R(x) = P(x) thoả mãn đồng thời các điều kiện i) và ii) Giả sử m n và định
lý đã được chứng minh với các đa thức có bậc nhỏ hơn m Ta chứng minh định lý đúng với các đa thức bậc m Giả sử
Xét đa thức
Do hệ số của xm ở hai đa thức bị triệt tiêu nên bậc của H(x) không vượt quá m-1 Theo giả thiết quy nạp, tồn tại các đa thức S*(x), R*(x) sao cho
H(x) = S*(x).Q(x) + R*(x)
Nhưng khi đó
Vậy đặt S(x) = (am/bn)xm-n + S*(x) và R(x) = R*(x) ta được biểu diễn cần tìm cho P(x)
Duy nhất Giả sử ta có hai biểu diễn P(x) = S(x).Q(x) + R(x) và P(x) = S*(x).Q(x) + R*(x) thoả
mãn điều kiện ii) Khi đó Q(x).(S(x)-S*(x)) = R*(x) – R(x) Ta có, theo điều kiện ii) và định lý 1 thì deg(R*(x) – R(x)) < deg(Q) Mặt khác, nếu S(x) – S*(x) không đồng nhất bằng 0 thì deg(Q(x).(S(x)-S*(x))) = deg(Q(x)) + deg(S(x)-S*(x)) deg(Q) Mâu thuẫn vì hai vế bằng nhau Theo ký hiệu của định lý thì S(x) được gọi là thương số và R(x) được gọi là dư số trong phép chia P(x) cho Q(x)
k
k k m
k
k
k x Q x b x a
x
P
0 0
) ( , )
(
)
( )
(
) ( )
( )
(
1 1 1
0 0
1 1
1
m n
n m m
n n n m n
m m
m m m
n m n m
x b
b a a
b x
b x b
a a x a x
a x
a
x Q x b
a x P x
H
( ) ( ) m m n ( ) ( m m n *( )) ( ) *( )
Trang 52 Thuật toán tính giá trị của đa thức
Suy ra:
(Số dư trong phép chia đa thức P(x) cho x–α là P(α).)
Chứng minh:
Ta chỉ cần chứng minh P(x) - P(α) chia hết cho x- α Nhưng điều này là hiển nhiên vì
P(x) - P(α)=a n (x n - α n )+a n−1 (x n−1 - α n−1 )+ + a 1 (x− α)
và
x k - α k =(x− α)(x k−1 + α x k−2 + + α k−1)
3 Cơ sở lí luận cho Bài toán chuyển đổi:
Cho đa thức dưới dạng chuẩn tắc suy rộng như sau
(1)
Ta sẽ biểu diễn về dạng chuẩn tắc suy rộng như sau:
(2)
Để thực hiện được việc chuyển dạng này ta cần xác định các hệ số
Ta có:
[ , ] 0
( )
n
i h i
i
x x
P x b x Q x
P b
( )
P x
[ ; ] 0
n
i h i
i
( )
P x
[ ; ] 0
n
i k i
i
, k R
( 0, )
i
b i n
,
[ , ] 0
1
0
1
0
1
0 [ -1, ]
1 , 1
n n
n
i h i
i
n
i
n
i
n
i
n h
n n
b
b
2
0
n
i i
Trang 6với
Khi đó, ta có
Mà theo thuật toán tính giá trị đa thức ta có:
,
2
1
0 , 1
n n
n
i
n n
b
b
0
n
i
, 2
,1
3
0
n n
n
n
i
b
b
,0
0
[ -1, ] [ -2, ]
[ 1, ] ,
1
n
n
i h
i
b
,0
1, 2, ,1, 0
n n n
n,0
P b
P b
0 n,0
b b P
1
n
i h
n i i
1, 1
[ 1, ]
1
1
1
2
1
[ 2, ] 1,
n n
n
i h
n i i
n
i
n
i
n h
b
1, 2
2
1
[
3 ( )
n n
n
i
n
b
3
, 1
n
n i i
Trang 7với
Tương tự, ta có
Khi đó
Tiếp tục làm như trên, sau n-2 bước ta có:
với
Bước n-1: Đặt
Vậy sau n-1 bước ta thu được P(x) có dạng sau:
[ 2, ] 1,
1,1
n h
n n
b
[ 3, ]
[ 2, ]
2
n h
n
i h
i
1, 2, , k
n n n n
b P k b
2
n
i h
i
1
i n
k
1 ,
1
2
n
i n h
i n
2 n 2 2) k 2,n 2
b P n b
1
n
i n h
i n
P x b x
1 ,
1
1
n
i n h
i n
Trang 8Ta tóm tắt lại quá trình trên như sau:
…
…
[ , ] 0
i h i
i
1
0
[ ,k ] 0
n
i i
i
b
b x
,
n n
0
n
b
k
1,
n n
1
n
b
2
n n 2k b 2,n b2,n1
2, 2 2 2
2
n
n
n
b
b
k
1
n n 1k b 1,n b n 1, 1 1
1
1 =
n
b
k
Trang 94 Chuyển đa thức từ dạng chuẩn tắc suy rộng này sang dạng chuẩn tắc suy rộng khác
4.1 Thuật toán: Chuyển đa thức từ dạng chuẩn tắc suy rộng này sang dạng chuẩn tắc suy rộng
khác
- Nhập:
n{ bậc của đa thức}
h,k {lần lượt là bước nhảy của dạng chuẩn tắc suy rộng ban đầu và dạng chuẩn tắc suy rộng cần chuyển đổi.}
- Xuất:
- Thuật toán:
1 Gán
2 Với mỗi j chạy từ 0 đến n-1,
với mỗi i chạy từ n-1 đến j Gán
Gán
Thuật toán trên có thể được trình bày dưới dạng bảng sau: (Nhân chéo, cộng dọc)
…
…
…
…
…
0
, , , ,
n
i h
i
[ , ]
0
n
i k
i
:
n n
b a
1
:
a a jk i j ha
:
i i
b a
0, , ,1 n
n 1h
n 2h h
0 b n n, b n n, 1 b n n, 2 b n,1 b n,0 b0
k n 3h k
1 k b n1,n b n 1,n 1 b n1,n2 b n1,1b1
1
n n 1k b 1,n b n b1,n1=b n1
Trang 102 Các ví dụ:
Ví dụ 1:
thức ở dạng chuẩn tắc suy rộng
Gỉai:
Ta có:
Bước 1:Xác định các hệ số ban đầu
Bước 2: Điền vào bảng
Suy ra:
Bước 3: Vậy dạng biểu diễn ở dạng chuẩn tắc suy rộng: là:
5
( ;2) 0
( ) ( 1)i
i i
a0 1,a1 2,a2 3,a3 4,a4 5,a5 6
( )
P x
5
( ;1) 0
( ) i( 2)i
i
5
[ ;2]
0
( ) i( 1)i
i
( )
P x
5
( ;1) 0
( ) ( 2)i
i i
5
0
( ) i( 2)i 567 562( 2) 168( 2) 24( 2) 25( 2) 6( 2)
i
Trang 11Ví dụ 2:
diễn đa thức ở dạng chuẩn tắc suy rộng với
Giải:
Ta có:
được ghi ở dạng chuẩn tắc suy rộng như sau:
, với (2)
Bước 1:Xác định các hệ số ban đầu
Bước 2: Điền vào bảng
-1088
Suy ra:
Bước 3: Vậy dạng biểu diễn ở dạng chuẩn tắc suy rộng với là:
7
0
( ) i i
i
a0 4,a1 0,a2 1,a3 1,b4 3,a5 2,a6 5,a7 6
( )
[ ;0]
( ) i i i( 0)i
( )
P x
[ ; ]
( ) i i i( ( 2))i k
2,k 1
0 1088, 1 1084, 2 538, 3 179, 4 22, 5 71, 6 37, 7 6.
( )
7
( ; ) 0
( ) ( 2)
1088 1084( 2) 538( 2) 179( 2) 22( 2) 71( 2) 37( 2) 6( 2)
i k i
i
Trang 123.Chương trình tương ứng:
#include <stdio.h>
#include <conio.h>
void main()
{
int n, i, j;
float alpha, beta, h, k;
float hs[36], hsc[36], hsd[36];
printf("Bien doi dang Da thuc.\n");
printf("Chuan tac suy rong sang chuan tac suy rong.\n");
printf("Nhap n, alpha va h: ");
scanf("%d" "%f" "%f", &n, &alpha, &h);
printf("Nhap beta va k: ");
scanf("%f" "%f", &beta, &k);
hsd[n]=0;
for(i=0; i<= n; i++)
{
printf("Nhap vao he so a%d: ",i);
scanf("%f", &hs[i]);
}
printf("%6s"," ");
for (i=n; i>=0; i )
{
printf("%6.1f ", hs[i]);
}
for (j=0;j<n;j++)
{
for (i=n-1;i>=j;i )
{
hsc[j]=beta+(j*k);
hsd[i]=(beta+(j*k)-alpha+((j-i)*h));
hs[i]=hs[i]+hs[i+1]*(beta+(j*k)-alpha+((j-i)*h));
}
printf("\n%6s"," ");
for (i=n; i>=j; i )
{
printf("%6.1f ", hsd[i]);
}
printf("\n%6.1f",hsc[j]);
for (i=n; i>=j; i )
{
printf("%6.1f ", hs[i]);
}
}
printf("\nVoi beta =%6.1f va k = %6.1f, cac he so cua da thuc moi la:\n",beta,k);
Trang 13}
getch();
}
Thuật toán chuyển từ dạng chuẩn tắc suy rộng này sang dạng chuẩn tắc suy rộng khác có thể áp dụng cho tất cả các dạng chuyển đổi còn lại Tuy nhiên, trong một số trường hợp, sử dụng cách chuyển trực tiếp tương ứng sẽ dễ dàng, thuận lợi hơn do thuật toán đơn giản hơn
CHUẨN TẮC SUY RỘNG VÀ NGƢỢC LẠI
Ta nhận thấy rằng, để chuyển đổi qua lại giữa các dạng đa thức ta cũng có thể chuyển đổi qua lại dựa vào hai dạng cơ bản là Chính tắc và Chuẩn tắc suy rộng
1 Chuyển đa thức từ dạng chính tắc sang dạng chuẩn tắc suy rộng
Ta có thể xem dạng chính tắc là trường hợp đặc biệt của dạng chuẩn tắc suy rộng, từ đó có thể áp dụng phép biến đổi từ chuẩn tắc suy rộng sang chuẩn tắc suy rộng như đã trình bày ở phần trên
Cho đa thức ở dạng chính tắc
0
( )
n i i i
ta chuyển về dạng chuẩn tắc suy rộng
,k
0
n
i i
i
Áp dụng thuật toán 1 với h0; =0
Ta có thể viết lại thuật toán 1 cho trường hợp này như sau:
- Thuật toán: Chuyển dạng đa thức từ chính tắc sang chuẩn tắc suy rộng
- Nhập:
n{ bậc của đa thức}
0
, , , ,
n i
i
R
k: bước nhảy
- Xuất:
0
n
i
i
- Thuật toán:
1 Gán b n:a n
2 Với mỗi j chạy từ 0 đến n-1,
với mỗi i chạy từ n-1 đến j
Gán a i:a i1( jk)a i
Gán b i:a i
Trang 143 Xuất b b0, , ,1 b n
Thuật toán trên có thể được trình bày dưới dạng bảng sau
(Nguyên tắc: nhân ngang cộng chéo)
n
b n n, b n n, 1 b n n, 2 b n,2 b n,1 b n,0 b0
k
1,
n n
b b n 1,n 1 b n1,n2 b n1,2 b n1,1b1 2k
2,
n n
b b n2,n1 b n2,n2 b n2,2 b2
(n 2) k
2,n
b b2,n1 b2,n2=b n2
n 1k
b 1,n b n b1,n1=b n1
P x x x x x Hãy chuyển đa thức sang dạng chuẩn tắc suy rộng
4
,2 0
1 i
i i
Giải:
Ta có : 1,k2 Ta lập bảng sau:
4
k
2k
3k
Vậy ( ) có dạng chuẩn tắc suy rộng là :
Chương trình:
#include <stdio.h>
#include <conio.h>
void main()
{
int n, alpha, i, j;
int k;
int hs[36], hsc[36];
printf("Bien doi dang Da thuc.\n");
Trang 15scanf("%d", &n);
printf("Nhap alpha va k: ");
scanf("%d" "%d", &alpha, &k);
for(i=0; i<= n; i++)
{
printf("Nhap vao he so a%d: ",i);
scanf("%d", &hs[i]);
}
printf("\n%5s"," ");
for (i=n; i>=0; i )
{
printf("%5d ", hs[i]);
}
for (j=0;j<n;j++)
{
for (i=n-1;i>=j;i )
{
hsc[j]=alpha+(j*k);
hs[i]=hs[i]+hs[i+1]*hsc[j];
}
printf("\n%5d",hsc[j]);
for (i=n; i>=j; i )
{
printf("%5d ", hs[i]);
}
}
printf("\n\nVoi alpha = %d va k = %d, cac he so cua da thuc moi la:\n", alpha, k); for (i=0; i<=n; i++)
{
printf("%5d ", hs[i]);
}
getch();
}
2 Chuyển đa thức từ dạng chuẩn tắc suy rộng sang dạng chính tắc
Ta chuyển đa thức P(x) từ dạng chuẩn tắc suy rộng [ , ]
0
n
i h i
i
sang dạng chính tắc
0
( )
n i i i
Cách 1: Áp dụng thuật toán 1 với 0; k0
Trang 16(+)
Cách 2:
Cơ sở thuật toán:
Ta chứng minh bổ đề sau:
Cho Q(x) là đa thức ở dạng chính tắc: 1
0
( )
n i i i
, là một số thực bất kỳ
Khi đó ta có đẳng thức:
1
Trong đó:
1
0, 1
n n
i i i
b a b
Chứng minh:
Áp dụng mệnh đề về phép chia có dư thì ta có được sự tồn tại của đẳng thức trên.Vấn đề là ta phải chứng minh công thức truy hồi của các hệ số
Ta có :
1
1
1 0
n n
n
i
Đặt
1
0, 1
n n
i i i
b a b
Sử dụng sơ đồ Hoocne để tính bi, i = 1,2,…,n
an an-1 … a2 a1 a0
bn = an bn-1 … b2 b1 b0
Ý nghĩa: nếu biết được các hệ số của đa thức Q(x) thì ta cũng có thể biết được các hệ số của P(x)
0
n
i h i
i
bài toán từ dạng chuẩn tắc suy rộng sang dạng : n
(x)
Trang 17
[ , ] 0 0
i h i
i
Áp dụng bổ đề trên, ta có:
- Áp dụng bổ đề với n 1h Đặt
n n
Ta được
P x b x b x n h d d x d
- Áp dụng bổ đề với n 2h Đặt
1
1
n n
Ta được
( ) n n n
P x c x c x c d x d
…
- Sau n-1 bước, đa thức P(x) có dạng:
P x r x r x r xx d
Áp dụng bổ đề trên với
Đặt
1
.
n n
i i i
Ta được
P x a x a x a x a
Dựa vào phương pháp trên, ta có thuật toán chuyển từ dạng chuẩn tắc suy rộng sang dạng
chính tắc như sau:
1 Gán a n:d n
2 Với mỗi j chạy từ 1 đến n,
với mỗi i chạy từ (n-j) đến (n-1):
Gán d i: d i n j h d i1
Gán a i:d i
3 Xuất a a0, , ,1 a n
Việc làm trên thể hiện ở bảng sau: (Nguyên tắc: nhân chéo, cộng ngang, đưa xuống)
Trang 18 (n 1)h
(n 2)h
[ h]
Ví dụ:
Cho P(x) có dạng: 4,2 3,2 2,2 1,2
Hãy chuyển đa thức sang dạng biểu diễn chính tắc
Giải:
Áp dụng thuật toán trên với 1,h 2
Ta lập bảng sau:
(n j h)
1, : 3 3
2, : 3 2
3, : 3 1
4, : 3 0
Vậy P(x) có dạng chính tắc là : 4 3 2
P x x x x x
Chương trình:
#include <stdio.h>
#include <conio.h>
void main()
{
int n, alpha, h, i, j;
int hs[36], hsc[36], hsbd[36];
printf("Bien doi dang Da thuc.\n");
printf("Chuan tac suy rong sang chinh tac.\n");
printf("Nhap n, alpha va h: ");
scanf("%d" "%d" "%d", &n, &alpha, &h);
Trang 19printf("Nhap vao he so d%d: ",i);
scanf("%d", &hs[i]);
hsbd[i]=hs[i];
}
printf("\n%5s%5d%5d","",hs[n], hs[n-1]);
for (j=1;j<=n;j++)
{
hsc[j]=-(alpha+((n-j)*h));
printf("\n%5d", hsc[j]);
for (i=n-j;i<=n-1;i++)
{
hs[i]=hs[i]+((hsc[j])*(hs[i+1]));
}
for (i=n; i>=n-j-1;i )
printf("%5d", hs[i]);
}
printf("\n\nCac he so cua da thuc moi o dang chinh tac la:\n"); for (i=0; i<=n; i++)
{
printf("%5d ", hs[i]);
}
getch();
}
V TÀI LIỆU THAM KHẢO
1 Bài giảng Phương Pháp Tính của thầy Trịnh Công Diệu
2 Phương pháp tính – Tạ Văn Đĩnh