วันจันทร์ที่ 14 สิงหาคม พ.ศ. 2566

ตัวเลขที่เท่ากันแต่ไม่เท่ากัน MO Memoir : Monday 14 August 2566

 วิธีการคำนวณเลขยกกำลังมีด้วยกันหลายวิธี ในกรณีที่เลขยกกำลังนั้นเป็นจำนวนเต็ม เราก็สามารถคำนวณได้ด้วยการคูณกันโดยตรง อย่างเช่น 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 ต่างกัน แต่ทำไมผลจึงออกมาไม่เหมือนกัน อันนี้คงต้องฝากไปทดลองดูกันเอง

ไม่มีความคิดเห็น: