Tải bản đầy đủ (.pdf) (90 trang)

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

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 (1.03 MB, 90 trang )


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM TP.HCM
KHOA TOÁN - TIN





ĐỀ TÀI: CÁC PHƯƠNG PHÁP TÍNH GIÁ TRỊ
CÁC HÀM SIN, COS








GIẢNG VIÊN
:
TS. TRỊNH CÔNG DIỆU
THỰC HIỆN
:
NHÓM 10 – VB2 TOÁN – KHÓA 2
01
:
KIỀU DIỄM
02
:
ĐINH HÙNG KỲ


03
:
HUỲNH VĂN HUÂN







THÀNH PHỐ HỒ CHÍ MINH
THÁNG 01 NĂM 2015

1


NỘI DUNG
I. ĐẶT VẤN ĐỀ 3
II. GIẢI QUYẾT VẤN ĐỀ 3
1.
MỘT SỐ NHẬN XÉT 3
2.
CÁC PHƯƠNG PHÁP TÍNH GIÁ TRỊ CỦA HÀM SIN VÀ COS 5
2.1.
TÍNH GIÁ TRỊ CỦA SINX, COSX BẰNG KHAI TRIỂN TAYLOR 6
2.1.1. Cơ sở toán học 6
2.1.1.1. Khai triển Taylor của sinx tại 0 6
2.1.1.2. Khai triển Taylor của cosx tại 0 7
2.1.2. Bài toán và giải pháp 7
2.1.2.1. Các bài toán 7

2.1.2.2. Giải pháp 7
2.1.3. Thuật giải cho bài toán 1 và bài toán 2 14
2.1.3.1. Thuật toán tính sinx
()
x∈
với sai số không quá
{
}
.10 , 0,1,2,3, ,9
k
λλ


14
2.1.3.2. Thuật toán tính cosx
()x


với sai số không quá
{
}
.10 , 0,1,2,3, ,9
k
λλ


15
2.1.4. Ví dụ minh họa 16
2.1.5. Đoạn chương trình tương ứng 23
2.2.

TÍNH GIÁ TRỊ CỦA SINX, COSX BẰNG ĐA THỨC NỘI SUY LAGRANGE: 29
2.2.1. Cơ sở toán học 29
2.2.1.1. Xây dựng đa thức nội suy Lagrange 29
2.2.1.2. Đánh giá sai số của công thức nội suy Lagrange: 30
2.2.2. Bài toán và giải pháp 32
2.2.2.1. Các bài toán 32
2.2.2.2. Giải pháp 32
2.2.3. Thuật giải của bài toán 1 và bài toán 2 43
2.2.3.1. Thuật toán tính sinx
()x∈

với sai số không quá
{ }
.10 , 0,1,2,3, ,9
k
λλ


43
2.2.3.2. Thuật toán tính cosx
()
x∈

với sai số không quá
{ }
.10 , 0,1,2,3, ,9
k
λλ



44
2.2.4. Ví dụ minh họa: 45
2.2.5. Đoạn chương trình tương ứng 56
2.3.
TÍNH GIÁ TRỊ CỦA SINX, COSX BẰNG ĐA THỨC NỘI SUY NEWTON: 61
2.3.1. Cơ sở lý toán học 61
2.3.1.1. Xây dựng đa thức nội suy Newton 61
2.3.1.2. Đánh giá sai số của của công thức nội suy Newton 62
2.3.2. Bài toán và giải pháp 62
2.3.2.1. Các bài toán 62
2.3.2.2. Giải pháp 63
2.3.3. Thuật giải của bài toán 1 và bài toán 2 73
2.3.3.1. Thuật toán tính sinx
()
x∈
với sai số không quá
{ }
.10 , 0,1,2,3, ,9
k
λλ


73
2.3.3.2. Thuật toán tính
cosx
()x∈
với sai số không quá
{ }
.10 , 0,1,2,3, ,9
k

λλ


74
2.3.4. Ví dụ minh họa 75
2.3.5. Đoạn chương trình tương ứng 83
III. NHẬN XÉT CHUNG 88
2


TÀI LIỆU THAM KHẢO 90

I. ĐẶT VẤN ĐỀ
Lượng giác có nhiều ứng dụng trong đời sống. Từ xa xưa người ta đã biết ứng dụng lượng giác trong việc
đo đạc, trắc địa, xây dựng, thiên văn,…
Ngày nay, các em học sinh đã được làm quen với lượng giác từ lớp 8, 9. Các em cũng đã được học cách tính
giá trị của các hàm lượng giá như sin, cos,… bằng cách vẽ các tam giác vuông và tính tỷ số giữa các cạnh của
tam giác đó. Tuy nhiên, cách làm này chỉ thực hiện được dễ dàng với một số góc đặc biệt như 0
0
, 30
0
, 45
0
,
60
0
,… Vì với các tam giác vuông có các góc đặc biệt này, ta không cần dựng hình chính xác mà có thể dựa vào
các tính chất của nửa tam giác đều, tam giác vuông cân để tính tỷ số giữa các cạnh. Đối với một góc bất kỳ,
cách tính như vậy sẽ gặp phải một số vấn đề sau:
- Làm thế nào dựng chính xác một góc cho trước?

- Giả sử rằng đã dựng được tam giác vuông với góc cho trước, làm thế nào để đo chính xác các cạnh của
tam giác đó?
Như vậy, do hạn chế của việc dựng hình và đo đạc, câu hỏi được đặt ra là: “Với giá trị gần đúng của sinx,
cosx mà ta đã tính được bằng phương pháp nêu trên, làm thế nào để xác định được sai số của nó?”
Sự ra đời của bảng lượng giác và gần đây với sự xuất hiện của các loại máy tính bỏ túi đã giúp chúng ta giải
quyết được nhanh chóng các yêu cầu của việc tính toán lượng giác. Tuy nhiên, đối với nhiều học sinh, sinh
viên, việc làm thế nào để tính được các giá trị sin, cos của một góc bất kỳ vẫn còn là một “bí ẩn”. Ngoài ra, các
máy tính bỏ túi mà ta đang dùng hiện nay có thể giúp ta tính nhanh giá trị sin, cos của một góc bất kỳ nhưng nó
chưa giúp ta giải quyết được bài toán: “Tính giá trị gần đúng của hàm sin và cos với sai số tùy ý cho trước”.
Trong bài tiểu luận này, nhóm xin được đưa ra một số phương pháp để giải quyết bài toán đã nêu.
II. GIẢI QUYẾT VẤN ĐỀ
1. MỘT SỐ NHẬN XÉT
a. Do hàm sin, cos có chu kỳ
2
π
nên ta chỉ cần xét trên
[
)
0;2
π
.
b. Mặt khác với
[
)
0;2x
π
∀∈
ta đều có thể tính được giá trị
sin x
,

cos x
bằng cách tính giá trị của
sin
α
,
cos
α

với
α
là một giá trị thích hợp trong
0;
2
π



.
Thật vậy, giả sử
x
thuộc góc phần tư thứ (II), (III) hoặc
(IV).
Trường hợp 1:
;
2
x
π
π






