BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM TP. HCM
KHOA TOÁN – TIN
TIỂU LUẬN PHƢƠNG PHÁP TÍNH
THÀNH PHỐ HỒ CHÍ MINH
THÁNG 01 NĂM 2015
GIẢNG VIÊN
:
TS. TRỊNH CÔNG DIỆU
THỰC HIỆN
:
NHÓM 8 – VB2 TOÁN – KHÓA 2
01
:
HUỲNH VĂN AN
02
:
ĐOÀN NHẬT MINH
03
:
NGUYỄN VĂN THI
04
:
PHẠM THỊ HỒNG THƢ
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang i
MỤC LỤC
MỤC LỤC i
I. ĐẶT VẤN ĐỀ 1
II. VẤN ĐỀ KHẢO SÁT 1
II.1. CƠ SỞ TOÁN HỌC 1
II.1.1. Định nghĩa (Định nghĩa về hàm co từ
,ab
vào
,ab
) 1
II.1.2. Định lý 1 1
II.1.3. Định lý 2 (Định lý Banach về điểm bất động của hàm co từ
,ab
vào
,ab
) 2
II.1.4. Định lý 3 (Định lý giá trị trung gian của hàm số liên tục) 3
II.1.5. Phƣơng pháp tính 4
II.2. THUẬT TOÁN TƢƠNG ỨNG 7
II.3. VÍ DỤ MINH HỌA 8
III. KIẾN THỨC MỞ RỘNG 18
IV. TÀI LIỆU THAM KHẢO 20
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 1
Trong bài trình bày này chúng tôi chỉ khảo sát các phƣơng trình đại số và siêu việt một
biến số thực.
I. ĐẶT VẤN ĐỀ
Xét phƣơng trình
0fx
, có rất nhiều cách để chuyển phƣơng trình này thành phƣơng
trình
xx
, một cách khá đơn giản đó là đặt
x f x x
, nhƣ vậy
*x
là một nghiệm của
phƣơng trình
0fx
nếu và chỉ nếu
*x
là nghiệm của phƣơng trình
xx
hay
*x
là một
điểm bất động của hàm
. Điều này nói lên rằng việc tìm nghiệm một phƣơng trình có thể đƣa về
việc tìm điểm bất động của một hàm số.
Các định lý điểm bất động đóng một vai trò quan trọng trong việc chứng minh sự tồn tại
nghiệm của các phƣơng trình đại số, siêu việt và phƣơng trình vi phân…. Trong số các định lý điểm
bất động thì định lý điểm bất động của Banach là một định lý không những giúp ta chứng tỏ đƣợc
sự tồn tại nghiệm của một phƣơng trình, tính duy nhất của nghiệm đó mà còn chỉ ra một phƣơng
pháp để sau một số bƣớc tính hữu hạn ta có thể tìm đƣợc nghiệm gần đúng của phƣơng trình với sai
số không quá
cho trƣớc. Sau đây chúng ta sẽ tìm hiểu về cách xác định giá trị gần đúng cho
nghiệm của phƣơng trình sử dụng định lý điểm bất động Banach.
II. VẤN ĐỀ KHẢO SÁT
II.1. CƠ SỞ TOÁN HỌC
II.1.1. Định nghĩa (Định nghĩa về hàm co từ
,ab
vào
,ab
)
Nếu hàm số
: , ,a b a b
và tồn tại
01c
sao cho:
, , ,x y c x y x y a b
Thì
đƣợc gọi là hàm co từ
,ab
vào
,ab
và
c
đƣợc gọi là hệ số co.
Nhận xét: Trong nhiều trƣờng hợp, việc dùng định nghĩa để chứng tỏ một hàm có tính chất
co là không đơn giản, định lý sau đây giúp ta kiểm tra tính co dễ dàng hơn đối với các hàm khả vi.
II.1.2. Định lý 1
Cho
là hàm số liên tục trên
,ab
và khả vi trên
,ab
thỏa:
, , ,x a b x a b
và tồn tại c sao cho
' 1, ,x c x a b
Khi đó
là hàm co từ
,ab
vào
,ab
với hệ số co c.
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 2
Chứng minh:
Theo định lý Lagrange với
,,x y a b
luôn tồn tại
,k a b
:
'.x y k x y
Suy ra
' , , ,x y k x y c x y x y a b
Mà
, , ,x a b x a b
và
0,1c
nên
là hàm co từ
,ab
vào
,ab
với hệ số co
c.▐
II.1.3. Định lý 2 (Định lý Banach về điểm bất động của hàm co từ
,ab
vào
,ab
)
Cho
là hàm co từ
,ab
vào
,ab
với hệ số co
0,1c
, khi đó tồn tại duy nhất
,x a b
sao cho
xx
.
Chứng minh:
Lấy tùy ý
0
,x a b
, lập dãy
n
x
với
1nn
xx
,
*
n
.
Từ giả thiết
: , ,a b a b
và cách thiết lập dãy
n
x
ta suy ra
,
n
x a b
Ta sẽ chứng minh
n
x
là dãy Cauchy. Thật vậy,
n
, ta có:
2
1 1 1 1 2 1 0
n
n n n n n n n n
x x x x c x x c x x c x x
1
Áp dụng bất đẳng thức tam giác,
,*np
ta có:
1 1 2 1
12
1 0 1 0 1 0
1
10
10
10
do 1
1
1
1
do 0,1
1
n p n n p n p n p n p n n
n p n p n
np
p
n
n
x x x x x x x x
c x x c x x c x x
c x x c c
c
c x x
c
xx
cc
c
Suy ra
10
0,
1
,*
n
n p n
xx
nx x c
c
p
Mà
10
0 do 0,1
1
n
n
xx
cc
c
Do đó theo định lý giới hạn kẹp ta suy ra:
0, *
n
n p n
pxx
.
Vậy
n
x
là dãy Cauchy trong tập đóng
,ab
, suy ra dãy
n
x
hội tụ trong
,ab
, nghĩa là
tồn tại
, : lim
n
n
x a b x x
.
Mặt khác với mọi dãy
,
n
y a b
thỏa
n
n
yy
. Ta có
,y a b
vì
,ab
đóng. Do
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 3
là hàm co nên
nn
y y c y y
với mọi
n
, mà
0
n
n
c y y
nên theo định lý
giới hạn kẹp ta suy ra
0
n
n
yy
hay
n
n
yy
. Vì vậy
là hàm liên
tục trên
,ab
.
Từ đó ta có
1
lim lim lim
n n n
n n n
x x x x x
, nghĩa là
x
là điểm bất động của
.
Ta chứng minh điểm bất động này là duy nhất:
Giả sử có hai điểm
, , ,x y a b x y
sao cho:
,x x y y
thì:
x y x y c x y
(do
là hàm co)
do , 0 1x y x y c
(Vô lý)
Vậy
có một điểm bất động duy nhất trên
,ab
.▐
Lưu ý:
Các định lý và định nghĩa trên vẫn đúng nếu thay
,ab
bởi hoặc
,a
hoặc
,a
.
II.1.4. Định lý 3 (Định lý giá trị trung gian của hàm số liên tục)
Nếu hàm
f
liên tục trên
,ab
và
.0f a f b
thì tồn tại ít nhất một điểm
,p a b
sao
cho
0fp
.
Ghi chú: Định lý này giúp ta xác định đƣợc khoảng chứa nghiệm của một phƣơng trình cho
trƣớc. Do đây là một định lý quen thuộc trong giải tích cổ điển nên chúng tôi không trình bày phần
chứng minh.
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 4
II.1.5. Phƣơng pháp tính
Quá trình chứng minh Định lý 2 đã cho ta một phƣơng pháp đƣợc gọi là phƣơng pháp xấp
xỉ liên tiếp của Banach để tìm nghiệm của phƣơng trình
xx
khi
là hàm co. Nhƣng trong
thực tế tính toán, khi thực hiện theo phƣơng pháp trên sẽ có vấn đề nảy sinh đó là nếu các số
n
x
là
các số thập phân có nhiều chữ số sau dấu phẩy (hữu hạn hoặc vô hạn), ta và máy tính thƣờng làm
tròn các số này tới hàng thứ
l
nào đó. Việc làm tròn này có thể dẫn đến sai số trong mỗi bƣớc
tính, dãy số ta nhận đƣợc không còn là dãy
{}
n
x
nhƣ trong lý thuyết mà là dãy
{}
n
x
trong đó
n
x
là
giá trị đã đƣợc làm tròn của
1n
x
tới hàng thứ
l
, với
*n
. Sơ đồ so sánh giữa lý thuyết và
thực tế :
Do việc làm tròn nhƣ vậy, trong dãy số
{}
n
x
có thể có một số
i
x
nào đó bị lọt ra khỏi đoạn
,ab
, điều này có thể sẽ khiến quá trình tính toán gặp thất bại.
Vì vậy mục này chúng ta sẽ dành để giải quyết các câu hỏi sau:
- Câu hỏi 1: Làm sao để không có giá trị nào của dãy
{}
n
x
bị lọt ra khỏi đoạn
,ab
?
- Câu hỏi 2: Nên chọn
l
bằng bao nhiêu để sau một số hữu hạn bƣớc tính ta nhận đƣợc giá trị
gần đúng của nghiệm phƣơng trình với sai số không quá
cho trƣớc và ứng với mỗi số
l
tìm đƣợc,
số bƣớc tính tối thiểu là bao nhiêu để chắc chắn ta nhận đƣợc giá trị gần đúng của nghiệm phƣơng
trình với sai số không quá
cho trƣớc ?
GIẢI QUYẾT VẤN ĐỀ:
- Giải quyết câu hỏi 1:
Nếu ta chọn
,ab
là các số thập phân có tối đa
l
chữ số sau dấu phẩy (thông thƣờng ta chọn
,ab
là các số nguyên) thì giải quyết đƣợc câu hỏi 1.
Thật vậy giả sử tồn tại
i
sao cho
,
i
x a b
và
1
,
i
x a b
, vì
1i
x
là giá trị làm tròn của
0 0 1 2
11
2
x x x x
xx
x
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 5
()
i
x
tới hàng thứ
l
nên
1
1
.10
2
l
ii
xx
Không mất tính tổng quát ta giả sử thêm
1
()
ii
x a x
suy ra:
11
10
l
i i i
x x a x
(mâu thuẫn). ▐
- Giải quyết câu hỏi 2:
Gọi
*x
là nghiệm của phƣơng trình
xx
trong đoạn
,ab
.
Giả sử sau n bƣớc tính
*n
ta tìm đƣợc
n
x
là giá trị gần đúng của
*x
với sai số không
quá
cho trƣớc nghĩa là
*
n
xx
.
Nhận xét :
**
n n n n
x x x x x x
Đánh giá
*
n
xx
:
Trong Định lý 2 ta đã chứng minh đƣợc:
10
, , *
1
n
n p n
c
x x x x n p
c
Cho
p
đối với biểu thức trên ta nhận đƣợc:
10
*
1
n
n
c
x x x x
c
1 1 1 0
11
nn
cc
x x x x
cc
(Áp dụng bất đẳng thức tam giác)
Nhƣng do
1
x
là giá trị làm tròn của
10
xx
tới hàng thứ
l
nên từ bất đẳng thức
trên ta suy ra:
10
10
*.
1 2 1
n l n
n
cc
x x x x
cc
(1)
Đánh giá
nn
xx
:
Ta có:
1 1 1 1 1
10
2
l
n n n n n n n n
x x x x x x c x x
Suy ra :
11
10 10
2 1 2 1
ll
n n n n
x x c x x
cc
Sử dụng quy nạp toán học ta chứng minh đƣợc:
1
11
1
10 10
2 1 2 1
10 10
2 2 1
ll
n
nn
ll
n
x x c x x
cc
c
c
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 6
Suy ra :
1
10 10 10 1
10 .
2 1 2 2 1 1
l l l n
nl
nn
c
x x c
c c c
(2)
Từ (1) và (2) và nhận xét ở trên ta suy ra:
10
10
*
2 1 1
ln
n
c
x x x x
cc
Ta sẽ chọn
l
và
n
sao cho
10
10
2 1 1
ln
c
xx
cc
Để thuận tiện ta chọn
l
và
n
thỏa
10
2 1 2
l
c
và
10
12
n
c
xx
c
(3)
Suy ra
ln 1
ln10
c
l
Ta luôn chọn đƣợc số tự nhiên
l
thỏa bất đẳng thức trên. Tuy nhiên vế phải của bất đẳng thức
trên có thể âm nếu
đủ lớn, mà
l
nên ta có một cách chọn nhƣ sau:
ln 1
max 0; 1
ln10
c
l
trong đó ký hiệu
x
là phần nguyên của số
x
.
Khi đã chọn đƣợc
l
, ta tính đƣợc
1
x
, xét các trƣờng hợp sau:
TH1:
10
xx
, khi đó
0
x
chính là nghiệm gần đúng cần tìm
TH2:
0c
, khi đó hàm
co lại thành một điểm thuộc
,ab
, vì vậy chỉ cần sau một bƣớc tính ta
sẽ nhận đƣợc nghiệm gần đúng cần tìm, đó chính là
1
x
.
TH3:
10
xx
và
0c
từ (3) ta nhận đƣợc:
10
1
ln
2
ln
c
xx
n
c
Từ đây ta cũng chọn đƣợc số nguyên dƣơng
n
ứng với mỗi số
l
đã chọn , cụ thể nhƣ sau:
10
ln 1 ln 2
max 1; 1
ln
c x x
n
c
Nhƣ vậy ta luôn chọn đƣợc
l
và
n
để
n
x
là giá trị gần đúng của
*x
với sai số không quá
cho trƣớc. ▐
Nhận xét: Công thức tìm
l
và
n
quả là phức tạp, chúng tôi vẫn chƣa có cách thức nào để
làm đơn giản nó. Nếu có cơ hội quay trở lại, có lẽ chúng tôi sẽ có thêm những góc nhìn mới để cải
thiện vấn đề này đƣợc tốt hơn.
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 7
II.2. THUẬT TOÁN TƢƠNG ỨNG
Tên thuật toán:
<Xác định giá trị gần đúng cho nghiệm của phƣơng trình bằng cách sử dụng định lý điểm bất
động>
1. Thuật toán :
- Bƣớc 1: Tìm khoảng chứa nghiệm
, , ,a b a b
bằng cách tính giá trị của
f
tại một số
điểm, đến khi có 2 giá trị trái dấu (
.0f a f b
) và
f
liên tục trên
,ab
(thỏa điều kiện của
Định lý 3).
- Bƣớc 2: Biến đổi phƣơng trình
0fx
thành phƣơng trình
xx
, chọn hàm
(nếu
có) sao cho thỏa điều kiện Định lý 1 hoặc Định lý 2, xác định hệ số co c.
- Bƣớc 3: Chọn
l
thỏa
ln 1
max 0; 1
ln10
c
l
- Bƣớc 4: Trong đoạn
,ab
lấy tùy ý
0
x
là số có tối đa
l
chữ số sau dấu phẩy khi biểu diễn
dƣới dạng thập phân, tính
1
x
là giá trị đã đƣợc làm tròn của
0
x
tới hàng thứ
l
+ Nếu
10
xx
: Kết luận
0
x
là nghiệm gần đúng của phƣơng trình với sai số không quá
.
+ Nếu
0c
: Kết luận
1
x
là nghiệm gần đúng của phƣơng trình với sai số không quá
.
+ Nếu
10
,0x x c
: Ta tiến hành các bƣớc tiếp theo
- Bƣớc 5: Chọn
n
thỏa
10
ln 1 ln 2
max 1; 1
ln
c x x
n
c
- Bƣớc 6: Đặt
1k
x
là giá trị đã đƣợc làm tròn của
k
x
tới hàng thứ
l
,
*k
- Bƣớc 7: Lập bảng tính
k
x
:
k
k
x
1
1
x
2
2
x
…
…
n-1
1n
x
n
n
x
- Bƣớc 8: Kết luận
n
x
là nghiệm gần đúng của phƣơng trình với sai số không quá
.
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 8
Lƣu ý:
- Việc thực hiện Bƣớc 1 và Bƣớc 2 đòi hỏi phải có sự khéo léo, ta viết ra làm hai bƣớc nhƣ vậy
nhƣng thực ra hai bƣớc này không thực sự phân định rõ ràng mà cần thực hiện đồng thời để chọn ra
đƣợc đoạn chứa nghiệm và hàm co tƣơng ứng với đoạn đó. Ví dụ khi chọn đƣợc đoạn chứa nghiệm
,ab
rồi, nhƣng hàm
không co từ
,ab
vào
,ab
mà lại co từ
11
,ab
vào
11
,ab
, trong đó
11
,,a b a b
, trƣờng hợp này cần phải điều chỉnh lại đoạn chứa nghiệm.
- Không phải lúc nào cũng tìm đƣợc đoạn chứa nghiệm
,ab
mà
,ab
, ví dụ ta tìm đƣợc đoạn
chứa nghiệm là
1,2
, nhƣng hàm
chỉ co từ
2, 3
vào
2, 3
. Vấn đề này vẫn đƣa đƣợc
giải quyết triệt để.
Vì một số lý do nhƣ trên nên chúng tôi vẫn chƣa đề cập đƣợc cách thức để thực hiện bƣớc 1 và
bƣớc 2 bằng chƣơng trình máy tính. Hai bƣớc này đòi hỏi phải tính bằng tay, sau đó sử dụng dữ liệu
vừa tìm đƣợc để viết chƣơng trình cho máy tính.
Cụ thể đoạn mã giả sẽ có dạng:
- Dữ liệu đầu vào :
{hàm co}, c {hệ số co},
{sai số tối đa} , a, b {hai đầu đoạn nghiệm,
ab
}
- Giải thuật: Tƣơng tự phần trƣớc từ bƣớc 3 đến bƣớc 8
II.3. VÍ DỤ MINH HỌA
Ví dụ 1: Tìm nghiệm gần đúng của phƣơng trình
3
10xx
với sai số không quá
4
10
.
Giải:
- Bƣớc 1: Tìm khoảng chứa nghiệm:
Đặt
3
1f x x x
, ta có:
01f
,
25f
,
0 . 2 5 0ff
và do
f
liên tục
trên
1,2
nên suy ra phƣơng trình
0fx
có nghiệm thuộc
1,2
.
- Bƣớc 2: Tìm hàm
:
Ta có:
3
3
1 0 1x x x x
.
Xét
3
1xx
, ta thấy
1,2 , 1,2xx
và
2
3
11
11
33
xx
.
Nhƣ vậy hàm
thỏa các điều kiện của Định lý 1 và hệ số co
1
3
c
.
- Bƣớc 3: Chọn
l
:
Ta có:
4
1
ln 10 1
ln 1
3
2
4 log 4
ln10 ln10 3
c
. Chọn
5l
.
- Bƣớc 4: Tính
1
x
:
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 9
Chọn
0
1x
, suy ra
1
1,25992x
.
- Bƣớc 5: Chọn
n
:
Ta có:
4
10
1
ln 10 1 ln 2 1,25992 1
ln 1 ln 2
3
8
1
ln
ln
3
c x x
c
.
Chọn
9n
.
- Bƣớc 6: Đặt
1k
x
là giá trị đã đƣợc làm tròn của
k
x
tới hàng thứ
5
*k
- Bƣớc 7: Lập bảng tính :
k
k
x
1
1
1,25992x
2
2
1,31229x
3
3
1,32235x
4
4
1,32427x
5
5
1,32463x
6
6
1,32470x
7
7
1,32471x
8
8
1,32472x
9
9
1,32472x
Vậy nghiệm gần đúng của phƣơng trình với sai số không quá
4
10
là
1,32472
.▐
Chƣơng trình tƣơng ứng cho Ví dụ 1:
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
double phi_co_da(double x)
{
double bieuthuc, mu, ketqua;
mu = (1.0/3.0);
bieuthuc=x+1;
ketqua = pow(bieuthuc, mu);
return ketqua;
}
double round(double soCanLamTron, int chuSo)
{
int temp,temp1;
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 10
int i, result = 1,result1 = 1;
//Pow
for(i = 1; i <= chuSo+1; i++)
{
result *= 10;
}
for(i = 1; i <= chuSo; i++)
{
result1 *= 10;
}
temp = soCanLamTron*result;
temp1 = soCanLamTron*result1;
if(temp%10 >= 5)
{
temp1 += 1;
}
soCanLamTron = (double)temp1/result1;
return soCanLamTron;
}
void PP_danhgiahaunghiem(double saiso,double hsco,double x0)
{
unsigned int n0=1,l,n;
double x,xp;
l= abs(log(saiso*(1-hsco))/log(double(10)))+1;
x=round(phi_co_da(x0),l);
n=abs(log((saiso*(1-hsco))/(2*abs(x-x0)))/log(hsco))+1;
printf("Gia tri lam tron den hang thu (-%d) \n",l);
printf("Tinh duoc n = %d ",n);
printf("\n Bang tinh \n");
printf_s("x0 = %.1f\n",x0);
printf_s("x1 = %.5f",x);
do
{
xp=x;
x=round(phi_co_da(xp),5);
n0++;
printf("\nx%d = %.5f",n0,x);
}
while(n0<n);
printf("\nNghiem gan dung cua phuong trinh voi sai so khong qua 10^(-4) la %.5f
.\n",x,n);
}
void main()
{
double saiso, x0;
double hsco=1.0/3.0;
//SAI SO epsilon = 0.0001 = 10^(-4)
//He so co c = 1/3
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 11
//X0 = 1, l=5, n=9
printf("\n GIAI PT GAN DUNG BANG PP DIEM BAT DONG \n\n");
printf("Tim nghiem gan dung cua phuong trinh: x^3 - x - 1 = 0\n");
printf("Nhap Sai So = ");
scanf_s("%lf",&saiso);
printf("Nhap gia tri ban dau X0 = ");
scanf_s("%lf",&x0);
printf("He so co la 1/3\n");
PP_danhgiahaunghiem(saiso,hsco,x0);
}
Ví dụ 2: Tìm nghiệm gần đúng của phƣơng trình
10 1 cos 0xx
với sai số không quá
5
10
.
Giải:
- Bƣớc 1: Tìm khoảng chứa nghiệm:
Đặt
10 1 cosf x x x
, ta có
1 . 0 0ff
và
f
liên tục trên
0,1
, suy ra phƣơng trình
0fx
có nghiệm thuộc
0,1
.
- Bƣớc 2: Tìm hàm
:
Ta có:
1 cos
10 1 cos 0
10
x
x x x
Xét
1 cos
10
x
x
, ta thấy
0,1 , 0,1xx
và
sin 1
1
10 10
x
x
Nhƣ vậy hàm
thỏa các điều kiện của Định lý 1 và hệ số co
1
10
c
.
- Bƣớc 3: Chọn
l
:
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 12
Ta có:
5
1
ln 10 1
ln 1
10
9
5 log 5
ln10 ln10 10
c
. Chọn
6l
.
- Bƣớc 4: Tính
1
x
:
Chọn
0
0,5x
, suy ra
1
0,187758x
.
- Bƣớc 5: Chọn
n
:
Ta có:
5
10
1
ln 10 1 ln 2 0,187758 0,5
ln 1 ln 2
10
4
1
ln
ln
10
c x x
c
Chọn
5n
.
- Bƣớc 6: Đặt
1k
x
là giá trị đã đƣợc làm tròn của
k
x
tới hàng thứ
6
*k
- Bƣớc 7: Lập bảng tính :
k
k
x
1
1
0,187758x
2
2
0,198243x
3
3
0,198041x
4
4
0,198045x
5
5
0,198045x
Vậy nghiệm gần đúng của phƣơng trình với sai số không quá
5
10
là
0,198045
.▐
Chƣơng trình tƣơng ứng cho Ví dụ 2:
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
double phi_co_cos(double x)
{
return (1+cos(x))/10;
}
double round(double soCanLamTron, int chuSo)
{
int temp,temp1;
int i, result = 1,result1 = 1;
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 13
//Pow
for(i = 1; i <= chuSo+1; i++)
{
result *= 10;
}
for(i = 1; i <= chuSo; i++)
{
result1 *= 10;
}
temp = soCanLamTron*result;
temp1 = soCanLamTron*result1;
if(temp%10 >= 5)
{
temp1 += 1;
}
soCanLamTron = (double)temp1/result1;
return soCanLamTron;
}
void PP_danhgiahaunghiem(double saiso,double hsco,double x0)
{
unsigned int n0=1,l,n;
double x,xp,xn;
l= abs(log(saiso*(1-hsco))/log(double(10)))+1;
x=round(phi_co_cos(x0),l);
n=abs(log((saiso*(1-hsco))/(2*abs(x-x0)))/log(hsco))+1;
printf("Gia tri lam tron den hang thu (-%d) \n",l);
printf("Tinh duoc n = %d ",n);
printf("\n Ban tinh \n");
printf_s("x0 = %.1f\n",x0);
printf_s("x1 = %.6f",x);
do
{
xp=x;
x=round(phi_co_cos(xp),l);
n0++;
printf("\nx%d = %.6f",n0,x);
}
while(n0<n);
printf("\nNghiem gan dung cua phuong trinh voi sai so khong qua 10^(-5) la %.6f
.\n",x,n);
}
void main()
{
double saiso, x0;
double hsco=1.0/10.0;
//SAI SO epsilon = 0.00001 = 10^(-5)
//He so co c = 1/10
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 14
//X0 = 0.5, l=6, n=5
printf("\n GIAI PT GAN DUNG BANG PP DIEM BAT DONG \n\n");
printf("Tim nghiem gan dung cua phuong trinh: 10x - 1 - cosx = 0\n");
printf("Nhap Sai So = ");
scanf_s("%lf",&saiso);
printf("Nhap gia tri ban dau X0 = ");
scanf_s("%lf",&x0);
printf("He so co la 1/10");
printf("\nGia tri lam tron den hang thu (-6) \n");
printf("Tinh duoc n = 5 ");
printf("\n Bang tinh \n");
PP_danhgiahaunghiem(saiso,hsco,x0);
}
Ví dụ 3: Tìm nghiệm gần đúng của phƣơng trình
2
3x 0
x
e
với sai số
5
10
.
Giải:
- Bƣớc 1: Tìm khoảng chứa nghiệm:
Đặt
2
3x
x
f x e
, ta có
1 . 0 0ff
và
f
liên tục trên
0,1
, suy ra phƣơng trình
0fx
có nghiệm thuộc
0,1
.
- Bƣớc 2: Tìm hàm
:
Ta có:
2
3x
3
x
x
e
ex
Xét
3
x
e
x
, ta thấy
0,1 , 0,1xx
và
1
1, 0,1
2
23
x
e
xx
.
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 15
Nhƣ vậy hàm
thỏa các điều kiện của Định lý 1 và hệ số co
1
2
c
.
- Bƣớc 3: Chọn
l
:
Ta có:
5
1
ln 10 1
ln 1
2
1
5 log 5
ln10 ln10 2
c
. Chọn
6l
.
- Bƣớc 4: Tính
1
x
:
Chọn
0
0,9x
, suy ra
1
0,905465x
.
- Bƣớc 5: Chọn
n
:
Ta có:
5
10
1
ln 10 1 ln 2 0,905465 0,9
ln 1 ln 2
2
11
1
ln
ln
2
c x x
c
Chọn
12n
.
- Bƣớc 6: Đặt
1k
x
là giá trị đã đƣợc làm tròn của
k
x
tới hàng thứ
6
*k
- Bƣớc 7: Lập bảng tính :
k
k
x
1
1
0,905465x
2
2
0,907943x
3
3
0,909069x
4
4
0,909581x
5
5
0,909814x
6
6
0,909920x
7
7
0,909968x
8
8
0,909990x
9
9
0,910000x
10
10
0,910004x
11
11
0,910006x
12
12
0,910007x
Vậy nghiệm gần đúng của phƣơng trình với sai số không quá
5
10
là
0,910007
.▐
Đoạn chƣơng trình tƣơng ứng cho Ví dụ 3:
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 16
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "stdlib.h"
double phi_co_emu(double x)
{
double bieuthuc, mu, ketqua;
mu = (1.0/2.0);
bieuthuc=pow(2.718281828,x)/3;
ketqua = pow(bieuthuc, mu);
return ketqua;
}
double round(double soCanLamTron, int chuSo)
{
int temp,temp1;
int i, result = 1,result1 = 1;
//Pow
for(i = 1; i <= chuSo+1; i++)
{
result *= 10;
}
for(i = 1; i <= chuSo; i++)
{
result1 *= 10;
}
temp = soCanLamTron*result;
temp1 = soCanLamTron*result1;
if(temp%10 >= 5)
{
temp1 += 1;
}
soCanLamTron = (double)temp1/result1;
return soCanLamTron;
}
void PP_danhgiahaunghiem(double saiso,double hsco,double x0)
{
unsigned int n0=1,l,n;
double x,xp;
l= abs(log(saiso*(1-hsco))/log(double(10)))+1;
x=round(phi_co_emu(x0),l);
n=abs(log((saiso*(1-hsco))/(2*abs(x-x0)))/log(hsco))+1;
printf("Gia tri lam tron den hang thu (-%d) \n",l);
printf("Tinh duoc n = %d ",n);
printf("\n Ban tinh \n");
printf_s("x0 = %f\n",x0);
printf_s("x1 = %.6f",x);
do
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 17
{
xp=x;
x=round(phi_co_emu(xp),6);
n0++;
printf("\nx%d = %f",n0,x);
}
while(n0<n);
printf("\nNghiem gan dung cua phuong trinh voi sai so khong qua 10^(-5) la %.6f
.\n",x,n);
}
void main()
{
double saiso, x0;
double hsco=1.0/2.0;
//SAI SO epsilon = 0.00001 = 10^(-5)
//He so co c = 1/2
//X0 = 0.9, l=6, n=12
printf("\n GIAI PT GAN DUNG BANG PP DIEM BAT DONG \n\n");
printf("Tim nghiem gan dung cua phuong trinh: e^x - 3x^2 = 0\n");
printf("Nhap Sai So = ");
scanf_s("%lf",&saiso);
printf("Nhap gia tri ban dau X0 = ");
scanf_s("%lf",&x0);
printf("He so co la 1/2\n");
PP_danhgiahaunghiem(saiso,hsco,x0);
}
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 18
III. KIẾN THỨC MỞ RỘNG
Việc tìm đƣợc hàm
thỏa mãn các điều kiện của Định lý 1 và Định lý 2 là một vấn đề khó
khăn, tuy nhiên trong một số trƣờng hợp cụ thể ta có thể dựa vào một số kết quả sau:
Nếu hàm
f
là một hàm khả vi, xác định trên
,ab
và thỏa:
i)
0, 0f a f b
ii)
12
0'k f x k
với
,x a b
Khi đó hàm
12
fx
xx
kk
thỏa các điều kiện của Định lý 1.
Chứng minh:
Vì
f
là một hàm khả vi, xác định trên
,ab
nên
cũng khả vi, xác định trên
,ab
.
Ta có:
12
1 2 1 2
''
'1
f x k k f x
x
k k k k
Do điều kiện ii) nên ta suy ra:
1
12
0 ' 1
k
x
kk
Do
' 0 , ,x x a b
nên
đồng biến trên
,ab
suy ra
,,a x b x a b
suy ra
1 2 1 2
,,
f a f b
a a x b b x a b
k k k k
Do đó
, , ,x a b x a b
Vậy
thỏa các điều kiện của Định lý 1.▐
Kết quả tƣơng tự : Nếu hàm
f
là một hàm khả vi, xác định trên
,ab
và thỏa:
i)
0, 0f a f b
ii)
12
'0k f x k
với
,x a b
Khi đó hàm
12
fx
xx
kk
cũng thỏa các điều kiện của Định lý 1.
Áp dụng: Tìm nghiệm gần đúng của phƣơng trình
2
0
x
ex
với sai số
4
10
.
Xét
fx
=
2x
ex
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 19
Ta có
1
1 1 0 , 0 1 0ff
e
và
1
1 ' 2 2 3 , 1,0
x
f x e x x
e
Hàm
f
thỏa tất cả các điều kiện của kết quả 1, cho nên ta đặt hàm
2
4
x
ex
xx
Sử dụng thuật toán ở Mục II.2 ta tìm đƣợc nghiệm gần đúng của phƣơng trình là -0,70334 với
sai số không quá
4
10
.▐
MÔN HỌC: PHƢƠNG PHÁP TÍNH GV: TS. TRỊNH CÔNG DIỆU
SVTH: NHÓM 8 – LỚP VB2 TOÁN – KHÓA 2 Trang 20
IV. TÀI LIỆU THAM KHẢO
[1] Trần Tráng, Tôpô đại cương, Trƣờng Đại học Sƣ phạm Thành phố Hồ Chí Minh.
[2] Walter Rudin, The Principles of Mathematical Analysis, Third Edition, MacGraw-Hill,
Inc 1976.
[3] Đỗ Thị Tuyết Hoa, Bài giảng môn phương pháp tính, Trƣờng Đại học Bách khoa Đà
Nẵng, 2007.