คุณทุกคนรู้วิธีการของนิวตันเพื่อประมาณค่ารากของฟังก์ชันใช่มั้ย เป้าหมายของฉันในงานนี้คือการแนะนำคุณในแง่มุมที่น่าสนใจของอัลกอริทึมนี้
อัลกอริธึมของนิวตันมาบรรจบกันสำหรับค่าที่แน่นอนเท่านั้น แต่ส่วนใหญ่ของค่าอินพุตที่ซับซ้อนทั้งหมด หากคุณเห็นการรวมกันของวิธีการสำหรับค่าอินพุตทั้งหมดบนระนาบเชิงซ้อนคุณมักจะได้เศษส่วนที่สวยงามดังนี้:
ข้อมูลจำเพาะ
เป้าหมายของภารกิจนี้คือเพื่อสร้างเศษส่วนดังกล่าว ซึ่งหมายความว่าคุณได้รับพหุนามเป็นอินพุตและต้องพิมพ์เศษส่วนที่สอดคล้องกันเป็นรูปภาพในรูปแบบที่คุณเลือกเป็นเอาต์พุต
อินพุต
อินพุตเป็นรายการของจำนวนเชิงซ้อนที่คั่นด้วยช่องว่าง พวกเขาเขียนลงในรูปแบบ<Real part><iImaginary part>
เช่นหมายเลขนี้:5.32i3.05
เช่นจำนวนนี้:คุณอาจสันนิษฐานได้ว่าหมายเลขอินพุตนั้นมีทศนิยมไม่เกิน 4 ตำแหน่งและมีขนาดเล็กกว่า 1,000 ตัวแรกคือต้องไม่เป็นศูนย์ ตัวอย่างเช่นนี่อาจเป็นอินพุตของโปรแกรมของคุณ:
1 -2i7.5 23.0004i-3.8 i12 0 5.1233i0.1
ตัวเลขถูกตีความว่าเป็นสัมประสิทธิ์ของพหุนามเริ่มต้นด้วยพลังสูงสุด ส่วนที่เหลือของข้อกำหนดนี้ตลอดพหุนามเรียกว่าP Pข้อมูลข้างต้นมีค่าเท่ากับพหุนามนี้:
f (x) = x 5 + (-2 + 7.5 i ) x 4 + (23.0004 - 3.8 i ) x 3 + 12 i x 2 + 5.1233 + 0.1 i
อินพุตอาจมาถึงคุณจาก stdin จากอาร์กิวเมนต์ที่ส่งผ่านไปยังโปรแกรมหรือจากพรอมต์ที่ปรากฏไปยังโปรแกรมของคุณ คุณอาจจะสมมติว่าอินพุตนั้นไม่มีอักขระช่องว่างนำหน้าหรือต่อท้าย
การกระทำ
คุณต้องแสดงเศษส่วนด้วยวิธีต่อไปนี้:
- เลือกสีได้มากเท่ากับรากของPบวกสีพิเศษสำหรับความแตกต่าง
- สำหรับแต่ละหมายเลขในระนาบที่มองเห็นได้ให้กำหนดว่าวิธีการรวมเข้าด้วยกันหรือไม่และถ้าใช่กับรูตใด แต้มสีตามผลลัพธ์
- อย่าพิมพ์ไม้บรรทัดหรือสิ่งแฟนซีอื่น ๆ
- พิมพ์จุดดำที่จุดนั่นคือรากของพหุนามเพื่อการวางแนว คุณสามารถพิมพ์แต่ละพิกเซลได้มากถึงสี่พิกเซล
- ค้นหาวิธีการเลือกระนาบที่มองเห็นได้ในแบบที่รากทั้งหมดนั้นสามารถแยกได้และกระจายออกไปในวงกว้างถ้าเป็นไปได้ แม้ว่าจะไม่ต้องการตำแหน่งที่สมบูรณ์ของเฟรมเอาต์พุต แต่ฉันขอสงวนสิทธิ์ในการปฏิเสธที่จะยอมรับคำตอบที่เลือกเฟรมในวิธีที่ไม่สามารถยอมรับได้เช่น ที่พิกัดเดียวกันเสมอรากทั้งหมดอยู่ในจุดเดียว ฯลฯ
- ภาพที่ส่งออกควรมีขนาด 1024 * 1024 พิกเซล
- เวลาเรนเดอร์คือ 10 นาทีสูงสุด
- การใช้ค่าทศนิยมเพียงจุดเดียวก็เพียงพอแล้ว
เอาท์พุต
ผลลัพธ์ควรเป็นภาพกราฟิกแรสเตอร์ในรูปแบบไฟล์ที่คุณเลือกซึ่งสามารถอ่านได้โดยซอฟต์แวร์มาตรฐานสำหรับระบบปฏิบัติการแบรนด์ X หากคุณต้องการใช้รูปแบบที่หายากลองพิจารณาเพิ่มลิงค์ไปยังเว็บไซต์ที่สามารถดาวน์โหลดโปรแกรมดูได้
ส่งออกไฟล์ไปยัง stdout หากภาษาของคุณไม่รองรับการวางบางอย่างลงใน stdout หรือหากคุณพบว่าตัวเลือกนี้สะดวกน้อยกว่าให้หาวิธีอื่น ไม่ว่าจะด้วยวิธีใดก็ตามจะต้องสามารถบันทึกภาพที่สร้างขึ้นได้
ข้อ จำกัด
- ไม่มีไลบรารีการประมวลผลรูปภาพ
- ไม่มีไลบรารีการสร้างเศษส่วน
- รหัสที่สั้นที่สุดชนะ
ส่วนขยาย
ถ้าคุณชอบภารกิจนี้คุณสามารถลองแต้มสีตามความเร็วของคอนเวอร์เจนซ์หรือเกณฑ์อื่น ๆ ฉันต้องการเห็นผลลัพธ์ที่น่าสนใจ