(góc phần tư thứ II)
Ta có:
sin sinx
α
=
,
cos cos
α
= −x
với
( ) 0;
2
x
π
απ

= −∈



3

Trường hợp 2:
3
;
2
x

π
π





(góc phần tư thứ III)
Ta có:
sin sinx
α
= −
,
cos cosx
α
= −
với
( ) 0;
2
x
π
απ

=−∈



Trường hợp 3:
3
;2

2
x
π
π





(góc phần tư thứ IV)
Ta có:
sin sinx
α
= −
,
cos cosx
α
=
với
(2 ) 0;
2
π
απ

= −∈


x

c.

;
42
x
ππ

∀∈



ta có:
sin cosx
α
=
,
cos sinx
α
=
với
0;
24
x
ππ
α
  
= −∈


  
.
Kết luận: Để tính giá trị

sin x
,
cos x
với
x∈
, ta chỉ cần tính giá trị của
sin
α
,
cos
α
với
α
là một giá trị
thích hợp trong đoạn
4
0;
π


.
Ích lợi của việc tính giá trị của
sin
α
/
cos
α

(
)

0,
4
π
α



thay vì tính
(
)
sin / cosx xx
∈
sẽ được làm rõ hơn
trong các phần sau.
 Thuật toán xác định giá trị
[
)
0;2
απ

tương ứng với giá trị

x

Tên thuật toán:
[0 2 )( )QuyVe x
π

{Quy về đoạn
[

)
0;2
π
}
+ Input: x {
x∈
}
+ Output:
α

l
{
[
)
0;2
απ

,
l ∈
:
2xl
απ
= +
)
Thuật toán:
Bước 1: Cho
0
l =

Bước 2: Nếu

02x
π
≤<
thì đặt
x
α
=
rồi kết thúc.
Bước 3: Nếu
2x
π

thì
Bước 3.1: Tăng
l
1 đơn vị,
Bước 3.2: Nếu
22xl
ππ
−<
thì đặt
2xl
απ
= −
rồi kết thúc
Ngược lại, quay lại Bước 3.1.
Bước 4: {Nếu
0x <
}
Bước 4.1: Giảm

l
1 đơn vị
Bước 4.2: Nếu
20xl
π
−≥
thì đặt
2xl
απ
= −
rồi kết thúc
Ngược lại, quay lại Bước 4.1.
* Do
2 2 2 ( 1) 0xl x l
ππ π
− < ⇔− + <
nên ta có thể viết lại Bước 3.2. như sau:
4

Bước 3.2: Nếu
2 ( 1) 0xl
π
− +<
thì đặt
2xl
απ
= −
rồi kết thúc
Ngược lại, quay lại Bước 3.1.
 Thuật toán xác định giá trị

0;
2
π
α



tương ứng với giá trị
[
)
0;2x
π


Tên thuật toán:
[ ]
0 /2 ( )QuyVe x
π

{Quy về đoạn
0;
2
π


}
+ Input: x {
[
)
0;2x

π

}
+ Output:
α
, i, j {
0;
2
π
α



,
{, 1, 2}ij∈
:
sin ( 1) sin , cos ( 1) cos
ij
xx
αα
=−=−
}
Thuật toán:
Nếu
0;
2
x
π




thì { góc phần tư thứ I }

2
2
x
i
j
α
=


=


=

