ฉันกำลังจะเริ่มต้นทำงานกับห้องสมุดซอฟต์แวร์ของตัวแก้ ODE ที่เป็นตัวเลขและฉันกำลังดิ้นรนกับวิธีการสร้างแบบทดสอบสำหรับการใช้งานตัวแก้ปัญหา ความใฝ่ฝันของฉันอยู่ที่ห้องสมุดในที่สุดจะรวมถึงการแก้สำหรับทั้งปัญหา nonstiff และแข็งและอย่างน้อยหนึ่งแก้นัย (มากหรือน้อยในหุ้นที่มีความสามารถของกิจวัตรใน Matlab ) เพื่อตอบสนองความต้องการวิธีการทดสอบเพื่อสะท้อนให้เห็นถึงต่างๆ ประเภทของปัญหาและเกณฑ์สำหรับนักแก้ปัญหาต่าง ๆode
ปัญหาของฉันตอนนี้คือฉันไม่รู้ว่าจะเริ่มต้นด้วยการทดสอบนี้ได้ที่ไหน ฉันสามารถคิดถึงวิธีที่แตกต่างกันสองสามวิธีในการทดสอบผลลัพธ์ของอัลกอริทึม:
ทดสอบปัญหาที่มีโซลูชันวิเคราะห์และตรวจสอบว่าโซลูชันตัวเลขอยู่ในระดับที่ยอมรับได้สำหรับจุดข้อมูลที่ส่งคืนทั้งหมด สิ่งนี้ต้องการความรู้เกี่ยวกับปัญหาการวิเคราะห์จำนวนหนึ่งซึ่งแสดงคุณสมบัติทั้งหมดที่ฉันต้องการให้นักแก้ปัญหาต่าง ๆ ทำงานด้วย (ความแข็ง, ปัญหาโดยปริยาย ฯลฯ ) ซึ่งฉันไม่มีอย่างน้อยก็ไม่ได้อยู่ด้านบนสุดของหัวของฉัน
วิธีนี้ทดสอบผลลัพธ์ของวิธีการแก้ปัญหา ดังนั้นจึงไม่มีการรับประกันว่าตัวแก้ปัญหาใช้งานได้จริงเพียง แต่ใช้ได้กับปัญหาการทดสอบที่ระบุ ดังนั้นฉันสงสัยว่าต้องมีปัญหาการทดสอบจำนวนมากเพื่อตรวจสอบอย่างมั่นใจว่าตัวแก้ปัญหาทำงานได้หรือไม่
คำนวณวิธีแก้ปัญหาด้วยตนเองสำหรับขั้นตอนสองสามขั้นตอนโดยใช้อัลกอริทึมที่ฉันตั้งใจจะนำไปใช้แล้วทำเช่นเดียวกันกับตัวแก้ปัญหาและตรวจสอบว่าผลลัพธ์เหมือนกัน สิ่งนี้ไม่ต้องการความรู้ในการแก้ปัญหาอย่างแท้จริงแต่ในทางกลับกันก็ต้องใช้งานจริงมาก
ในทางกลับกันวิธีนี้ใช้ทดสอบอัลกอริธึมซึ่งใช้ได้กับฉัน - ถ้ามีคนอื่นพิสูจน์ว่าลำดับที่ 4 ที่Runge-Kutta ทำงานได้ฉันก็ไม่รู้สึกว่าจำเป็นต้องสิ้นหวัง อย่างไรก็ตามฉันกังวลว่ามันจะยุ่งยากมากในการสร้างกรณีทดสอบเนื่องจากฉันไม่รู้วิธีการที่ดีในการสร้างข้อมูลทดสอบ (ยกเว้นอาจใช้มือซึ่งจะทำงานมาก ... )
ทั้งวิธีการข้างต้นมีข้อ จำกัด ร้ายแรงสำหรับฉันที่มีความรู้ในปัจจุบันของฉัน - ฉันไม่ทราบปัญหาการทดสอบที่ดีสำหรับชุดแรกและฉันไม่รู้วิธีการสร้างข้อมูลการทดสอบที่ดีสำหรับครั้งที่สอง
มีวิธีอื่นในการตรวจสอบตัวแก้ ODE ที่เป็นตัวเลขหรือไม่ มีเกณฑ์อื่น ๆ เกี่ยวกับการใช้งานที่ควรได้รับการตรวจสอบหรือไม่? จะมีผู้ใดที่ดี (ฟรี) แหล่งข้อมูลเกี่ยวกับการทดสอบการแก้ ODE ออกมี1 ?
แก้ไข:
เนื่องจากคำถามนี้กว้างมากฉันต้องการชี้แจงเล็กน้อย ชุดทดสอบที่ฉันต้องการสร้างจะมีวัตถุประสงค์หลักสองข้อ:
การตรวจสอบว่านักแก้ปัญหาทำงานได้ตามที่คาดไว้สำหรับปัญหาที่พวกเขาตั้งใจจะแก้ไข กล่าวอีกนัยหนึ่งนักแก้ปัญหาที่ไม่แข็งได้รับอนุญาตให้ไปหากล้วยในปัญหาแข็งทื่อ แต่ควรทำงานได้ดีกับปัญหาที่ไม่แข็งทื่อ นอกจากนี้หากมีนักแก้ปัญหาอื่น ๆ ในห้องสมุดที่ให้ความแม่นยำสูงกว่าคุณอาจไม่จำเป็นต้องบังคับใช้ผลลัพธ์ที่แม่นยำมาก - เพียงแค่ "แม่นยำเพียงพอ" ดังนั้นส่วนหนึ่งของคำถามของฉันคือสิ่งที่การทดสอบควรใช้สำหรับนักแก้ปัญหาอะไร หรืออย่างน้อยที่สุดควรมีเหตุผลในการตัดสินใจอย่างไร
ทดสอบสติเมื่อติดตั้งห้องสมุด การทดสอบเหล่านี้ไม่จำเป็น (ไม่ควร) ประณีตหรือใช้เวลานาน เพียงพื้นฐานมากที่สามารถทำงานได้ภายใน 5 วินาที แต่ที่จะแจ้งเตือนผู้ใช้หากมีอะไรแปลกนอกชาร์ต ดังนั้นฉันยังต้องการวิธีการสร้างการทดสอบที่ง่ายมาก แต่ก็ยังบอกบางสิ่งเกี่ยวกับสถานะของห้องสมุด
1ใช่ฉัน Googling ออกไปแล้ว แต่สิ่งที่ฉันพบส่วนใหญ่คือบันทึกการบรรยายพร้อมตัวอย่างที่น่าสนใจมากยกเว้นข้อสังเกตที่น่าทึ่งของชุดการทดสอบ CWI ODE จากบารีซึ่งฉันไม่รู้ว่าเป็นอย่างไรหรืออย่างไรฉัน สามารถใช้เพื่อจุดประสงค์ของฉันเนื่องจากเป็นนักแก้ปัญหาที่ซับซ้อนกว่าที่ฉันต้องการทดสอบ ...