ฉันสามารถใช้รูปแบบการเลื่อนเวลาอย่างชัดเจนเพื่อกำหนดตัวเลขว่า ODE แข็งหรือไม่


10

ฉันมี ODE:

ยู'=-1000ยู+sผมn(เสื้อ)
ยู(0)=-11000001

ฉันรู้ว่า ODE นี้แข็งทื่อวิเคราะห์ ฉันรู้ด้วยเช่นกันว่าถ้าเราใช้วิธีเลื่อนเวลา (ไปข้างหน้า) อย่างชัดเจน (ออยเลอร์, Runge-Kutta, อดัมส์ ฯลฯ ) วิธีการนี้ควรกลับข้อผิดพลาดที่มีขนาดใหญ่มากหากขั้นตอนเวลามีขนาดใหญ่เกินไป ดังนั้นฉันมีสองคำถาม:

  1. นี่เป็นวิธีที่ ODEs แข็งหรือไม่โดยทั่วไปเมื่อนิพจน์การวิเคราะห์สำหรับคำผิดพลาดไม่สามารถใช้ได้หรือหาได้

  2. โดยทั่วไปเมื่อ ODE มีความแข็งฉันจะระบุการประทับเวลา "เล็กพอ" ได้อย่างไร


มีวิธีการมาตรฐานสำหรับการตรวจสอบความแข็งโดยใช้วิธีการที่ชัดเจน ฉันกำลังวางความคิดเห็นนี้ไว้ที่นี่เพราะอาจเป็นเรื่องยากที่จะหาคำตอบโดยละเอียดของฉันด้านล่าง
David Ketcheson

คำตอบ:


6

เพื่อตอบคำถามของคุณ:

  1. เท่าที่ฉันทราบในทางปฏิบัติหากวิธีการที่ชัดเจนต้องใช้ขั้นตอนเวลาเล็ก ๆ น้อย ๆ เป็นพิเศษเมื่อเทียบกับช่วงเวลาที่คุณสนใจ (ดูคำตอบสำหรับคำถามนี้เกี่ยวกับความหมายของ ODE ที่จะแข็ง ) เพื่อให้ได้ผลลัพธ์ที่แม่นยำ เจตนาและวัตถุประสงค์ทั้งหมดปัญหาของคุณแข็งทื่อ ในการกำหนดความต้องการเกี่ยวกับขนาดขั้นตอนพึ่งพาหนึ่งในหลาย ๆ ไลบรารีที่เขียนโดยผู้เชี่ยวชาญ (ชุด MATLAB เป็นตัวอย่างหนึ่งเช่น SUNDIALS, VODE, DASPK, DASSL, LSODE และอื่น ๆ ) ซึ่งมีการปรับเวลาในการเรียนรู้แบบก้าว คู่มือ SUNDIALS อธิบายกฎการตัดสินใจที่ใช้เพื่อกำหนดขนาดของขั้นตอนเวลาที่ใช้ในแพ็คเกจเพื่อให้ตัวอย่างของกฎที่ใช้ในทางปฏิบัติ

  2. อีกครั้งฉันจะใช้ห้องสมุดที่มีเวลาปรับตัวในทางปฏิบัติเพราะมันมีประสิทธิภาพมากกว่าในการทำเช่นนั้น อย่างไรก็ตามหากคุณกำลังเขียนโค้ดด้วยตัวเองโดยใช้ขนาดขั้นตอนคงที่หากคุณสังเกตว่ามีการแกว่งใหญ่หรือวิธีแก้ปัญหาของคุณ "ระเบิด" คุณจะสงสัยว่าขั้นตอนเวลาของคุณใหญ่เกินไปและลดขนาดลง ทำซ้ำจนกว่าคุณจะได้คำตอบที่เป็นตัวเลขอย่างมีเหตุผล หนังสือเรียนเช่น Ascher และ Petzold และ Hairer and Wanner มีตัวอย่างที่ดีของปรากฏการณ์นี้


9

วิธีที่ดีกว่าในการดูคือสำหรับปัญหาที่แข็งการคำนวณที่ชัดเจนใด ๆ ที่มีเสถียรภาพนำไปสู่ข้อผิดพลาดที่มีขนาดเล็กกว่าการยอมรับข้อผิดพลาดที่จำเป็นมาก

มีวิธีการที่ดีมากมายสำหรับการตรวจจับความแข็งโดยอัตโนมัติโดยใช้รูปแบบที่ชัดเจนโดยเฉพาะคู่ Runge-Kutta ที่ฝังอยู่ ดูตัวอย่าง:

ในตัวอย่างที่สองของ faleichik เมื่อขนาดขั้นตอนลดลงเราจะเห็นข้อผิดพลาดลดลงอย่างมากในระดับที่ต่ำกว่าระดับความอดทนที่ต้องการโดยทั่วไปเมื่อข้ามขีด จำกัด การประทับเวลาที่มั่นคง ดังนั้นตัวประมาณความผิดพลาดที่ดีจะเผยให้เห็นความแข็งของปัญหา ในปัญหาแรกข้อผิดพลาดที่ได้รับด้วยขนาดก้าวที่เสถียรจะอยู่ในช่วงของความคลาดเคลื่อนที่ต้องการโดยทั่วไปซึ่งบ่งบอกว่าไม่ใช่ความฝืด

โปรดทราบว่าปัญหาใด ๆ จะไม่แข็งถ้าต้องการความคลาดเคลื่อนที่เข้มงวดเพียงพอ


2
นั่นคือเอกสารที่ฉันกำลังจะเชื่อมโยงไปก่อนที่จะเห็นคำตอบของคุณ +1 แน่นอน :) ให้ฉันยังเพิ่มนี้ , นี้และสุดท้ายนี้ นี่เป็นปัญหาที่ได้รับการศึกษาเป็นอย่างดี ...
JM

9

1. เราสามารถตรวจจับความแข็งแบบตัวเลขโดยใช้วิธีการที่ชัดเจนได้หรือไม่?

  • สมมติว่าคุณมีปัญหาค่าเริ่มต้นสำหรับ ODE บางอย่างเกี่ยวกับ[0,10]คุณใช้ stepizeและเมธอดออยเลอร์อย่างชัดเจนมากทำการคำนวณด้วยขนาด step คงที่และรับคะแนนเหล่านี้:τ = 1 τ[0,10]τ=1 τ

    ป้อนคำอธิบายรูปภาพที่นี่

    τ=0.1ป้อนคำอธิบายรูปภาพที่นี่

    τ=0.1[0,10]

    ดังนั้นปัญหาแข็งทื่อหรือไม่ คำตอบคือไม่ ! ขนาดเล็ก stepsize ที่นี่จะต้องถูกต้องในการทำซ้ำแนบแน่นของการแก้ปัญหา

    Y'(เสื้อ)=-2cosπเสื้อ,Y(0)=1

  • τ=1

    ป้อนคำอธิบายรูปภาพที่นี่

    τ=0.1

    ป้อนคำอธิบายรูปภาพที่นี่

    τ=0.1[0,10]

    ปัญหานี้แข็งหรือไม่ ใช่ ! เราได้ทำขั้นตอนเล็ก ๆ น้อยมากในการทำซ้ำโซลูชันซึ่งกำลังเปลี่ยนแปลงช้ามาก นี่คือไม่มีเหตุผล! ขนาดของขั้นตอนเวลาที่นี่จะถูก จำกัด ด้วยคุณสมบัติความมั่นคงของออยเลอร์อย่างชัดเจน

    ปัญหานี้คือ

    Y'(เสื้อ)=-2Y(เสื้อ)+บาปเสื้อ/2,Y(0)=1


สรุป: ข้อมูลเกี่ยวกับการประทับเวลาและข้อผิดพลาดที่เกี่ยวข้องนั้นไม่เพียงพอในการตรวจสอบความแข็ง คุณควรดูวิธีแก้ปัญหาที่ได้รับด้วย หากมันแตกต่างกันอย่างช้าๆและสเต็ปปิ้งก็เล็กมากปัญหาก็น่าจะแข็ง หากวิธีการแก้ปัญหาสั่นอย่างรวดเร็วและคุณเชื่อมั่นในเทคนิคการประเมินข้อผิดพลาดของคุณปัญหานี้จะไม่แข็งทื่อ


2. วิธีการกำหนดขั้นตอนสูงสุดที่อนุญาตให้รวมปัญหาความแข็งกับวิธีการที่ชัดเจน?

หากคุณใช้ตัวแก้กล่องดำอย่างชัดเจนพร้อมการควบคุมขั้นตอนอัตโนมัติคุณไม่จำเป็นต้องทำอะไรอีก: ซอฟต์แวร์จะดำเนินการตามขั้นตอนที่จำเป็น

[Λ,0]Λ=-1000

[-2,0]τΛτ

τ2|Λ|.

τ1|Λ|,
1/|Λ|<τ2/|Λ|

แน่นอนการวิเคราะห์ดังกล่าวส่วนใหญ่จะใช้สำหรับปัญหาเชิงเส้นที่มีสเปกตรัมที่รู้จัก สำหรับปัญหาที่เกิดขึ้นจริงเราควรใช้วิธีการเชิงตัวเลขของการตรวจจับความแข็ง (ดูการอ้างอิงและความคิดเห็นในคำตอบอื่น ๆ )


ดังที่ได้กล่าวไว้ในเอกสารบางส่วนที่เดวิดเชื่อมโยงกับวิธีพลังงานในการค้นหาค่าลักษณะเฉพาะ (แก้ไขอย่างเหมาะสม) เป็นทางเลือกปกติสำหรับเครื่องตรวจจับความแข็งแบบจาโคเบียน
JM
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.