{ vì
2
2
sin sin ( 1) sin
cos cos ( 1) cos
x
x
x
α
αα
αα
=



= = −


= = −

}
Ngược lại nếu
(
;
2
x
π
π



thì { góc phần tư thứ II }
2
1
x
i
j
απ
= −


=



=

{ vì
2
1
sin sin ( 1) sin
cos cos ( 1) cos
x
x
x
απ
αα
αα
= −


= = −


=−=−

}
Ngược lại nếu
(
3
;
2
x
π
π




thì { góc phần tư thứ III }

1
1
x
i
j
απ
= −


=


=

{ vì
1
1
sin sin ( 1) sin
cos cos ( 1) cos
x
x
x
απ
αα
αα

= −


=−=−


=−=−

}
Ngược lại {TH:
(
3
;2
2
x
π
π



} { góc phần tư thứ IV}
2
1
2
x
i
j
π




=


=

{ vì
1
2
2
sin sin ( 1) sin
cos cos ( 1) cos
x
x
x
απ
αα
αα
= −


=−=−


= = −

}
2. CÁC PHƯƠNG PHÁP TÍNH GIÁ TRỊ CỦA HÀM SIN VÀ COS
Trong bài tiểu luận này, nhóm thực hiện xin đưa ra 3 phương pháp tính giá trị của hàm sin va cos
1. Tính giá trị của sinx và cosx bằng khai triển Taylor

2. Tính giá trị của sinx và cosx bằng đa thức nội suy Lagrange
5

3. Tính giá trị của sinx và cosx bằng đa thức nội suy Newton
2.1. Tính giá trị của sinx, cosx bằng khai triển Taylor
2.1.1. Cơ sở toán học
Định lý : Nếu
f
có đạo hàm cấp n là
( )
n
f
liên tục trên
[ ]
,
ab

f
có đạo hàm cấp n+1 trên
( )
,ab
thì
( )
,c ab∃∈
sao cho :
( )
( )
( )
( )
( )

( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
1
1
0
1
21
! 1!

1! 2! ! 1 !
kn
n
kn
k
nn
nn
fa f c

fb ba ba
kn
fa f a f a f c
fa ba ba ba ba
nn
+
+
=
+
+
= −+ −
+
′ ′′
= + − + − ++ − + −
+


Công thức trên được gọi là công thức khai triển Taylor của f tại a
( )
( )
( )
( )
1
1
1!
n
n
n
fc
R ba

n
+
+
= −
+
gọi là sai số (dư số ) bậc n của công thức khai triển Taylor của f tại a.
2.1.1.1. Khai triển Taylor của sinx tại 0
Áp dụng khai triển Taylor với
( ) sinfx x=
tại 0:
Ta có :
( )
( )
( )
( )
( )
0 ,2
sin 0 sin
22
1, 2 1
nn
k
nk
f x xn f n
nk
ππ
=


  

= +⇒ = =

  
−=+
  



Chú ý rằng: với
21nk= +
thì
( ) ( )
sin 1, 2 ,
2
sin sin 2 1 sin 1
2 22
sin 1, 2 1
2
k
k uu N
nk k
ku
π
π ππ
π
π

= = ∈



    
= + = += =−

  

    

− =−=+



Vậy khai triển Taylor của sinx tại 0 là:
( )
3 5 7 121
21
( 1)
sin
3! 5! 7! (2 1)!
nn
n
xxx x
xx R x
n
−−


=− + − ++ +


(1.1)


Trong đó:
( )
2
21
( 1) sin
(2 )!
n
n
n
x
Rx x
n
θ


=
(với
01
θ
<<
)
(1.2)

Đặt
( )
3 5 7 121
21
( 1)


3! 5! 7! (2 1)!
nn
n
xxx x
P xx
n
−−


=− + − ++

.
(1.3)

Để tính giá trị của
sin x
, ta tính giá trị
( )
21n
Px

. Khi đó sai số được xác định bởi:
6

(
)
21
sin
n
xP x



( )
21n
Rx

=
2
( 1) . sin
(2 )!
n
n
x
x
n
θ

=
2
(2 )!
n
x
n

(vì
sin 1x
θ
<
).
(1.4)


Trong trường hợp
0;
4
x
π




thì
1x <
nên
( )
21
sin
n
xP x


2
(2 )!
n
x
n

1
(2 )!n
<


(1.5)

2.1.1.2. Khai triển Taylor của cosx tại 0
Áp dụng khai triển Taylor với
( ) cosfx x=
tại 0:
Ta có:
( )
( )
( )
( )
( )
0, 2 1
cos 0 cos
22
1, 2
nn
k
nk
f x xn f n
nk
ππ
= +


  
= +⇒ = =

  
−=

  



Vậy khai triển Taylor của cosx tại 0 là:
( )
246 2
2
( 1)
cos 1
2! 4! 6! (2 )!
nn
n
xxx x
x Rx
n

=− + − ++ +

(1.6)

Trong đó:
( )
1
21
2
( 1) sin
(2 1)!
n
n

n
x
Rx x
n
θ
+
+

=
+
(với
01
θ
<<
)
(1.7)

Đặt
(
)
246 2
2
( 1)
1
2! 4! 6! (2 )!
nn
n
xxx x
Px
n


=− + − ++
.
(1.8)

Để tính giá trị của
cos x
, ta tính giá trị
( )
2n
Px
. Khi đó sai số được xác định bởi:
( )
2
cos
n
xP x−
( )
2n
Rx=
1
21
( 1) . sin
(2 1)!
n
n
x
x
n
θ

+
+

=
+
21
(2 1)!
n
x
n
+

+
(vì
sin 1x
θ
<
).
(1.9)

Trong trường hợp
0;
4
x
π




thì

1x <
nên
( )
2
cos
n
xP x−
21
(2 1)!
n
x
n
+

+
1
(2 1)!n
<
+
(1.10)

2.1.2. Bài toán và giải pháp
2.1.2.1. Các bài toán
Bài toán 1: Tính giá trị của
sin ( )xx∈
với sai số không quá
.10
k
λ


, với
{ }
0,1,2,3, ,9
λ

kết quả ghi ở dạng
biểu diễn thập phân gần đúng dạng k–chuẩn tắc.
Bài toán 2: Tính giá trị của
cos ( )xx∈

với sai số không quá
.10
k
λ

, với
{ }
0,1,2,3, ,9
λ

kết quả ghi ở
dạng biểu diễn thập phân gần đúng dạng k–chuẩn tắc.
2.1.2.2. Giải pháp
Từ những nhận xét trong phần (II.1), ta thấy rằng việc giải bài toán 1 và bài toán 2 được quy về việc giải hai bài
toán sau:
7

Bài toán 1.1: Tính giá trị của
sin x
với

0,
4
x
π




với sai số không quá
.10
k
λ

, với
{ }
0,1,2,3, ,9
λ

kết quả
ghi ở dạng biểu diễn thập phân gần đúng dạng k–chuẩn tắc.
Bài toán 2.1: Tính giá trị của
cos x
với
0,
4
x
π





với sai số không quá
.10
k
λ

, với
{ }
0,1,2,3, ,9
λ

kết quả
ghi ở dạng biểu diễn thập phân gần đúng dạng k–chuẩn tắc.
a) Giải bài toán 1.1
0,
4
x
π

∀∈


, xét khai triển Taylor của sinx tại 0:
0
121
1
( 1)
sin
(2 1)!
n

kk
k
x
x
k
−−
=

=


( )
0
21n
Rx

+

Đặt
0
121
1
1
( 1)
(2 1)!
n
kk
k
x
a

k
−−
=

=


làm giá trị thay thế cho sinx. Khi đó, sai số được xác định bởi:
( )
0
0
0
2
2
1 21
00
sin
(2 )! (2 )!
n
n
n
x
x
xa R x
nn

−= ≤ =

Vậy:
0

2
1
0
sin
(2 )!
n
x
xa
n
−≤

Tuy nhiên trong thực tế, ta có thể gặp các yêu cầu tính giá trị
sin x
với là x là số vô tỷ (chẳng hạn
3
;
12 4
x
π
=
,
…). Lúc này ta gặp khó khăn khi tính và biểu diễn
1
a
dưới dạng số thập phân. Nếu ta lấy
x
là giá trị làm tròn
của
x
đến chữ số hàng thứ

1
()k−
thì ta có sai số
1
1
10
2
k
xx

−≤
. Đặt
0
121
2
1
( 1)
(2 1)!
n
kk
k
x
a
k
−−
=

=



, ta có:
00 0
121 121 1
21 21
12
11 1
( 1) ( 1) ( 1)
()
(2 1)! (2 1)! (2 1)!
nn n
kk kk k
kk
kk k
xx
aa x x
k kk
−− −− −
−−
= = =
−− −
−= − = −
− −−
∑∑ ∑


00
21 21 21 21
11
(2 1)! (2 1)
kk kk

nn
kk
xx xx
kk
−− −−
= =
−−
≤≤
−−
∑∑


00 0
22 23 22
22
0

1
3 21
nn n
x xx x
x xx x
xx
n
−− −

+ ++
++

=− + ++






00 0
2 2 22 23 22
0

1
3 21
nn n
x xx x x x x x
xx
n
−− −

+ + + ++
≤ − + + + 





4
0,x
π




nên dễ thấy rằng
, [0,1]xx

. Suy ra:
8

00 0
1
22 23 22
22
12 0 0
0
1 1.1 1 1 1 1 1 1
1 10
3 21 2
nn n
k
a a xx xxn n
n
−− −


+ + + ++
− ≤− + ++ =− ≤




Vậy:
1

0
12
10
2
k
n
aa

−≤

Đặt
121
( 1)
(2 1)!
kk
k
x
b
k
−−

=

thì
00
121
2
11
( 1)
(2 1)!

nn
kk
k
kk
x
ab
k
−−
= =

= =

∑∑
. Ta lại thấy rằng khi tính
k
b
trong hầu hết các trường hợp
ta phải thay thế bởi
k
b
là giá trị làm tròn của
k
b
đến chữ số hàng thứ
2
()k−

2
1
10

2
k
kk
bb

−≤

Đặt
0
1
n
k
k
ab
=
=

, khi đó:
0 00
22
0
2
1 11
1
( ) 10 10
22
n nn
kk
kk kk
k kk

n
aa bb bb
−−
= = =
−= − ≤ − ≤ =
∑ ∑∑

Vậy:
2
0
2
10
2
k
n
aa

−≤

Do yêu cầu của bài toán là kết quả ghi ở dạng biểu diễn thập phân gần đúng dạng k-chuẩn tắc của sinx nên ta
lấy
a
là giá trị làm tròn của a đến chữ số hàng thứ (-k) và khi đó:
1
10
2
k
aa

−≤


Đánh giá sai số: trong quá trình tính toán trên ta thấy có các sai số sau:
1) Sai số phương pháp: do lấy
1
a
thay thế cho sinx
2) Sai số tính toán: do lấy
2
a
thế cho
1
a
và lấy a thay thế cho
2
a
.
3) Sai số do làm tròn: do lấy
a
thay thế cho a.
Do đó:
( ) ( ) ( ) ( )
0
12
1 12 2
1 12 2
2
00
0
sin sin a + a a a a a
sin a a a a a a

