Một số vấn đề về đa thức và hàm số – Tài liệu text
Một số vấn đề về đa thức và hàm số
Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (150.26 KB, 10 trang )
CHƯƠNG 1: MỘT SỐ VẤN ĐỀ VỀ ĐA THỨC
VÀ HÀM SỐ
§1. KHÁI NIỆM CHUNG
1. Khái niệm về phương pháp tính: Phương pháp tính là môn học về những lí luận cơ
bản và các phương pháp giải gần đúng, cho ra kết quả bằng số của các bài toán thường
gặp trong toán học cũng như trong kĩ thuật.
Chúng ta thấy rằng hầu hết các bài toán trong toán học như giải các phương trình
đại số hay siêu việt, các hệ phương trình tuyến tính hay phi tuyến, các phương trình vi
phân thường hay đạo hàm riêng,tính các tích phân,… thường khó giải đúng được, nghĩa là
khó tìm kết quả dưới dạng các biểu thức.
Một số bài toán có thể giải đúng được nhưng biểu thức kết quả lại cồng kềnh, phức
tạp khối lượng tính toán rất lớn. Vì những lí do trên, việc giải gần đúng các bài toán là vô
cùng cần thiết.
Các bài toán trong kĩ thuật thường dựa trên số liệu thực nghiệm và các giả thiết
gần đúng. Do vậy việc tìm ra kết quả gần đúng với sai số cho phép là hoàn toàn có ý
nghĩa thực tế.
Từ lâu người ta đã nghiên cứu phương pháp tính và đạt nhiều kết quả đáng kể.
Tuy nhiên để lời giải đạt được độ chính xác cao, khối lượng tính toán thường rất lớn. Với
các phương tiện tính toán thô sơ, nhiều phương pháp tính đã được đề xuất không thể
thực hiện được vì khối lượng tính toán quá lớn. Khó khăn trên đã làm phương pháp tính
không phát triển được.
Ngày nay nhờ máy tính điện tử người ta đã giải rất nhanh các bài toán khổng lồ,
phức tạp, đã kiểm nghiệm được các phương pháp tính cũ và đề ra các phương pháp tính
mới. Phương pháp tính nhờ đó phát triển rất mạnh mẽ. Nó là cầu nối giữa toán học và
thực tiễn. Nó là môn học không thể thiếu đối với các kĩ sư.
Ngoài nhiệm vụ chính của phương pháp tính là tìm các phương pháp giải gần
đúng các bài toán,nó còn có nhiệm vụ khác như nghiên cứu tính chất nghiệm, nghiên cứu
bài toán cực trị, xấp xỉ hàm v.v. Trong phần này chúng ta sẽ nghiên cứu một loạt bài toán
thường gặp trong thực tế và đưa ra chương trình giải chúng.
2. Các đặc điểm của phương pháp tính: Đặc điểm về phương pháp của môn học này là
hữu hạn hoá và rời rạc hoá.
Phương pháp tính thường biến cái vô hạn thành cái hữu hạn, cái liên tục thành cái
rời rạc và sau cùng lại trở về với cái vô hạn, cái liên tục. Nhưng cần chú ý rằng quá trình
trở lại cái vô hạn, cái liên tục phải trả giá đắt vì khối lượng tính toán tăng lên rất nhiều.
Cho nên trong thực tế người ta dừng lại khi nghiệm gần đúng sát với nghiệm đúng ở một
mức độ nào đó.
Đặc điểm thứ hai của môn học là sự tiến đến kết quả bằng quá trình liên tiếp. Đó là
quá trình chia ngày càng nhỏ hơn, càng dày đặc hơn hoặc quá trình tính toán bước sau
dựa vào các kết quả của các bước trước. Công việc tính toán lặp đi lặp lại này rất thích
hợp với máy điện toán.
Khi nghiên cứu phương pháp tính người ta thường triệt để lợi dụng các kết quả đạt
được trong toán học. Cùng một bài toán có thể có nhiều phương pháp tính khác nhau.
Một phương pháp tính được coi là tốt nếu nó đạt các yêu cầu sau:
1
– phương pháp tính được biểu diễn bằng một dãy hữu hạn các bước tính cụ thể.
Các bước tính toán cụ thể này của phương pháp tính được gọi là thuật toán. Thuật toán
càng đơn giản càng tốt.
– đánh giá được sai số và sai số càng nhỏ càng tốt.
– thuật toán thực hiện được trên máy điện toán và thời gian chạy máy ít nhất
3. Các loại sai số: Trong việc thiết lập và giải các bài toán thực tế ta thường gặp các loại sai
số. Giả sử ta xét bài toán A nào đó. Nghiên cứu các quy luật liên hệ giữa các đại lượng
trong bài toán đẫn đến phương trình có dạng tổng quát :
y = Bx
Trong đó : x – đại lượng đã biết
y – đại lượng chưa biết
B – quy luật biến đổi từ x sang y
Bài toán thực tế thường rất phức tạp. Để đơn giản và có thể diễn đạt nó bằng toán
học, người ta đưa ra một số giả thiết không hoàn toàn chính xác để nhận được phương
trình trên.
Vì vậy nếu gọi y
1
là giá trị đúng của y thì khi đó y ≠ y
1
. Giá trị | y – y
1
| được gọi là
sai số giả thiết của bài toán.
Do x là số liệu ban đầu của bài toán,thu được từ đo lường,thí nghiệm nên nó chỉ là
giá trị gần đúng. Sai số này được gọi là sai số của các số liệu ban đầu.
Để giải gần đúng phương trình trên ta thường thay B bằng C hay x bằng t để
phương trình đơn giản hơn và có thể giải được. Bằng cách đó ta tìm được y
2
gần đúng với
y. Giá trị | y
2
– y| được gọi là sai số phương pháp của bài toán.
Cuối cùng khi thực hiện các phép tính ta thường thu gọn các kết quả trung gian hay kết
quả cuối cùng nên đáp số của bài toán là y
3
. Giá trị |y
3
-y| là sai số tính toán.
Trong phần này chúng ta quan tâm tới sai số phương pháp.
4. Xấp xỉ và hội tụ: Xét bài toán
y = Bx
Giả sử y là nghiệm đúng của bài toán mà ta chưa biết. Bằng phương pháp nào đó ta
lấy y
1
thay cho y và khi đó y
1
gọi là xấp xỉ thứ nhất của nghiệm và viết :
y
1
≈ y
Cũng bằng phương pháp tương tự, ta xây dựng được một dãy các xấp xỉ y
1
,y
2
,y
3
,..y
n
. Nếu
ta có :
yylim
n
n
=
∞→
thì ta nói dãy xấp xỉ hội tụ tới nghiệm y.
§2. TÍNH GIÁ TRỊ CỦA ĐA THỨC
1. Sơ đồ Horner: Giả sử chúng ta cần tìm giá trị của một đa thức tổng quát dạng:
P(x) = a
0
x
n
+ a
1
x
n – 1
+ a
2
x
n – 2
+….+ a
n
(1)
tại một trị số x nào đó. Trong (1) các hệ số a
i
là các số thực đã cho. Chúng ta viết lại (1)
theo thuật toán Horner dưới dạng:
P(x
o
) = (…((a
0
x + a
1
)x+ a
2
x)+…+ a
n -1
)x + a
n
(2)
Từ (2) ta nhận thấy :
P
0
= a
0
P
1
= P
0
x + a
1
2
P
2
= P
1
x + a
2
P
3
= P
2
x + a
3
………………
P(x) = P
n
= P
n-1
x + a
n
Tổng quát ta có :
P
k
= P
k-1
x + a
k
với k = 1, 2…n ; P
0
= a
0
Do chúng ta chỉ quan tâm đến trị số của P
n
nên trong các công thức truy hồi về sau chúng
ta sẽ bỏ qua chỉ số k của P và viết gọn P := Px + a
k
với k = 0…n.Khi ta tính tới k = n thì P
chính là giá trị cần tìm của đa thức khi đã cho x. Chúng ta thử các bước tính như sau :
Ban đầu P = 0
Bước 0 k = 0 P = a
o
Bước 1 k = 1 P = a
o
x + a
1
Bước 2 k = 2 P = (a
o
x + a
1
)x + a
2
……………………………
Bước n-1 k = n – 1 P = P(x
o
) = (…((a
o
x + a
1
)x+a
2
x)+…+a
n-1
)x
Bước n k = n P = P(x
o
) = (…((a
o
x + a
1
)x+a
2
x)+…+a
n-1
)x + a
n
Sau đây là chương trình thực hiên thuật toán trên
Chương trình 1-1
#include <conio.h>
#include <stdio.h>
#define m 10
void main(void)
{
int k,n;
float p,x;
float a[m];
clrscr();
printf(“\nCho bac cua da thuc n = “);
scanf(“\%d”,&n);
printf(“Vao cac he so a:\n”);
for (k=1;k<=n+1;k++)
{
printf(“a[%d] = “,k-1);
scanf(“%f”,&a[k]);
};
printf(“Cho gia tri x = “);
scanf(“%f”,&x);
p=0.0;
for (k=1;k<=n+1;k++)
p=p*x+a[k];
printf(“Tri so cua da thuc P tai x =%.2f la :%.5f”,x,p);
getch();
3
}
2. Sơ đồ Horner tổng quát: Giả sử chúng ta có đa thức :
P
n
(x) = a
0
x
n
+ a
1
x
n – 1
+ a
2
x
n – 2
+….+ a
n
(1)
Khai triển Taylor của đa thức tại x = x
o
có dạng :
n
0
0
)n(
2
0
0
0
0
0nn
)xx(
!2
)x(P
)xx(
!2
)x(P
)xx(
!1
)x(P
)x(P)x(P −+⋅⋅⋅+−
′′
+−
′
+=
(2)
Mặt khác chúng ta có thể biến đổi đa thức về dạng :
P
n
(x) = (x – x
o
)P
n-1
(x) + P
n
(x
o
) (3)
Trong đó P
n-1
(x) là đa thức bậc n – 1 và có dạng :
P
n-1
(x) = b
o
x
n-1
+ b
o-1
x
n – 2
+ b
2
x
n – 3
+….+ b
n-1
(4)
Thuật toán để tìm các hệ số nhận được bằng cách so sánh (1) và (3) :
b
o
= a
o
b
i
= a
i
+ b
i-1
x
o
b
n
= Pn(x
o
)
So sánh (2) và (3) ta có :
n
0
0
)n(
2
0
0
0
0
0n0n01n0
)xx(
!2
)x(P
)xx(
!2
)x(P
)xx(
!1
)x(P
)x(P)x(P)x(P)xx(
−+⋅⋅⋅+
−
′′
+−
′
+=+−
−
hay :
n
0
0
)n(
2
0
0
0
0
1n0
)xx(
!2
)x(P
)xx(
!2
)x(P
)xx(
!1
)x(P
)x(P)xx( −+⋅⋅⋅+−
′′
+−
′
=−
−
và khi chia hai vế cho (x – x
0
) ta nhận được :
1n
0
0
)n(
0
00
1n
)xx(
!2
)x(P
)xx(
!2
)x(P
!1
)x(P
)x(P
−
−
−+⋅⋅⋅+−
′′
+
′
=
(5)
So sánh (4) và (5) ta nhận được kết quả :
!1
)x(P
)x(P
0
01n
′
=
−
Trong đó Pn
-1
(x) lại có thể phân tích giống như P
n
(x) dạng (3) để tìm ra P
n-1
(x
o
). Quá
trình này được tiếp tục cho đến khi ta tìm hết các hệ số của chuỗi Taylor của P
n
(x)
Tổng quát thuật toán thể hiện ở bảng sau:
P
n
(x) a
o
a
1
a
2
a
3
… a
n-1
a
n
x = x
o
0 b
o
x
o
b
1
x
o
b
2
x
o
b
n-2
x
o
b
n-1
x
o
P+
-1
(x) b
o
b
1
b
2
b
3
… b
n-1
b
n
= P
n
(x
o
)
Để hiểu rõ hơn chúng ta lấy một ví dụ cụ thể sau: Khai triển đa thức sau tại x
0
= 2
P(x) = x
5
– 2x
4
+ x
3
-5x + 4
Ta lập bảng tính sau
:
2 1 -2 1 0 -5 4
0 2 0 2 4 2
2 1 0 1 2 -1 2 = P(2)/0!
0 2 4 10 24
4
2 1 2 5 12 23 = P'(2)/1!
0 2 8 26
2 1 4 13 38 = P”(2)/2!
0 2 12
2 1 6 25 = P”‘(2)/3!
0 2
2 1 8 = P””(2)/4!
0
1 = P””‘(2)/4!
Như vậy :
P
n
(x) = (x – 2)
5
+ 8(x – 2)
4
+ 25(x – 2)
3
+ 38(x – 2)
2
+ 23(x – 2) + 2
Chương trình sau dùng để xác định các hệ số của chuỗi Taylor của đa thức P(x) tại
x
0
= 2.
Chương trình 1-2
#include <conio.h>
#include <stdio.h>
#define m 10
void main(void)
{
float a[m],b[m],c[m];
int n,i,j,k;
float x;
clrscr();
printf(“Cho bac cua da thuc n = “);
scanf(“%d”,&n);
printf(“Cho gia tri x = “);
scanf(“%f”,&x);
printf(“Vao cac he so a\n”);
for (k=n;k>=0;k–)
{
printf(“a[%d] = “,n-k);
scanf(“%f”,&a[k]);
}
printf(“\n”);
b[n] = a[n];
c[n] = a[n];
for (k=0;k<=n-1;k++)
{
for (i=n-1;i>=k;i–)
b[i] = b[i+1]*x + a[i];
c[k] = b[k];
5
Phương pháp tính thường biến cái vô hạn thành cái hữu hạn, cái liên tục thành cáirời rạc và sau cùng lại trở về với cái vô hạn, cái liên tục. Nhưng cần chú ý rằng quá trìnhtrở lại cái vô hạn, cái liên tục phải trả giá đắt vì khối lượng tính toán tăng lên rất nhiều.Cho nên trong thực tế người ta dừng lại khi nghiệm gần đúng sát với nghiệm đúng ở mộtmức độ nào đó.Đặc điểm thứ hai của môn học là sự tiến đến kết quả bằng quá trình liên tiếp. Đó làquá trình chia ngày càng nhỏ hơn, càng dày đặc hơn hoặc quá trình tính toán bước saudựa vào các kết quả của các bước trước. Công việc tính toán lặp đi lặp lại này rất thíchhợp với máy điện toán.Khi nghiên cứu phương pháp tính người ta thường triệt để lợi dụng các kết quả đạtđược trong toán học. Cùng một bài toán có thể có nhiều phương pháp tính khác nhau.Một phương pháp tính được coi là tốt nếu nó đạt các yêu cầu sau:- phương pháp tính được biểu diễn bằng một dãy hữu hạn các bước tính cụ thể.Các bước tính toán cụ thể này của phương pháp tính được gọi là thuật toán. Thuật toáncàng đơn giản càng tốt.- đánh giá được sai số và sai số càng nhỏ càng tốt.- thuật toán thực hiện được trên máy điện toán và thời gian chạy máy ít nhất3. Các loại sai số: Trong việc thiết lập và giải các bài toán thực tế ta thường gặp các loại saisố. Giả sử ta xét bài toán A nào đó. Nghiên cứu các quy luật liên hệ giữa các đại lượngtrong bài toán đẫn đến phương trình có dạng tổng quát :y = BxTrong đó : x – đại lượng đã biếty – đại lượng chưa biếtB – quy luật biến đổi từ x sang yBài toán thực tế thường rất phức tạp. Để đơn giản và có thể diễn đạt nó bằng toánhọc, người ta đưa ra một số giả thiết không hoàn toàn chính xác để nhận được phươngtrình trên.Vì vậy nếu gọi ylà giá trị đúng của y thì khi đó y ≠ y. Giá trị | y – y| được gọi làsai số giả thiết của bài toán.Do x là số liệu ban đầu của bài toán,thu được từ đo lường,thí nghiệm nên nó chỉ làgiá trị gần đúng. Sai số này được gọi là sai số của các số liệu ban đầu.Để giải gần đúng phương trình trên ta thường thay B bằng C hay x bằng t đểphương trình đơn giản hơn và có thể giải được. Bằng cách đó ta tìm được ygần đúng vớiy. Giá trị | y- y| được gọi là sai số phương pháp của bài toán.Cuối cùng khi thực hiện các phép tính ta thường thu gọn các kết quả trung gian hay kếtquả cuối cùng nên đáp số của bài toán là y. Giá trị |y-y| là sai số tính toán.Trong phần này chúng ta quan tâm tới sai số phương pháp.4. Xấp xỉ và hội tụ: Xét bài toány = BxGiả sử y là nghiệm đúng của bài toán mà ta chưa biết. Bằng phương pháp nào đó talấy ythay cho y và khi đó ygọi là xấp xỉ thứ nhất của nghiệm và viết :≈ yCũng bằng phương pháp tương tự, ta xây dựng được một dãy các xấp xỉ y,y,y,..y. Nếuta có :yylim∞→thì ta nói dãy xấp xỉ hội tụ tới nghiệm y.§2. TÍNH GIÁ TRỊ CỦA ĐA THỨC1. Sơ đồ Horner: Giả sử chúng ta cần tìm giá trị của một đa thức tổng quát dạng:P(x) = a+ an – 1+ an – 2+….+ a(1)tại một trị số x nào đó. Trong (1) các hệ số alà các số thực đã cho. Chúng ta viết lại (1)theo thuật toán Horner dưới dạng:P(x) = (…((ax + a)x+ ax)+…+ an -1)x + a(2)Từ (2) ta nhận thấy := a= Px + a= Px + a= Px + a………………P(x) = P= Pn-1x + aTổng quát ta có := Pk-1x + avới k = 1, 2…n ; P= aDo chúng ta chỉ quan tâm đến trị số của Pnên trong các công thức truy hồi về sau chúngta sẽ bỏ qua chỉ số k của P và viết gọn P := Px + avới k = 0…n.Khi ta tính tới k = n thì Pchính là giá trị cần tìm của đa thức khi đã cho x. Chúng ta thử các bước tính như sau :Ban đầu P = 0Bước 0 k = 0 P = aBước 1 k = 1 P = ax + aBước 2 k = 2 P = (ax + a)x + a……………………………Bước n-1 k = n – 1 P = P(x) = (…((ax + a)x+ax)+…+an-1)xBước n k = n P = P(x) = (…((ax + a)x+ax)+…+an-1)x + aSau đây là chương trình thực hiên thuật toán trênChương trình 1-1#include #include #define m 10void main(void)int k,n;float p,x;float a[m];clrscr();printf(“\nCho bac cua da thuc n = “);scanf(“\%d”,&n);printf(“Vao cac he so a:\n”);for (k=1;k<=n+1;k++)printf(“a[%d] = “,k-1);scanf(“%f”,&a[k]);};printf(“Cho gia tri x = “);scanf(“%f”,&x);p=0.0;for (k=1;k<=n+1;k++)p=p*x+a[k];printf(“Tri so cua da thuc P tai x =%.2f la :%.5f”,x,p);getch();2. Sơ đồ Horner tổng quát: Giả sử chúng ta có đa thức :(x) = a+ an – 1+ an – 2+….+ a(1)Khai triển Taylor của đa thức tại x = xcó dạng :)n(0nn)xx(!2)x(P)xx(!2)x(P)xx(!1)x(P)x(P)x(P −+⋅⋅⋅+−′′+−+=(2)Mặt khác chúng ta có thể biến đổi đa thức về dạng :(x) = (x – x)Pn-1(x) + P(x) (3)Trong đó Pn-1(x) là đa thức bậc n – 1 và có dạng :n-1(x) = bn-1+ bo-1n – 2+ bn – 3+….+ bn-1(4)Thuật toán để tìm các hệ số nhận được bằng cách so sánh (1) và (3) := a= a+ bi-1= Pn(xSo sánh (2) và (3) ta có :)n(0n0n01n0)xx(!2)x(P)xx(!2)x(P)xx(!1)x(P)x(P)x(P)x(P)xx(−+⋅⋅⋅+′′+−+=+−hay :)n(1n0)xx(!2)x(P)xx(!2)x(P)xx(!1)x(P)x(P)xx( −+⋅⋅⋅+−′′+−=−và khi chia hai vế cho (x – x) ta nhận được :1n)n(001n)xx(!2)x(P)xx(!2)x(P!1)x(P)x(P−+⋅⋅⋅+−′′(5)So sánh (4) và (5) ta nhận được kết quả :!1)x(P)x(P01nTrong đó Pn-1(x) lại có thể phân tích giống như P(x) dạng (3) để tìm ra Pn-1(x). Quátrình này được tiếp tục cho đến khi ta tìm hết các hệ số của chuỗi Taylor của P(x)Tổng quát thuật toán thể hiện ở bảng sau:(x) a… an-1x = x0 bn-2n-1P+-1(x) b… bn-1= P(xĐể hiểu rõ hơn chúng ta lấy một ví dụ cụ thể sau: Khai triển đa thức sau tại x= 2P(x) = x- 2x+ x-5x + 4Ta lập bảng tính sau2 1 -2 1 0 -5 40 2 0 2 4 22 1 0 1 2 -1 2 = P(2)/0!0 2 4 10 242 1 2 5 12 23 = P'(2)/1!0 2 8 262 1 4 13 38 = P”(2)/2!0 2 122 1 6 25 = P”‘(2)/3!0 22 1 8 = P””(2)/4!1 = P””‘(2)/4!Như vậy :(x) = (x – 2)+ 8(x – 2)+ 25(x – 2)+ 38(x – 2)+ 23(x – 2) + 2Chương trình sau dùng để xác định các hệ số của chuỗi Taylor của đa thức P(x) tại= 2.Chương trình 1-2#include #include #define m 10void main(void)float a[m],b[m],c[m];int n,i,j,k;float x;clrscr();printf(“Cho bac cua da thuc n = “);scanf(“%d”,&n);printf(“Cho gia tri x = “);scanf(“%f”,&x);printf(“Vao cac he so a\n”);for (k=n;k>=0;k–)printf(“a[%d] = “,n-k);scanf(“%f”,&a[k]);printf(“\n”);b[n] = a[n];c[n] = a[n];for (k=0;k<=n-1;k++)for (i=n-1;i>=k;i–)b[i] = b[i+1]*x + a[i];c[k] = b[k];