+[ BIGz ]+

การหารากที่สอง

ธันวาคม 20, 2007 · 2 ความเห็น

ได้ฟังมาจากอ.รวิทัต ก็เลยอยากมาทบทวนซักหน่อยนะครับ

โดยนิยามของมันก็ sqrt(x) = y | y*y = x

ผมจำไม่ได้ว่า ใครเป็นคนคิดขึ้นมานะครับ algorithm ก็มีดังนี้ครับ

1. ตั้งค่าทดสอบมาหนึ่งค่า เช่น 1
2. นำ x มาหารกับค่าทดสอบ
3. หาค่าเฉลี่ยของค่าที่ได้จากข้อ 2 กับ ค่าทดสอบ
4. ทำซ้ำข้อ 2 โดยนำค่าที่ได้จากข้อ 3 เป็นค่าทดสอบของครั้งต่อไป 

ค่าที่ได้เมื่อนำมายกกำลังสอง จะลู่เข้าสู่ค่า x เรื่อยๆ ซึ่ง terminal condition ของผมก็คือ เมื่อความต่างของค่าทดสอบและค่าที่ได้จากข้อ 3 ต่างกันน้อยมากๆ  

เขียนด้วย python (อีกแล้ว – -” )ก็ได้มาประมาณนี้ครับ
def sqrt(num,testVal):
x = ((float(num) / float(testVal)) + float(testVal)) / 2
if abs(testVal-x) <= 0.0000000000000001 : return x
else : return sqrt(num,x)

หมวดหมู่: Algorithm · Programming · Python

2 การตอบรับ so far ↓

ให้ความเห็น