1
10 10 10
(2 )! 2 2 2
n
kk
k
xa x a
xa
nn
x
n
−−

−= − − + − +−
≤ − + − + − +−
≤+ + +

Để
sin .10
k
xa
λ

−≤
, ta cần có:

0
12
2
00

0
1
10 10 10 .10
(2 )! 2 2 2
n
kk
kk
nn
x
n
λ
−−
−−
+ + +≤

9

0
12
2
00
0
1
10 10 .10
(2 )! 2 2 2
n
kk
k
nn
x

n
λ
−−


⇔ + + ≤−



Bây giờ ta sẽ tìm các hệ số
, 1, 2, 3
i
i
λ
=
sao cho:
0
1
2
2
1
0
0
2
0
3
123
1
.10
(2 )! 2

1
10 10
22
1
10 10
22
1
n
k
k
k
k
k
x
n
n
n
λλ
λλ
λλ
λλλ







≤−







≤−







≤−




++=


Để đơn giản, ta có thể chọn:
1 23
1 11
;;
2 44
λλλ
= = =
, khi đó
0

0
1
1
2
2
2
2
0
0
00
0
0
11
21
.10
0
(2 )! 2 2
4.10 (2 )!
1 1 21
10 10 0
2 4 2 4.10 10
21
11
0
10 10
4.10 10
2 42
n
n
k

k
k
k
k
k
k
k
k
k
x
x
n
n
nn
n
n
λ
λ
λ
λ
λ
λ










≤−
−≥











≤ − ⇔ −≥







−≥
≤−







(I.1)
Vậy với
012
,,nkk
là các số nguyên dương nhỏ nhất thỏa (I.1) thì
a
giá trị thỏa yêu cầu của bài toán 1.1.
Nhận xét: do
12
,kk
đều là các số nguyên dương nhỏ nhất thỏa điều kiện
0
21
,
4.10 10
ky
n
y
λ
+

−∈
, nên
12
kk=
. Vì
thế khi thực hành ta chỉ cần xác định một trong hai giá trị này
Thuật toán tính sinx
(
)

0,
4
x
π



với sai số không quá
.10
k
λ

bằng phương pháp khai triển
Taylor
- Tên thuật toán:
( )
sin [0 ]4 ,,
TL x k
πλ

{Tính sinx
(
)
0,
4
x
π




bằng phương pháp khai triển Taylor}
+ Input:
{ }
{ }
0, , 0,1,2, ,9 ,
4
, , xk kx
π
λλ
+

∈∈ ∈



+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng k-chuẩn tắc của sinx:
sin .10
k
xa
λ

= ±
}
- Thuật toán
B1: { Tìm
0

n
là số nguyên dương nhỏ nhất thỏa:
0
2
0
21
0
4.10 (2 )!
n
k
x
n
λ

−≥
}
B1.1: Đặt
0
1n =

10

B1.2: Trong khi
0
2
0
21
0
4.10 (2 )!
n

k
x
n
λ

−<
thì tăng
0
n
lên 1 đơn vị
B2: { Tìm
1
k
là số nguyên dương nhỏ nhất thỏa:
1
0
21
0
4.10 10
k
k
n
λ

−≥
}
B2.1: Đặt
1
1k =


B2.2: Trong khi
1
0
21
0
4.10 10
k
k
n
λ

−<
thì tăng
1
k
lên 1 đơn vị
B3: Lấy
x
là giá trị làm tròn của x đến chữ số hàng thứ
( )
1
k−

B4: Đặt
a0=
. Với mỗi
0
1
in= …
lần lượt thực hiện:

- Tính
1 21
( 1)
(2 1)!
ii
i
x
b
i
−−

=


- Lấy
i
b
là giá trị làm tròn của
i
b
đến chữ số hàng thứ
( )
1
k−

- Cộng dồn
i
b
vào
a

(
aa
i
b←+
)
B5: Lấy
a
là giá trị làm tròn của
a
đến chữ số hàng thứ
( )
k−

b) Giải bài toán 2.1
0,
4
x
π

∀∈


, xét khai triển Taylor của cosx tại 0:
0
2
0
( 1)
cos
(2 )!
n

kk
k
x
x
k
=

=

( )
0
2n
Rx+
.
Đặt
0
2
1
0
( 1)
(2 )!
n
kk
k
x
a
k
=

=


làm giá trị thay thế cho cosx. Khi đó, sai số được xác định bởi:
(
)
0
0
0
21
21
12
00
cos
(2 1)! (2 1)!
n
n
n
x
x
xa R x
nn
+
+
−= ≤ =
++
(Vì
0
x ≥
)
Vậy
0

21
1
0
cos
(2 1)!
n
x
xa
n
+
−≤
+

Tương tự bài toán 1.1, trong nhiều trường hợp ta không thể có giá trị chính xác của x biểu diễn dưới dạng thập
phân. Vì thế ta cần thay thế x bởi
x
với
x
là giá trị làm tròn của x đến chữ số hàng thứ
( )
1
k−
. Khi đó
1
1
10
2
k
xx


−≤
.
Đặt
0
2
2
0
( 1)
(2 )!
n
kk
k
x
a
k
=

=

, ta có:
11

00 0
22
22
12
00 0
( 1) ( 1) ( 1)
()
(2 )! (2 )! (2 )!

nn n
kk kk k
kk
kk k
xx
aa x x
k kk
= = =
−− −
−= − = −
∑∑ ∑


00
00
22
2 2 2 2 22 44
00
0

(2 )! (2 ) 2 4 2
nn
kk kk
nn
kk
xx
x x x x xx xx
kk n
= =


− − −−
≤ ≤ = + ++
∑∑


00 0 0
21 22 22 21
32 2 3
0


24 2
nn n n
x x x xx x
x x x xx x
xx
xx
n
−− − −

+ ++ +
+++
+

=− + ++




00 0 0

21 22 22 21
32 23
0


24 2
nn n n
x x x xx x
x x x x x xx x
xx
n
−− − −

++++
+ +++

≤− + ++





[0, ]
4
x
π

nên dễ thấy rằng
, [0,1]xx∈
. Suy ra:

00 0
1
21 22 21
22
12 0 0
0
1 1 1 1.1. 1.1 1 1 1 1 1 1
10
24 2 2
nn n
k
a a xx xxn n
n
−− −


+ + + + + ++
− ≤− + ++ =− ≤



