ในการคำนวณด้วยระบบเลขทศนิยม
เป็นเรื่องปรกติที่เราพบว่าตัวเลขที่คำนวณได้นั้นเป็นทศนิยมไม่รู้จบ
หรือมีหลักทศนิยมมากเกินกว่าที่เราต้องการใช้หรือจัดเก็บได้
ทำให้เราต้องทำการปัดทศนิยมส่วนเกินตัวที่อยู่ด้านท้ายทิ้ง
และสิ่งที่ทำโดยทั่วไปก็คือ
ถ้าตัวเลขในตำแหน่งทศนิยมที่อยู่ถัดจากตำแหน่งที่เราต้องการเก็บนั้นมีค่าเป็น
4
หรือน้อยกว่า
เราก็จะปัดเศษนั้นทิ้งไป
กล่าวคือสมมุติว่าเราต้องการเก็บตัวเลขเป็นทศนิยม
2
ตำแหน่ง
ตัวเลข 3.124
และ
3.121
ก็จะถูกปัดเป็น
3.12
ทั้งสองจำนวน
และในทางกลับกันถ้าตัวเลขในตำแหน่งทศนิยมที่อยู่ถัดจากตำแหน่งที่เราต้องการเก็บนั้นมีค่าเป็น
6
หรือมากกว่า
เราก็จะปัดตัวเลขที่อยู่ข้างหน้านั้นขึ้น
1
หน่วย
กล่าวคือสมมุติว่าเราต้องการเก็บตัวเลขเป็นทศนิยม
2
ตำแหน่ง
ตัวเลข 3.126
และ
3.129
ก็จะถูกปัดเป็น
3.13
ทั้งสองจำนวน
ประเด็นที่เป็นคำถามก็คือ
ถ้าทศนิยมตำแหน่งนั้นเป็นเลข
5
เราควรปัดเศษ
5
ทิ้งหรือปัดตัวเลขข้างหน้าขึ้น
1
หน่วย
กล่าวคือในกรณีของเลข 3.125
เราควรจะปัดเป็น
3.12
(คือปัดทิ้ง)
หรือเป็น
3.13
(คือปัดขึ้นหนึ่งหน่วย)
และการทำแต่ละแบบนั้นส่งผลอย่างไรหรือไม่อย่างไร
ถ้าเรานำตัวเลขที่ผ่านการปัดเศษนั้นไปทำการคำนวณต่อ
ก่อนอื่นเราลองมาดูตัวอย่างง่าย
ๆ กันก่อน โดยสมมุติว่าเราต้องการคำนวณค่าผลรวม
(1/2)
+ (2/2) + (3/2) + ... + (18/2) + (19/2) + (20/2)
ว่าได้เท่ากับเท่าไรโดยปัดทศนิยมให้เป็นจำนวนเต็ม
ซึ่งเราอาจทำการคำนวณด้วยรูปแบบต่าง
ๆ ได้ดังนี้
รูปแบบที่
1
บวกตัวเลขที่เป็นตัวเศษทุกตัวเข้าด้วยกันก่อน
จากนั้นจึงหารด้วย 2
(1
+ 2 + 3 + ... + 18 + 19 + 20)/2 = 210/2 = 105
รูปแบบที่
2
หารตัวเลขแต่ละตัวด้วย
2
ก่อนทำการบวกเข้าด้วยกัน
เศษที่เหลือจากการหาร (0.5)
ให้ทำการปัดลงอย่างเดียว
(1/2)
+ (2/2) + (3/2) + ... + (18/2) + (19/2) + (20/2) = 0 + 1 + 1 + ... +
9 + 9 + 10 = 100
รูปแบบที่
3
หารตัวเลขแต่ละตัวด้วย
2
ก่อนทำการบวกเข้าด้วยกัน
เศษที่เหลือจากการหาร (0.5)
ให้ทำการปัดขึ้นอย่างเดียว
(1/2)
+ (2/2) + (3/2) + ... + (18/2) + (19/2) + (20/2) = 1 + 1 + 2 + ... +
9 + 10 + 10 = 110
รูปแบบที่
4
หารตัวเลขแต่ละตัวด้วย
2
ก่อนทำการบวกเข้าด้วยกัน
ในกรณีที่มีเศษเหลือ
ถ้าตัวเลขหน้า .5
เป็นเลขคี่ให้ทำการปัดขึ้น
(เช่น
1.5
ปัดเป็น
2)
ถ้าตัวเลขหน้า
.5
เป็นเลขคู่ให้ทำการปัดลง
(เช่น
4.5
ปัดเป็น
4)
(1/2)
+ (2/2) + (3/2) + ... + (18/2) + (19/2) + (20/2) = 0 + 1 + 2 + ... +
9 + 10 + 10 = 105
รูปแบบที่
5
หารตัวเลขแต่ละตัวด้วย
2
ก่อนทำการบวกเข้าด้วยกัน
ในกรณีที่มีเศษเหลือ
ถ้าตัวเลขหน้า .5
เป็นเลขคี่ให้ทำการปัดลง
(เช่น
1.5
ปัดเป็น
1)
ถ้าตัวเลขหน้า
.5
เป็นเลขคู่ให้ทำการปัดขึ้น
(เช่น
4.5
ปัดเป็น
5)
(1/2)
+ (2/2) + (3/2) + ... + (18/2) + (19/2) + (20/2) = 1 + 1 + 1 + ... +
9 + 9 + 10 = 105
จะเห็นว่ารูปแบบที่
1
ที่มีการปัดเศษเพียงครั้งเดียว
และรูปแบบที่ 4
และ
5
ที่ให้กรณีเศษ
.5
มีทั้งการปัดขึ้นและลง
(ขึ้นอยู่กับตัวเลขข้างหน้าว่าเป็นเลขคู่หรือเลขคี่)
ต่างให้คำตอบที่เหมือนกัน
ส่วนกรณีที่ทำการคำนวณได้เศษ
.5
แล้วทำการปัดลงเสมอนั้น
ทำให้โอกาสปัดเศษลงมีมากกว่าปัดเศษขึ้น
เมื่อคำนวณไปเรื่อย ๆ
จะทำให้ได้คำตอบที่มีแนวโน้มต่ำกว่าคำตอบที่ถูกต้องมากขึ้นเรื่อย
ๆ ในทางกลับกันพอคำนวณได้เศษ
.5
แล้วทำการปัดขึ้นเพียงอย่างเดียว
ทำให้โอกาสปัดเศษขึ้นมีมากกว่าปัดเศษลง
เมื่อคำนวณไปเรื่อย ๆ
จะทำให้ได้คำตอบที่มีแนวโน้มสูงกว่าคำตอบที่ถูกต้องมากขึ้นเรื่อย
ๆ
การใช้เกณฑ์ที่ให้ดูตัวเลขที่อยู่ข้างหน้า
.5
ว่าเป็นเลขคู่หรือเลขคี่ก่อนที่จะทำการปัดเศษนั้น
(เช่นวิธีที่
4
หรือ
5)
ทำให้โอกาสปัดเศษขึ้นมีเท่า
ๆ กับที่จะปัดเศษลง
เมื่อคำนวณไปเรื่อย ๆ
จะพบว่าคำตอบที่คำนวณได้จะเต้นอยู่รอบ
ๆ คำตอบที่ถูกต้อง
ทั้งนี้เพราะความคลาดเคลื่อนจากการปัดเศษนั้นจะคอยหักล้างกันเอง
ค่าคลาดเคลื่อน
(error)
ที่เกิดขึ้นระหว่างการคำนวณสามารถแบ่งออกได้เป็น
2
แบบคือค่าคลาดเคลื่อนการปัดเศษ
(round-off
error) และค่าคลาดเคลื่อนตัดปลาย
(truncation
error)
ค่าคลาดเคลื่อนการปัดเศษเป็นความผิดพลาดที่เกิดจากการที่เครื่องมือไม่สามารถเก็บค่าตัวเลขที่เป็นจริงได้
ทั้งนี้อาจเนื่องจากเครื่องไม่สามารถหาเลขฐานสองที่มีขนาดพอดีกับเลขฐานสิบที่ต้องการแทนค่าได้
ค่าของเลขฐานสองที่ใช้แทนค่าจึงเป็นค่าที่ใกล้เคียงกับค่าที่ควรเป็น
หรือในกรณีที่เป็นตัวเลขทศนิยมไม่รู้จบ
หรือจำนวนตัวเลขหลังจุดทศนิยมมากเกินไป
ทำให้ต้องมีการตัดทิ้งส่วนหนึ่ง
การลดการลดความผิดพลาดชนิดนี้พอจะทำได้โดยการเพิ่มจำนวนจุดทศนิยมที่จะใช้ในการคำนวณ
แต่จะมีข้อเสียคือต้องใช้พื้นที่ในหน่วยความจำมากขึ้นและทำให้การคำนวณช้าลง
ค่าคลาดเคลื่อนการปัดเศษเป็นสิ่งที่ติดมากับเครื่องมือ
ไม่สามารถหลีกเลี่ยงได้
ในระหว่างการคำนวณค่าความคลาดเคลื่อนนี้อาจจะหักล้างกันไปเอง
คืออยู่ในลักษณะปัดขึ้นหรือลงในจำนวนครั้งที่เท่า
ๆ กัน ในกรณีเช่นนี้ถ้ามีการคำนวณเกิดขึ้น
N
ครั้งและเครื่องคำนวณมีค่าความเที่ยง
(machine
precision) เท่ากับ
em
ค่าความคลาดเคลื่อนทั้งหมดอาจจะมีอันดับ
(order)
แค่
กล่าวคือถ้าค่า machine
precision ของเครื่องคือ
10-16
และมีการคำนวณ
106
ครั้ง
ความคลาดเคลื่อนจะอยู่ที่ระดับ
√106
x 10-16
= 10-13
หรือสูญเสียทศนิยม
3
ตำแหน่งสุดท้ายไป
แต่ถ้าหากการปัดเศษมีแนวโน้มไปในทิศทางใดทิศทางหนึ่ง
ค่าความผิดพลาดทั้งหมดจะมีขนาดถึง
N.em
กล่าวคือถ้าค่า
machine
precision ของเครื่องคือ
10-16
และมีการคำนวณ
106
ครั้ง
ความคลาดเคลื่อนจะอยู่ที่ระดับ
106
x 10-16
= 10-10
หรือสูญเสียทศนิยม
6
ตำแหน่งสุดท้ายไป
นอกจากนี้ในการคำนวณบางแบบเช่นการลบเลขสองจำนวนที่มีขนาดใกล้กันมาก
ค่าคลาดเคลื่อนการปัดเศษสามารถส่งผลกระทบที่มีนัยสำคัญต่อคำตอบที่ได้จากการคำนวณได้อย่างกระทันหันในการคำนวณเพียงครั้งเดียว
ตัวอย่างประเภทนี้ได้แค่การหารากของสมการกำลังสองจากสูตรที่ใช้กันทั่วไปคือ
ปัญหาจะเกิดขึ้นเมื่อ
ac << b2
(หมายเหตุ
:
sgn(b) คือเครื่องหมายของค่า
b
กล่าวคือ
sgn(b)
มีค่าเป็น
1
ถ้า
b > 0 มีค่าเป็น
-1
ถ้า
b < 0 และมีค่าเป็น
0
ถ้า
b
= 0)
เพื่อให้เห็นภาพจะลองทำการหารากของสมการ
(จุดที่กราฟตัดแกน
x)
ของสมการ
y
= ax2 + bx + c จะ
เมื่อ a
= 1 และ
c
= 1 โดยที่
b
มีค่าต่าง
ๆ กัน การคำนวณโดยใช้ spread
sheet ของโปรแกรม
OpenOffice
4.1.5 โดย
วิธี
(ก)
คำนวณโดยใช้สูตร
ค่าที่ได้แสดงไว้ในตารางที่
๑
วิธี
(ข)
คำนวณโดยใช้สูตร
และ
และ ค่าที่ได้แสดงไว้ในตารางที่
๒
ค่า
x1
และ
x2
คือค่าจุดที่กราฟตัดแกน
x
ที่คำนวณได้
ส่วนค่า y1
และ
y2
คือค่า
y
ที่ได้จากการแทนค่า
x1
และ
x2
เข้าไปในสมการ
ถ้าหาก x1
และ
x2
ไม่มีความคลาดเคลื่อนใด
ๆ ค่า y1
และ
y2
ควรจะมีค่าเป็นศูนย์ทั้งสองค่า
ตารางที่ ๑ ค่าคากของสมการที่คำนวณตามวิธีการ (ก) ที่ค่า b ต่าง กัน
ตารางที่ ๒ ค่าคากของสมการที่คำนวณตามวิธีการ (ข) ที่ค่า b ต่าง กัน
ตารางที่ ๑ ค่าคากของสมการที่คำนวณตามวิธีการ (ก) ที่ค่า b ต่าง กัน
ตารางที่ ๒ ค่าคากของสมการที่คำนวณตามวิธีการ (ข) ที่ค่า b ต่าง กัน
พึงสังเกตว่าการคำนวณตามวิธีการ
(ข)
(ตารางที่
๒)
จะให้ค่า
y
ที่ถูกต้องมากกว่าค่า
y
ที่ได้จากการคำนวณตามวิธีการ
(ก)
(ตารางที่
๑)
แสดงว่าการคำนวณตามวิธีการ
(ข)
มีค่าความคลาดเคลื่อนที่ต่ำกว่า