งานของคุณคือการคำนวณสแควร์รูทของ 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] = 1x[1] = x[0] - f(x[0])/f'(x[0]) = 1 - (1 ^ 2 - 2) / (2 * 1) = 1.5x[2] = x[1] - f(x[1])/f'(x[1]) = 1.5 - (1.5 ^ 2 - 2) / (2 * 1.5) = 1.416666667x[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)ไหม?