Vậy:
1
0
12
10
2
k
n
aa


−≤

Đặt
2
( 1)
(2 )!
kk
k
x
b
k

=
thì
00
2
2
01
( 1)
(2 )!
nn
kk
k
kk
x
ab
k
= =


= =
∑∑
. Tương tự bài toán 1.1, khi tính
k
b
trong hầu hết các trường
hợp ta phải thay thế bởi
k
b
là giá trị làm tròn của
k
b
đến chữ số hàng thứ
2
()k−

2
1
10
2
k
kk
bb

−≤

Đặt
0
0
n

k
k
ab
=
=

, ta có:
0 00
22
0
2
1 11
1
( ) 10 10
22
n nn
kk
kk kk
k kk
n
aa bb bb
−−
= = =
−= − ≤ − ≤ =
∑ ∑∑

Vậy:
2
0
2

10
2
k
n
aa

−≤

Vì yêu cầu của bài toán là kết quả ghi ở dạng biểu diễn thập phân gần đúng dạng k-chuẩn tắc của cosx nên ta
lấy
a
là giá trị làm tròn của a đến chữ số hàng thứ (-k) và ta có:
3
1
10
2
k
aa

−≤

Đánh giá sai số: Tương tự bài toán 1.1, trong quá trình tính toán trên ta thấy có các sai số sau:
1) Sai số phương pháp: do lấy
1
a
thay thế cho cosx
12

2) Sai số tính toán: do lấy
2

a
thế cho
1
a
và lấy a thay thế cho
2
a
.
3) Sai số do làm tròn: do lấy
a
thay thế cho a.
Ta có:
( ) ( ) ( ) ( )
0
12
1 12 2
1 12 2
21
00
0
cos cos a + a a a a a
cos a a a a a a
1
10 10 10
(2 1)! 2 2 2
n
kk
k
xa x a
xa

nn
x
n
+
−−

−= − − + −+−
≤ − + − + −+−
≤ +++
+

Để
cos .10
k
xa
λ

−≤
, ta cần có:

0
12
21
00
0
1
10 10 10 .10
(2 1)! 2 2 2
n
kk

kk
nn
x
n
λ
+
−−
−−
+ + +≤
+


0
12
21
00
0
1
10 10 .10
(2 1)! 2 2 2
n
kk
k
nn
x
n
λ
+
−−



⇔ + + ≤−

+


Bây giờ ta sẽ tìm các hệ số
, 1, 2, 3
i
i
λ
=
sao cho:
0
1
2
21
1
0
0
2
0
3
123
1
.10
(2 1)! 2
1
10 10
22

1
10 10
22
1
n
k
k
k
k
k
x
n
n
n
λλ
λλ
λλ
λλλ
+







≤−


+





≤−







≤−




++=


Để đơn giản, ta có thể chọn:
1 23
1 11
;;
2 44
λλλ
= = =
, khi đó
0
0

1
1
2
2
21
21
0
0
00
0
0
11
21
.10
0
(2 1)! 2 2
4.10 (2 1)!
1 1 21
10 10 0
2 4 2 4.10 10
21
11
0
10 10
4.10 10
2 42
n
n
k
k

k
k
k
k
k
k
k
k
x
x
n
n
nn
n
n
λ
λ
λ
λ
λ
λ
+
+










≤−
−≥



+
+








≤ − ⇔ −≥







−≥
≤−







(I.2)
Vậy với
012
,,nkk
là các số nguyên dương nhỏ nhất thỏa (I.2) thì
a
giá trị thỏa yêu cầu của bài toán 2.1.
Nhận xét: do
12
,kk
đều là các số nguyên dương nhỏ nhất thỏa điều kiện
0
21
,
4.10 10
ky
n
y
λ
+

−∈
, nên
12
kk=
. Khi
thực hành ta chỉ cần xác định một trong hai giá trị này

13

Thuật toán tính cosx
(
)
0,
4
x
π



với sai số không quá
.10
k
λ

bằng phương pháp khai triển
Taylor
- Tên thuật toán:
(
)
cos [0 ] ,,
i4TL p x k
λ

{Tính cosx
(
)
0,

4
x
π



bằng phương pháp khai triển Taylor}
+ Input:
{ }
{ }
0, , 0,1,2, ,9 ,, , ,
4
xkxk
π
λλ
+

∈∈ ∈



+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng k–chuẩn tắc của cosx:
cos .10
k
xa
λ


= ±
}
- Thuật toán
B1: { Tìm
0
n
là số nguyên dương nhỏ nhất thỏa:
0
21
0
21
0
4.10 (2 1)!
n
k
x
n
λ
+

−≥
+
}
B1.1: Đặt
0
1n =

B1.2: Trong khi
0

21
0
21
0
4.10 (2 1)!
n
k
x
n
λ
+

−<
+
thì tăng
0
n
lên 1 đơn vị
B2: { Tìm
1
k
là số nguyên dương nhỏ nhất thỏa:
1
0
21
0
4.10 10
k
k
n

λ

−≥
}
B2.1: Đặt
1
1k =

B2.2: Trong khi
1
0
21
0
4.10 10
k
k
n
λ

−<
thì tăng
1
k
lên 1 đơn vị
B3: Lấy
x
là giá trị làm tròn của x đến chữ số hàng thứ
(
)
1

k−

B4: Đặt
a0=
. Với mỗi
0
0in= …
lần lượt thực hiện:
- Tính
2
( 1)
(2 )!
ii
i
x
b
i

=

- Lấy
i
b
là giá trị làm tròn của
i
b
đến chữ số hàng thứ
( )
1
k−


- Cộng dồn
i
b
vào
a
(
aa
i
b←+
)
B5: Lấy
a
là giá trị làm tròn của
a
đến chữ số hàng thứ
( )
k−

2.1.3. Thuật giải cho bài toán 1 và bài toán 2
Từ các nhận xét ở mục (II.1), ta có thuật toán cho bài toán 1 và bài toán 2 như sau:
2.1.3.1. Thuật toán tính sinx
()x∈
với sai số không quá
{ }
.10 , 0,1,2,3, ,9
k
λλ




- Tên thuật toán:
( )
sin , ,TL x k
λ
{Tính sinx
( )
x∈
bằng phương pháp khai triển Taylor }
14

+ Input:
{ }
{ }
, 0,1, 2, , , ,9 ,x xk k
λλ
+
∈∈ ∈

+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng k – chuẩn tắc của sinx:
sin .10
k
xa
λ

= ±

}
- Thuật toán
B1: Dùng thuật toán
[0 2 )( )QuyVe x
π

để tìm
l ∈
sao cho
[
)
2 0,2xl
ππ
−∈
{nếu
[
)
0,2x
π

thì
0l
=
}
B2: Dùng thuật toán [0 / 2]( )QuyVe x
π
− để xác định
0,
2
π

α



, i tương ứng với
2xl
π

. Khi đó:
sin( 2 ) ( 1) sin
i
xl
πα
−=−

B3: { Tính
sin
α

a
}
Nếu
0,
4
π
α



thì

- Tính
4s ]in ([ ,)0 ,TL k
π αλ

{áp dụng thuật toán
4s ]in ([ ,)0 ,TL k
π αλ

để tính
sin
α
với sai số
không quá
.10
k
λ

}
- Tính
sin [0( 1) 4]( , , )
i
akTL
π αλ
−= −

Ngược lại
- Tính
2
4]cos [ ,,)
0 ( k

TL
π
π αλ


{áp dụng thuật toán
4](
co
2
0
,,)s[TL k
π
π αλ
−−
để tính
sin
α
với sai số không quá
.10
k
λ

}
- Tính
2
cos [( 1) 4]( , ,0 )
i
a T kL
π
π αλ

−=−−

2.1.3.2. Thuật toán tính cosx
()x∈
với sai số không quá
{ }
.10 , 0,1,2,3, ,9
k
λλ



- Tên thuật toán:
( )
cos , ,TL x k
λ
{Tính cosx
(
)
x∈
bằng phương pháp khai triển Taylor}
+ Input:
{ }
{ }
, 0,1,, , 2,.,
,9 ,
x
xk k
λ λ
+

∈∈ ∈

+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng k – chuẩn tắc của cosx :
cos .10
k
xa
λ

= ±
}
- Thuật toán
B1: Dùng thuật toán
[0 2 )( )QuyVe x
π

để tìm
l ∈
sao cho
[
)
2 0,2xl
ππ
−∈
{nếu
[
)

0,2x
π

thì
0l =
}
B2: Dùng thuật toán
[0 / 2]( )QuyVe x
π

để xác định
0,
2
π
α



, j tương ứng
2xl
π

sao cho :
cos( 2 ) ( 1) cos
j
xl
πα
−=−

B3: { Tính

cos
α

a
}
Nếu
0,
4
π
α



thì
15

- Tính
4c ]os ([ ,)0 ,TL k
π αλ

{áp dụng thuật toán
4c ]os ([ ,)0 ,TL k
π αλ

để tính
cos
α
với sai số
không quá
.10

k
λ

}
- Tính
cos [0( 1) 4]( , , )
j
akTL
π αλ
−= −

Ngược lại
- Tính
4](si
2
0 ,,)n[TL k
π
π αλ
−−
{áp dụng thuật toán
4](si
2
0 ,,)n[TL k
π
π αλ
−−
để tính
cos
α


với sai số không quá
.10
k
λ

}
- Tính
[0 si( 1) 4] ( , , )
2
n
j
TLak
π
π αλ
−−= −

 Lưu ý: vài lưu ý trong 2 thuật toán
( )
sin , ,TL x k
λ

( )
cos , ,TL x k
λ

 Cách xác định
l
được thực hiện theo thuật toán
[0 2 )( )QuyVe x
π


trong phần II.1. MỘT SỐ NHẬN
XÉT
 Cách xác định
,,ij
α
ở bước 2 được thực hiện theo thuật toán
[0 / 2]( )
QuyVe x
π

trong phần II.1.
MỘT SỐ NHẬN XÉT
2.1.4. Ví dụ minh họa
a) Ví dụ 1: Tính
sin18
o
với sai số không quá
3
10

:
0
sin18 sin
10
π
=

 Ta thực hiện thuật toán
( )

sin , ,TL x k
λ
với
10
,1x
π
λ
= =

3k =

+ Input:
10
;1;3
xk
π
λ
= = =

+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng 3 – chính tắc của
sin
10
π
} .( 3 – chính tắc là trường
hợp đặc biệt của 3 – chuẩn tắc với
1

λ
=
)
B1: {Thực hiện thuật toán
[0 2 )( )QuyVe x
π

với
10
x
π
=
để tìm
l ∈
sao cho
[
)
2 0,2xl
ππ
−∈
}
Ta có
[
)
10
0,2 0lx
π
π
⇒= =∈


B2: { Thực hiện thuật toán
[0 2]( )QuyVe x
π

với
10
x
π
=
để xác định
2
0, ,i
π
α



tương ứng với
2xl
π

}
Do
)
10 2
0,x
ππ

= ∈


{ góc phần tư thứ I }, suy ra
10
,2xi
π
α
= = =

B3: { Tính
10
sin sin
π
α
=

a
}
16

Do
4
0,
10
π
π
α

= ∈

nên thực hiện thuật toán
4s ]in ([ ,)0 ,TL k

π αλ

để tính
sin
α
với sai số không quá
3
10

. Thực hiện
10
4]s (in [ ,,0 1 3)TL
π
π

ta được
10
sin 4]( ,1,3) 0.309[0TL
π
π
=−

Suy ra
2
10
( 1) 4]( ,1, 3)sin [ ( 1) 0.309 0 90 .30
i
Ta L
π
π

=− =−× =−

Vậy
03
sin18 sin 0.309 10
10
π

= = ±

 Thực hiện thuật toán
10
4]s (in [ ,,0 1 3)TL
π
π


+ Input:
10
;1;3xk
π
λ
= = =

+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng 3 – chính tắc của
sin

10
π
}
B1: {Tìm
0
n
là số nguyên dương nhỏ nhất thỏa:
0
2
0
21
0
4.10 (2 )!
n
k
x
n
λ

−≥
}
n
0

0
2
3
0
10
()

1
4.10 (2 )!
n
n
π


1 <0
2 <0
3 >0
Vậy
0
3n =

B2: {Tìm
1
k
là số nguyên dương nhỏ nhất thỏa:
1
0
21
0
4.10 10
k
k
n
λ

−≥
}

k
1

1
3
13
4.10 10
k


1 <0
2 <0
3 <0
4 <0
5 >0
17

Vậy
1
5k =

B3: Lấy
0.31416x =
là giá trị làm tròn của
10
π
đến chữ số hàng thứ
( )
5−


B4: Khởi tạo a=0. { Tính
,
ii
bb
và a với
1 21
( 1)
(2 1)!
ii
i
x
b
i
−−

=

,
13i = …
,
i
b
là giá trị làm tròn của
i
b
đến chữ số
hàng thứ
( )
5−
}

i

i
b

a

1 0.31416 0.31416
2 -0.00517 0.30899
3 0.00003 0.30902
B5: Lấy
0.309a =
là giá trị làm tròn của 0.30902 đến chữ số hàng thứ (-3)
b) Ví dụ 2: Tính
47
sin
10
π
với sai số không quá
5
10


 Ta thực hiện thuật toán
( )
sin , ,TL x k
λ
với
47
10

,1x
π
λ
= =

5k =

+ Input:
47
10
;1;5xk
π
λ
= = =

+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng 5 – chính tắc của
47
sin
10
π
} .( 5 – chính tắc là
trường hợp đặc biệt của 5 – chuẩn tắc với
1
λ
=
)

B1: {Thực hiện thuật toán
[0 2 )( )QuyVe x
π

với
47
10
x
π
=
để tìm
l ∈
sao cho
[
)
2 0,2xl
ππ
−∈
}
Do
47
10
2x
π
π
= ≥
nên ta cho l tăng từ 1 cho đến khi
2 ( 1) 0xl
π
− +<

