วิธีการคำนวณเลขยกกำลังมีด้วยกันหลายวิธี ในกรณีที่เลขยกกำลังนั้นเป็นจำนวนเต็ม เราก็สามารถคำนวณได้ด้วยการคูณกันโดยตรง อย่างเช่น x4 ก็จะเท่ากับ x*x*x*x
แต่วิธีการคูณกันโดยตรงนี้ไม่สามารถใช้ได้ในกรณีที่เลขยกกำลังไม่ใช่จำนวนเต็ม ในกรณีเช่นนี้ถ้าหากภาษาคอมพิวเตอร์ที่ใช้นั้นมีคำสั่งยกกำลัง เราก็สามารถใช้คำสั่งนั้นแทน เช่น x4 = x**4 หรือ x4 = x^4 ซึ่งขึ้นอยู่กับภาษา
แต่ถ้าภาษานั้นไม่มีคำสั่งยกกำลัง เราก็สามารถคำนวณได้ด้วยการหาค่า log ก่อนแล้วค่อยทำการ antilog กลับ ดังนั้นการคำนวณ x4 ก็จะออกมาในรูปแบบ x4 = exp(4*ln(x)) (ในกรณีของการใช้ natural log)
ในทางทฤษฎีแล้วทั้ง 3 วิธีจะให้คำตอบที่เหมือนกัน แต่เมื่อนำมาคำนวณบนเครื่องคอมพิวเตอร์ที่ต้องมีการแปลงเลขฐาน 10 ให้กลายเป็นเลขฐาน 2 ก่อนเริ่มการคำนวณ และแปลงเลขฐาน 2 ที่คำนวณได้ออกมาเป็นเลขฐาน 10 เพื่อก่ารแสดงผลให้ผู้ใช้เห็น มันจะให้ผลเหมือนกันไหม นี่จึงเป็นที่มาของบทความในวันนี้
การคำนวณในที่นี้ใช้โปรแกรม spreadsheet ของ OpenOffice เวอร์ชัน 4.1.14 บนระบบปฏิบัติการ 64 bit โดยจะคำนวณค่า x4 ใน 4 รูปแบบด้วยกันคือ คูณกันโดยตรง (z1), ใช้คำสั่งยกกำลัง (z3), การหาค่า log ก่อนแล้วค่อย anti log กลับด้วยการใช้ natural log (z2) และ log ฐาน 10 (z4) จากนั้นทำการเปรียบเทียบผลที่คำนวณได้เมื่อเทียบกับการคูณกันโดยตรง (z1) ด้วยการหาค่าผลต่าง (zn - z1 ซึ่งถ้าค่าเท่ากันผลลัพธ์ต้องเป็นศูนย์) และการหาค่าสัดส่วน (zn/z1 และ z1/zn ซึ่งถ้าค่าเท่ากันผลลัพธ์ต้องเป็นหนึ่ง)
การทดลองเริ่มจากใช้ค่า x = 0.100000000000000 ก่อน ผลการคำนวณแสดงไว้ในตารางที่ ๑ จะเห็นว่าทั้ง 4 วิธีนั้นให้ผลลัพธ์ที่เหมือนกัน เห็นได้จากการได้ค่าผลต่างเป็น 0 และค่าสัดส่วนเป็น 1
ตารางที่ ๑ ผลการคำนวณ x4 ที่ค่า x = 0.100000000000000 ด้วยโปรแกรม OpenOffice 4.1.14
x |
1.00000000000000E-001 |
|
|
z1 = x*x*x*x |
1.00000000000000E-004 |
|
|
4*ln(x) |
-9.21034037197618E+000 |
z3 = exp(4*ln(x)) |
1.00000000000000E-004 |
z3 – z1 |
0.00000000000000E+000 |
z3/z1 |
1.00000000000000E+000 |
z1/z3 |
1.00000000000000E+000 |
|
|
z4 = x^4 |
1.00000000000000E-004 |
z4 - z1 |
0.00000000000000E+000 |
z4/z1 |
1.00000000000000E+000 |
z1/z4 |
1.00000000000000E+000 |
|
|
4*log(x) |
-4.00000000000000E+000 |
z5 = 10^(4*log(x)) |
1.00000000000000E-004 |
z5 - z1 |
0.00000000000000E+000 |
z5/z1 |
1.00000000000000E+000 |
z1/z5 |
1.00000000000000E+000 |
ด้วยโปรแกรมตัวเดิม ทำเพียงแค่ป้อนค่า x ค่าใหม่โดยใช้ x = 0.123456000000000 ผลลัพธ์ที่คำนวณได้แสดงไว้ในตารางที่ ๒ จะเห็นว่าในกรณีของการคำนวณด้วยการหาค่า log ด้วย natural log และทำการ antilog กลับนั้น ให้ค่าสัดส่วน z3/z1 = 1 แต่พอคำนวณค่าสัดส่วน z1/z3 กลับได้ค่าเท่ากับ 10
ตารางที่ ๒ ผลการคำนวณ x4 ที่ค่า x = 0.123456000000000 ด้วยโปรแกรม OpenOffice 4.1.14
x |
1.23456000000000E-001 |
|
|
z1 = x*x*x*x |
2.32299784284559E-004 |
|
|
4*ln(x) |
-8.36748184679549E+000 |
z3 = exp(4*ln(x)) |
2.32299784284559E-004 |
z3 – z1 |
0.00000000000000E+000 |
z3/z1 |
1.00000000000000E+000 |
z1/z3 |
10.00000000000000E+000 |
|
|
z4 = x^4 |
2.32299784284559E-004 |
z4 - z1 |
0.00000000000000E+000 |
z4/z1 |
1.00000000000000E+000 |
z1/z4 |
1.00000000000000E+000 |
|
|
4*log(x) |
-3.63395119348891E+000 |
z5 = 10^(4*log(x)) |
2.32299784284559E-004 |
z5 - z1 |
0.00000000000000E+000 |
z5/z1 |
1.00000000000000E+000 |
z1/z5 |
1.00000000000000E+000 |
ทีนี้พอเปลี่ยนค่า x เป็น 0.123456789123456 ผลลัพธ์ที่คำนวณได้แสดงไว้ในตารางที่ ๓ จะเห็นว่าในกรณีของการคำนวณด้วยการหาค่า log ด้วย natural log และทำการ antilog กลับนั้น ให้ค่าสัดส่วน z1/z3 = 10 แต่พอคำนวณค่าสัดส่วน z3/z1 ได้ค่าเท่ากับ 1 ซึ่งกลับกับกรณีในตารางที่ ๒
ตารางที่ ๓ ผลการคำนวณ x4 ที่ค่า x = 0.123456789123456 ด้วยโปรแกรม OpenOffice 4.1.14
-
x
1.23456789123456E-001
z1 = x*x*x*x
2.32305723727476E-004
4*ln(x)
-8.36745627911360E+000
z3 = exp(4*ln(x))
2.32305723727476E-004
z3 – z1
0.00000000000000E+000
z3/z1
10.00000000000000E+000
z1/z3
1.00000000000000E+000
z4 = x^4
2.32305723727476E-004
z4 - z1
0.00000000000000E+000
z4/z1
1.00000000000000E+000
z1/z4
1.00000000000000E+000
4*log(x)
-3.63394008958575E+000
z5 = 10^(4*log(x))
2.32305723727476E-004
z5 - z1
0.00000000000000E+000
z5/z1
1.00000000000000E+000
z1/z5
1.00000000000000E+000
ทีนี้ลองใหม่ ด้วยการใช้โปรแกรม Excel 2016เปิดไฟล์เดิม (ที่เป็น spreadsheet ของ OpenOffice) แลัวบันทึกเป็น .xlsx จากนั้นลองป้อนค่า x เดียวกันเข้าไป ผลลัพธ์ที่ได้แสดงไว้ในตารางที่ ๔-๖
ตารางที่ ๔ ผลการคำนวณ x4 ที่ค่า x = 0.100000000000000 ด้วยโปรแกรม Excel 2016
-
x
1.00000000000000E-001
z1 = x*x*x*x
1.00000000000000E-004
4*ln(x)
-9.21034037197618E+000
z3 = exp(4*ln(x))
1.00000000000000E-004
z3 – z1
0.00000000000000E+000
z3/z1
1.00000000000000E+000
z1/z3
9.99999999999999E-001
z4 = x^4
1.00000000000000E-004
z4 - z1
0.00000000000000E+000
z4/z1
1.00000000000000E+000
z1/z4
1.00000000000000E+000
4*log(x)
-4.00000000000000E+000
z5 = 10^(4*log(x))
1.00000000000000E-004
z5 - z1
0.00000000000000E+000
z5/z1
1.00000000000000E+000
z1/z5
1.00000000000000E+000
ตารางที่ ๕ ผลการคำนวณ x4 ที่ค่า x = 0.123456000000000 ด้วยโปรแกรม Excel 2016
-
x
1.23456000000000E-001
z1 = x*x*x*x
2.32299784284559E-004
4*ln(x)
-8.36748184679549E+000
z3 = exp(4*ln(x))
2.32299784284559E-004
z3 – z1
0.00000000000000E+000
z3/z1
1.00000000000000E+000
z1/z3
9.99999999999999E-001
z4 = x^4
2.32299784284559E-004
z4 - z1
0.00000000000000E+000
z4/z1
1.00000000000000E+000
z1/z4
1.00000000000000E+000
4*log(x)
-3.63395119348891E+000
z5 = 10^(4*log(x))
2.32299784284559E-004
z5 - z1
0.00000000000000E+000
z5/z1
1.00000000000000E+000
z1/z5
1.00000000000000E+000
ตารางที่ ๖ ผลการคำนวณ x4 ที่ค่า x = 0.123456789123456 ด้วยโปรแกรม Excel 2016
-
x
1.23456789123456E-001
z1 = x*x*x*x
2.32305723727476E-004
4*ln(x)
-8.36745627911360E+000
z3 = exp(4*ln(x))
2.32305723727476E-004
z3 – z1
0.00000000000000E+000
z3/z1
9.99999999999999E-001
z1/z3
1.00000000000000E+000
z4 = x^4
2.32305723727476E-004
z4 - z1
0.00000000000000E+000
z4/z1
1.00000000000000E+000
z1/z4
1.00000000000000E+000
4*log(x)
-3.63394008958575E+000
z5 = 10^(4*log(x))
2.32305723727476E-004
z5 - z1
0.00000000000000E+000
z5/z1
9.99999999999999E-001
z1/z5
9.99999999999999E-001
การคำนวณทั้งหมดใช้ชุดคำสั่งเดียวกัน ต่างกันแค่ค่าที่ป้อนเข้าไปเพื่อให้คำนวณ และคำนวณด้วย spreadsheet ต่างกัน แต่ทำไมผลจึงออกมาไม่เหมือนกัน อันนี้คงต้องฝากไปทดลองดูกันเอง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น