การหาค่ารากที่สอง(Square Root)
ค่ารากที่สอง นิยามได้ ดังนี้
x² = n
จะเรียก x ว่าเป็นค่ารากที่สองของ n (โดยทั่วไปจะพูดว่า ถอด square root nได้ x)
โดยจะมีสัญลักษณ์ที่ใช้แทนค่ารากที่สอง คือ
เช่น เราเคยท่องจำกันว่า ค่ารากที่สองของ 3 มีค่าประมาณ 1.732 ก็คือหากเรานำ 1.732² จะมีค่าประมาณ 3 น้่นเอง
หมายเหตุ ค่ารากที่สองของ 3 จะเป็นจำนวนอตรรกยะ(เป็นทศนิยมไม่รู้จบที่ไม่ซ้ำ)
ในบทความนี้จะกล่าวถึงขั้นตอนวิธีการต่าง ๆ ในการหาค่ารากที่สอง เฉพาะกรณีที่มีค่ารากที่สองเป็นจำนวนจริงบวกเท่านั้น (ค่ารากที่สองของจำนวนจริงลบ จะมีค่าเป็นจำนวนจินตภาพ)
วิธีที่ 0. วิธีการตั้งหารยาว
(ที่เรียกว่า วิธีที่ 0. เพราะว่า จะหาค่าด้วยตัวเอง) เป็นวิธีที่มีขั้นตอนคล้าย ๆ กับการตั้งหารยาว
ตัวอย่างที่ 1 ต้องการหาค่ารากที่สองของ 1024
ขั้นตอนที่ 1 : ให้ทำการจับคู่เลข โดยใช้ จุดทศนิยมเป็นหลัก เช่น 123.45 จะจับคู่ได้เป็น 1'23. 45'00'00
ดังนั้น 1024 จะจับคู่ได้เป็น 10'24
ขั้นตอนที่ 2 : ให้หาเลขจำนวนเต็มที่ยกกำลังสองแล้วได้ค่าใกล้เคียง(ห้ามเกิน) เลขคู่แรกมากที่สุด
ดังนั้น คู่แรกคือ 10 จะมีเลข 3² = 9 มีค่าใกล้ที่สุด ให้เขียนเลข 3 ไว้สามตำแหน่ง(ด้านหน้าลงมา 2 ตำแหน่ง , ด้านบน 1 ตำแหน่ง) และ เขียนเลข 9 ไว้ด้านล่างเลข 10
ขั้นตอนที่ 3 : หาค่า 10–9 จะได้ 1 (คล้ายการตั้งหารยาว)
ขั้นตอนที่ 4 : นำเลข 3 ด้านหน้าสองตัวมา บวกกัน ได้ 6
ขั้นตอนที่ 5 : ดึงคู่เลขถัดไปมาต่อท้ายเลขผลลบที่ได้
ดังนั้น จะดึง 24 มาต่อท้ายเลข 1 จะได้เป็น 124
ขั้นตอนที่ 6 : ให้หาเลขจำนวนเต็มไปใส่ไว้สองตำแหน่ง คือ ต่อท้ายเลขผลบวกจาก ขั้นตอนที่ 4 และ ไว้ด้านล่างลงมา โดยที่เลขที่หามาเมื่อคูณกันแล้วต้องได้ใกล้ค่าจาก ขั้นตอนที่ 5 มากที่สุด(ห้ามเกิน)
ดังนั้น จะได้ว่า 62 x 2 = 124
ขั้นตอนที่ 7 : ให้วนไปทำขั้นตอนที่ 3 ไปเรื่อย ๆ จนกว่าจะถึงค่าความละเอียดที่ต้องการ
ดังนั้น 124–124 = 0 (ซึ่งถ้าหากวนทำต่อไป ก็ได้จะ 0 ไปเรื่อย ๆ)
ค่ารากที่สอง คือ ค่าที่อยู่ด้านบน ดังนั้น กรณีนี้ คือ 32
ตัวอย่างที่ 2 ต้องการหาค่ารากที่สองของ 3
โดยทำตามขั้นตอนด้านบนจะได้ ค่ารากที่สองของ 3 มีค่าประมาณ 1.732
วิธีการหาค่ารากที่สองต่อไปนี้จะทำการเขียนโปรแกรมช่วยในการคำนวณ
วิธีที่ 1. Brute Force
วิธีนี้จะที่ไล่ยกกำลังสองหาค่าที่เป็นไปได้ โดยหาจำนวนเต็มที่ยกกำลังสองได้ค่าใกล้ ๆ ก่อน หากยังไม่ได้ค่าที่ต้องการจะเพิ่มค่าทีละ 1 (10⁰) เมื่อ ค่ายกกำลังสองเกินค่าที่ต้องการให้ใช้ค่าก่อนหน้า ทำการเลื่อนหลักทศนิยมตำแหน่งถัดไป ทำตามขั้นตอนเดิมแบบนี้ไปเรื่อย ๆ จนถึงทศนิยมตามความละเอียดที่ต้องการ
วิธีที่ 2. Binary Search
ใช้วิธีกำหนด ค่าเริ่มต้น 2 ค่า เรียกว่า left , right แล้วหาค่ากึ่งกลางของทั้งสอง กำหนดให้เป็นค่ารากที่สอง แล้วยกกำลังสองของค่าดังกล่าว
หากมากกว่า ค่าที่ต้องการให้เปลี่ยนค่า right เป็นค่ากึ่งกลาง แต่หากไม่ใช่ก็ให้เปลี่ยนค่า left แทน ทำตอนขั้นตอนนี้ไปเรื่อย ๆ จนถึงทศนิยมตามความละเอียดที่ต้องการ
วิธีที่ 3. Babylonian Method
ใช้หลักการว่า (a)(b) = n ถ้า a = b จะได้ว่า a หรือ b เป็นค่ารากที่สองของ n
โดยจะทำการสุ่มค่า a มาก่อน จะได้ว่า ค่า b = (n/a) ถ้าหากว่า a , b ยังไม่เหมือนกัน(หรือใกล้เคียงกัน) ให้เปลี่ยนค่า a เป็นกึ่งกลางระหว่าง a และ b ทำตอนขั้นตอนนี้ไปเรื่อย ๆ จนถึงทศนิยมตามความละเอียดที่ต้องการ
วิธีที่ 4. Newton-Raphson Method
วิธีนี้เป็นวิธีหนึ่งใน Numerical method โดยยังมีวิธีอื่น ๆ อีก เช่น Bisection , False Positive , Secant เป็นต้น ในที่นี้จะใช้วิธี Newton-Raphson Method ซึ่งเป็นวิธีที่มีประสิทธิภาพมาก โดยจะอาศัยการแก้สมการพหุนาม
x² = n
x²-n = 0
ซึ่งจะมีวิธีการค่ารากที่สอง ได้ดังนี้
(วิธีการพิสูจน์สูตรจะยังไม่กล่าวถึงในที่นี้)
โดย กำหนดค่า x0 แทนในผลหารระหว่างฟังก์ชั้นและอนุพันธ์ของฟังก์ชันตามสูตร จะได้ x1 เป็นค่ารากที่สอง หากยังไม่ถึงความละเอียดที่ต้องการให้เปลี่ยนค่า x0 เป็น x1 แล้วทำตอนขั้นตอนนี้ไปเรื่อย ๆ จนถึงทศนิยมตามความละเอียดที่ต้องการ
วิธีที่ 5. Taylor Series
ประยุกต์ใช้ Taylor series ซึ่งจะมีวิธีการค่ารากที่สอง ได้ดังนี้
(วิธีการพิสูจน์สูตรจะยังไม่กล่าวถึงในที่นี้)
จะเห็นว่าจะต้องมีการหาค่า factorial ของ 1/2 ซึ่งในที่นี้จะอาศัย Gamma function ในการค่าค่า factorial
Γ(n) = (n-1)! // ไม่สามารถหาค่าจำนวนเต็มลบ ได้
และค่า x ในสูตรจะต้อง x <= 1
ดังนั้นในการคำนวณจะต้องทำการปรับค่าที่ต้องการหาค่ารากที่สองก่อน หลังคำนวณเสร็จแล้วจึงค่อยปรับค่ากลับ
วิธีที่ 6. ใช้สมบัติของฟังก์ชัน Logarithm
จากสมบัติของฟังก์ชัน log สามารถนำมาหาค่ารากที่สองได้ ดังนี้
สามารถใช้เป็น log ฐานใด ๆ ก็ได้ในการคำนวณ ซึ่งในที่นี้จะใช้ log ฐาน 10
จากที่ได้กล่าวมาเป็นวิธีต่าง ๆ ในการหาค่ารากที่สอง ทั้งนี้ในภาษา Python เองก็มีวิธีการหารากที่สอง ด้วยวิธีต่าง ๆ ดังนี้
การหาค่ารากที่สอง ยังมีอีกหลายวิธีที่ยังไม่ได้กล่าวถึง ในบทความนี้เป็นการนำเสนอเพียงบางส่วนเท่านั้น