(khi đó
[
)
2 0,2xl
ππ
−∈
)
l
2 ( 1)xl
π
−+

1 >0
2 <0

Vậy
[
)
2
7
2 0,2
10
l
xl
π
ππ
=




−=∈



18

B2: {Thực hiện thuật toán
[0 2]( )QuyVe x
π

với
7
10
x
π
=
để xác định
2
0, ,i
π
α



tương ứng với
7
2
10
xl
π

π
−=
}
Do
(
7
2,
2
10
xl
π
π
ππ

−=∈

{ góc phần tư thứ II }, suy ra:

73
10 10
2
i
ππ
απ

=−=



=



B3: { Tính
3
10
sin sin
π
α
=

a
}
Do
3
0,
4
10
π
π
α

= ∉

nên ta thực hiện thuật toán
4](
co
2
0
,,)
s[TL k

π
π αλ


để tính
sin( )
α
với sai số
không quá
5
10

. Thực hiện
4]co (s ,1, 5)[0
5
TL
π
π

, ta được
4]( ,1,5) 0.80902
5
cos [0TL
π
π
− =

Vậy
2
( 1) 4]( ,1, 5) (cos [

1) 0.80902 0.
0 80902
5
i
TL
a
π
π
=− =−=−

Vậy:
5
47
sin 0.80902 10
10
π

= ±

 Thực hiện thuật toán
4]
co (
s ,1, 5)
[0
5
TL
π
π



+ Input:
; 1; 5
5
xk
π
λ
= = =

+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng 5 – chính tắc của
cos
5
π
}
B1: {Tìm
0
n
là số nguyên dương nhỏ nhất thỏa:
0
21
0
21
0
4.10 (2 1)!
n
k
x

n
λ
+

−≥
+
}
n
0

0
21
5
0
5
()
1
4.10 (2 1)!
n
n
π
+

+

1 <0
2 <0
3 <0
4 >0
Vậy

0
4n =

19

B2: {Tìm
1
k
là số nguyên dương nhỏ nhất thỏa:
1
0
21
0
4.10 10
k
k
n
λ

−≥
}
k
1

1
5
14
4.10 10
k



1 <0
2 <0
3 <0
4 <0
5 <0
6 <0
7 >0
Vậy
1
7k =

B3: Lấy
0.6283185x =
là giá trị làm tròn của
5
π
đến chữ số hàng thứ
( )
7−

B4: Khởi tạo
0a =
. {Tính
,
ii
bb
và a với
2
( 1)

(2 )!
ii
i
x
b
i

=
,
04i = …
,
i
b
là giá trị làm tròn của
i
b
đến chữ số hàng
thứ
( )
7−
}
i

i
b

a

0 1 1
1 -0.1973920 0.8026080

2 0.0064939 0.8091019
3 -0.0000855 0.8090164
4 0.0000006 0.8090170
B5: Lấy
0.80902a =
là giá trị làm tròn của 0.8090170 đến chữ số hàng thứ (-5)
c) Ví dụ 3: Tính
18
cos
5
π




với sai số không quá
3
10


 Ta thực hiện thuật toán
( )
cos ,,xL kT
λ
với
18
;1
5
x
π

λ
=−=

3k =

20

+ Input:
18
;1;3
5
xk
π
λ
=−==

+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng 3 – chính tắc của
18
cos
5
π




} .( 3 – chính tắc là

trường hợp đặc biệt của 3 – chuẩn tắc với
1
λ
=
)
B1: {Thực hiện thuật toán
[0 2 )( )
QuyVe x
π

với
18
5
x
π
= −
để tìm
l ∈
sao cho
[
)
2 0,2
xl
ππ
−∈
}
Do
18
0
5

x
π
=−<
nên ta cho l giảm từ -1 cho đến khi
20xl
π
−≥

l
2
xl
π


-1 <0
-2 >0
Ta có:
2
2
2
5
l
xl
π
π
= −



−=




B2: { Thực hiện thuật toán
[0 / 2]( )
QuyVe x
π

với
5
2
x
π
=
để xác định
2
0, , j
π
α



tương ứng với
2xl
π

}
Do
)
2

52
0,x
ππ

= ∈

{ góc phần tư thứ I }, suy ra
2
5
,2
xj
π
α
= = =

B3: { Tính
5
2
cos cos
π
α
=

a
}
Do
4
2
0,
5

π
π
α

= ∉

nên ta thực hiện thuật toán
sin [0 4]( ,,)
2
L k
T
π
αλ
π
−−
để tính
cos
α
với sai số không
quá
3
10

. Thực hiện
10
sin [0 4]
( ,1, 3)TL
π
π


, từ kết quả ví dụ 1, ta được
10
sin ( ,1,
[ 3) 0.304] 90
TL
π
π
=−
.
Suy ra:

2
10
( 1) ( ,1, 3) (si 1) 0.309 0.3
n [0 4 09]
j
a
TL
π
π
=− =−× =−

Vậy
3
18
cos 0.309 10
5
π



−=±



d) Ví dụ 4: Tính
cos29
với sai số không quá
5
5.10


 Ta thực hiện thuật toán
( )
cos ,,xL kT
λ
với
29, 5x
λ
= =

5
k =

+ Input:
29; 5; 5
xk
λ
= = =

+ Output:

a
{
a
là biểu diễn thập phân gần đúng dạng 5 – chuẩn tắc của
cos29
:
5
cos29 5.10a

= ±
}
21

B1: {Thực hiện thuật toán
[0 2 )( )QuyVe x
π

với
9x =
để tìm
l ∈
sao cho }
Do
29 2
x
π
= ≥
nên ta cho l tăng từ 1 cho đến khi
2 ( 1) 0xl
π

− +<

l
29 2 ( 1)
l
π
−+

1 >0
2 >0
3 >0
4 <0
Vậy
4
2 29 8
l
xl
ππ
=


−=−


