งานของคุณคือการคำนวณสแควร์รูทของ 2 โดยใช้วิธีของนิวตัน - ด้วยการบิดเล็กน้อย โปรแกรมของคุณคือการคำนวณการวนซ้ำโดยใช้วิธีของนิวตันและเอาท์พุทซอร์สโค้ดสำหรับการทำซ้ำต่อไปนี้ (ซึ่งจะต้องทำเช่นเดียวกัน)
วิธีการของนิวตันได้รับการอธิบายอย่างละเอียดถี่ถ้วนในWikipedia
ในการคำนวณสแควร์รูท 2 โดยใช้วิธีของนิวตันคุณ:
- กำหนด
f(x) = x^2 - 2
- กำหนด
f'(x) = 2x
- กำหนด
x[0]
(การเดาเริ่มต้น)= 1
- กำหนด
x[n+1] = x[n] - (f[n] / f'[n])
การวนซ้ำแต่ละครั้งจะย้าย x [n] ใกล้กับสแควร์รูทของสอง ดังนั้น -
x[0] = 1
x[1] = x[0] - f(x[0])/f'(x[0]) = 1 - (1 ^ 2 - 2) / (2 * 1) = 1.5
x[2] = x[1] - f(x[1])/f'(x[1]) = 1.5 - (1.5 ^ 2 - 2) / (2 * 1.5) = 1.416666667
x[3] = x[2] - f(x[2])/f'(x[1]) = 1.416666667 - (1.416666667 ^ 2 - 2) / (2 * 1.416666667) = 1.414215686
- และอื่น ๆ
โปรแกรมของคุณจะ:
- คำนวณ
x[n]
โดยที่n
จำนวนครั้งที่โปรแกรมถูกเรียกใช้ - เอาท์พุทซอร์สโค้ดไปยังโปรแกรมที่ถูกต้องในภาษาเดียวกันซึ่งจะต้องคำนวณ
x[n+1]
และตอบสนองเกณฑ์เดียวกันของคำถามนี้ - บรรทัดแรกของซอร์สโค้ดจะต้องเป็นผลการคำนวณแสดงความคิดเห็นอย่างถูกต้อง หากแหล่งข้อมูลต้องการบางสิ่งบางอย่าง (เช่น Shebang) ในบรรทัดแรกผลลัพธ์อาจถูกวางในบรรทัดที่สอง
สังเกตได้ว่า
- โปรแกรมของคุณต้องใช้การคาดเดาเริ่มต้น
x[0] = 1
- ช่องโหว่มาตรฐานใช้
- ฟังก์ชันกำลังในการสร้าง, สแควร์รูทหรือ xroot ใด ๆ ถูกห้าม
- โปรแกรมของคุณจะต้องไม่รับอินพุตใด ๆ มันจะต้องมีทั้งหมดในตัวเอง
คะแนนของคุณคือขนาดของโปรแกรมเริ่มต้นของคุณใน UTF-8 ไบต์ คะแนนต่ำสุดชนะ
x = x-(x*x-2)/(2*x)
ไหม?