B2: {Thực hiện thuật toán
[0 / 2]( )QuyVe x
π

với
29 8x

π
= −
để xác định
2
0, , j
π
α



tương ứng với
2 29 8xl
ππ
−=−
}
Do
(
2
3
2 29 8 ,xl
π
π ππ

− =−∈

, { góc phần tư thứ III }suy ra:
(29 8 ) 29 9
1j
α ππ π
= − −= −



=


B3: { Tính
cos 29 9
απ
= −

a
}
Do
29 9 0,
4
π
απ

=−∈

nên ta thực hiện thuật toán
cos [0 4 (,,)]
kTL
αλπ

để tính
cos
α
với sai số không
quá

5
5.10

. Thực hiện
(c 2os 9[ 9 ,5,54 )0]TL
ππ
−−
, ta được
(29 9 ,5,5) 0.748cos [0 4] 06TL
π π
−=−
.
Suy ra
1
( 1) (29 9 ,5,5) ( 1cos [0 ) 0.748 0.74804] 6
j
TLa
π π
−=− − =−× =−

Vậy:
5
cos29 0.74806 5.10

=−±

 Thực hiện thuật toán
(c 2os 9[ 9 ,5,54 )0]TL
ππ
−−


+ Input:
29 9 ; 5; 5
xk
πλ
=−==

+ Output:
a
{
a
là biểu diễn thập phân gần đúng dạng 5 – chuẩn tắc của
cos(29 9 )
π

:
5
cos(29 9 ) 5.10a
π

−=±
}
B1: {Tìm
0
n
là số nguyên dương nhỏ nhất thỏa:
0
21
0
21

0
4.10 (2 1)!
n
k
x
n
λ
+

−≥
+
}
n
0

0
21
5
0
9 (29 9 )
4.10 (2 1)!
n
n
π
+


+

22


1 <0
2 <0
3 >0
Vậy
0
3n =

B2: {Tìm
1
k
là số nguyên dương nhỏ nhất thỏa:
1
0
21
0
4.10 10
k
k
n
λ

−≥
}
k
1

1
5
93

4.10 10
k


1 <0
2 <0
3 <0
4 <0
5 <0
6 >0
Vậy
1
6k =

B3: Lấy
0.725666x =
là giá trị làm tròn của
(29 9 )
π

đến chữ số hàng thứ
( )
6−

B4: Khởi tạo
0a =
. {Tính
,
ii
bb

và a với
2
( 1)
(2 )!
ii
i
x
b
i

=
,
03i = …
,
i
b
là làm tròn của
i
b
đến hàng chữ số (-6)}
i

i
b

a

0 1 1
1 -0.263295 0.736705
2 0.011554 0.748259

3 -0.000203 0.748056
B5: Lấy
0.74806a =
là giá trị làm tròn của 0.74806 đến chữ số hàng thứ (-5)
2.1.5. Đoạn chương trình tương ứng
Thuật toán tính giá trị các hàm sin, cos bằng phương pháp khai triển Taylor được thể hiện trong đoạn chương
trình dưới đây. Chương trình được viết bằng ngôn ngữ lập trình Pascal và được biên dịch trong Mode 8087.

23

{ Tinh gia tri cac ham sin, cos.
Chuong trinh su dung phuong phap khai trien Taylor de tinh gia tri gan dung cua sinx,cosx}

Program Tinh_Sin_Cos;
uses crt;
const error=-2;
maxoftcs=20;
type testcase=record
bt:string[32]; { bieu thuc cua x }
x:extended; { x: gia tri can tinh six/cos }
lambda:integer; { lambda va k: sai so cho truoc }
k:integer; { gia tri gan dung co sai so khong qua lambda.10^(-k) }
sin:boolean; { neu sin=true thi tinh sinx, nguoc lai tinh cosx }
end;
testcases=array[1 maxoftcs] of testcase;

var c,lambda,k:integer;
i:integer;
x,a_:extended;
tcs:testcases;

numoftcs:integer;

{//////////////////////////////////////////////////////////////////////////////}
{ Cac ham/thu tuc dung chung cho ca 3 phuong phap tinh sinx/cosx:
1. Khai trien Taylor
2. Da thuc noi suy Lagrange
3. Da thuc noi suy Newton }
{//////////////////////////////////////////////////////////////////////////////}

{ Cac ham tinh luy thua va giai thua}

{ Ham tinh a^k }
Function LuyThua(a:extended; k:integer):extended;
var i:WORD;
lt:extended;
begin
lt:=1;
for i:=1 to abs(k) do
lt:=lt*a;
if k<0 then
lt:=1/lt;
LuyThua:=lt;
end;

{ Ham tinh n! }
Function GiaiThua(n:WORD): LongInt;
var i:WORD;
gt:LongInt;
begin
gt:=1;

for i:=2 to n do
gt:=gt*i;
GiaiThua:=gt;
end;

{ Ham lam tron x den chu so thap phan hang thu -k }
Function LamTron(x:extended;k:integer):extended;
var dau:shortint;
a,muy,y,kq:extended;
alpha:integer;
begin
if (x<0) then dau:=-1 else dau:=1;
y:=abs(x);
a:=trunc(y*LuyThua(10,k))*LuyThua(10,-k);
muy:=y-a;
if (muy<LuyThua(10,-k)/2) then
kq:=a
else if (muy>LuyThua(10,-k)/2) then
24

kq:=a+LuyThua(10,-k)
else { muy=LuyThua(10,k)/2}
begin
alpha:=trunc(y*LuyThua(10,k)) mod 10;
if (alpha mod 2 = 0) then kq:=a
else kq:=a+LuyThua(10,-k);
end;
LamTron:=kq*dau;
end;


{ Thu tuc xac dinh gia tri alpha tuong ung voi gia tri x thuoc R
input: x thuoc R
output: alpha nam trong doan [o,2pi] va l la so nguyen duong thoa: x=alpha+l*2*pi}
Procedure QuyVe0_2pi(x:extended; var alpha:extended; var l:integer);
begin
l:=0;
if (x>=0) and (x<=2*pi) then
alpha:=x
else if (x>=2*pi) then
begin
Repeat
l:=l+1;
Until (x-2*l*pi<2*pi);
alpha:=x-2*l*pi;
end
else { x<0 }
begin
Repeat
l:=l-1;
Until (x-2*l*pi>=0);
alpha:=x-2*l*pi;
end;
end;

(* Thu tuc xac dinh gia tri alpha thuoc doan [0,pi/2] tuong ung voi gia tri x thuoc [0,2pi]
input: x thuoc [0,2*pi]
output: alpha,i,j voi alpha thuoc [0,pi/2], i,j thuoc {1,2} sao cho:
sinx=(-1)^i.sin(alpha)
cosx=(-1)^j.cos(alpha) *)
Procedure QuyVe0_pi_chia_2(x:extended; var alpha:extended; var i,j:byte);

begin
if (x>=0) and (x<=pi/2) then { goc phan tu thu I }
begin
alpha:=x;
i:=2; { vi sinx=sin(alpha)=(-1)^2*sin(alpha) }
j:=2; { vi cosx=cos(alpha)=(-1)^2*cos(alpha) }
end
else if (x>pi/2) and (x<=pi) then { goc phan tu thu II }
begin
alpha:=pi-x;
i:=2; { vi sinx=sin(alpha)=(-1)^2*sin(alpha) }
j:=1; { vi cosx=-cos(alpha)=(-1)^1*cos(alpha) }
end
else if (x>pi) and (x<=3*pi/2) then { goc phan tu thu III }
begin
alpha:=x-pi;
i:=1; { vi sinx=-sin(alpha)=(-1)^1*sin(alpha) }
j:=1; { vi cosx=-cos(alpha)=(-1)^1*cos(alpha) }
end
else { goc phan tu thu IV }
begin
alpha:=2*pi-x;
i:=1; { vi sinx=-sin(alpha)=(-1)^1*sin(alpha) }
j:=2; { vi cosx=cos(alpha)=(-1)^2*cos(alpha) }
end
end;


25


×