วิธีที่ดีที่สุดในการค้นหาความไม่ต่อเนื่องของฟังก์ชั่นกล่องดำคืออะไร?


20

มันก็บอกว่านี่อาจจะเป็นสถานที่ที่ดีสำหรับคำถามนี้กว่าคณิตศาสตร์ Stack แลกเปลี่ยนที่ผมถามมันก่อน

สมมติว่าหนึ่งมีฟังก์ชั่นกล่องดำซึ่งสามารถประเมินได้ทุกที่ (ราคาถูก) ในช่วงเวลาที่ระบุและไม่มีเสียงรบกวน (ยกเว้น granularity จุดลอยตัวพูด) อะไรจะเป็นวิธีที่ดีที่สุดในการค้นหาความไม่ต่อเนื่องของฟังก์ชั่นนี้? ฉันไม่ทราบว่าอาจมีความไม่ต่อเนื่องจำนวนเท่าใดและอาจไม่มีเลย[a,b]

ฉันสามารถคิดถึงวิธีการที่ตรงไปตรงมา (การสุ่มตัวอย่างแบบสม่ำเสมอปรับแต่งที่มีความแตกต่างอย่างมากระหว่างตัวอย่าง, ... ) แต่บางทีอาจมีวิธีที่ดีกว่า

ฟังก์ชั่นคือ "สมเหตุสมผล" ในสิ่งนั้นสามารถสันนิษฐานได้ว่ามันมีความไม่ต่อเนื่องจำนวนมากที่สุดเช่นเดียวกันสำหรับอนุพันธ์ที่สูงกว่าฉันไม่คิดว่าจะพลาดทางพยาธิวิทยาเล็ก ๆ น้อย ๆ หรือไม่ ... .

-

ขอบคุณทุกคนที่ตอบกลับโดยเฉพาะเปโดร; วิธีที่อธิบายไว้ในPachón, Platte และ Trefethen น่าจะเป็นวิธีที่ดีที่สุดสำหรับฉันดังนั้นตอนนี้ฉันจะไปปรับใช้


ฉันต้องสงสัยว่าวิธีการใด ๆ ที่เสนอสามารถจัดการ
1x-1x
JM

@JM: ฉันจะเพิ่มพล็อตของฟังก์ชั่นนี้เมื่อฉันเสร็จสิ้นการใช้งาน
n00b

@ n00b: คุณอาจพบว่าแนวคิดนี้มีประโยชน์ : mathoverflow.net/q/165038/14414
Rajesh Dachiraju

คำตอบ:


18

หากคุณกำลังใช้ Matlab คุณอาจจะสนใจในโครงการ Chebfun Chebfun รับฟังก์ชั่นตัวอย่างมันและพยายามที่จะเป็นตัวแทนของหน่วยพหุนาม หากฟังก์ชั่นของคุณไม่ต่อเนื่อง Chebfun ควรจะสามารถตรวจจับพวกมันได้ด้วยsplitting onคำสั่ง คุณสามารถค้นหาตัวอย่างบางส่วนที่นี่

หากคุณสนใจอัลกอริทึมพื้นฐานการอ้างอิงที่ดีคือPachón, Platte และ Trefethen's Paper " Piecewise Smooth Chebfuns "


ขอบคุณ Pedro ฉันคุ้นเคยกับ Chebfun ซึ่งเยี่ยมยอด แต่มีขนาดใหญ่มาก (และมาพร้อมกับค่าใช้จ่ายโดยนัยอย่างมากผ่านใบอนุญาต Matlab) ดังนั้นฉันกำลังมองหาอัลกอริทึมแน่นขนาดเล็กสำหรับปัญหานี้ซึ่งฉันจะใช้ตัวเอง
n00b

@ n00b: จุดดี ฉันได้เพิ่มการอ้างอิงไปยังกระดาษที่อธิบายถึงอัลกอริทึมพื้นฐานเช่นสำหรับการตรวจจับขอบ
Pedro

อ่าเยี่ยมมาก! ฉันไม่เคยเห็นบทความนี้และตรงกันข้ามกับความคาดหวังของฉันดูเหมือนว่าเครื่องมือค้นหาความไม่ต่อเนื่องของ Chebfun ไม่ได้ใช้ Chebfun จริง ๆ - ดังนั้นนี่จึงดูเหมือนว่าจะใช้งานได้อย่างเด่นชัด ผมจะอ่านมันอย่างระมัดระวังและตรวจสอบรหัสที่สอดคล้องกัน ....
n00b

11

ฉันสงสัยว่าอัลกอริทึม chebfun จะต้องปรากฏขึ้นจริง แต่มันเป็นสิ่งจำเป็นที่จะพูดถึงอีกวิธีหนึ่งในการตรวจสอบความไม่ต่อเนื่องนั่นคือการแปลงเวฟเล็ตโดยสิ้นเชิง คุณสามารถรับทราบวิธีการทำงานโดยดูที่หน้าเอกสารคู่มือMathematica นี้ดูหัวข้อ> แอปพลิเคชั่น> การตรวจสอบความไม่ต่อเนื่องและขอบ


8

วิธีการถ่วงน้ำหนักที่ไม่ใช่การแกว่ง (WENO) ใช้วิธี "ตัวบ่งชี้ความเรียบ" เพื่อตรวจสอบความไม่ต่อเนื่องในปริมาณ จำกัด และวิธีการต่าง จากคำอธิบายของ Chebfun ที่ Pedro ให้ดูเหมือนว่าความคิดทั่วไปเหมือนกัน: สร้างกลุ่มของพหุนามแบบสอดแทรกและใช้เพื่อคำนวณความเรียบเนียน

ดู GS Jiang และ CW Shu การนำไปปฏิบัติอย่างมีประสิทธิภาพของโครงร่าง ENO ที่มีน้ำหนัก J.Comput.Phys., vol. 126, pp. 202--228, 1996


5

พร้อมด้วย @Pedro ฉันจะดูอัลกอริธึมการตรวจจับขอบ ความไม่ต่อเนื่องเป็นอินฟินิตี้ของอนุพันธ์ดังนั้นให้พิจารณาดูตาข่ายที่ละเอียดมากขึ้นและกำหนดเป้าหมายภูมิภาคที่น่าสนใจ

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

(x)=sผมก.n(x)|x|x=0ชั่วโมงx0


1
ความละเอียดอ่อนอย่างหนึ่งของปัญหาคือแม้ว่าความไม่ต่อเนื่องสามารถมองเห็นได้ว่ามีอินฟินิตี้ในอนุพันธ์ แต่สิ่งที่ตรงกันข้ามก็ไม่เป็นความจริง - ฟังก์ชันสัญญาณ (x) * sqrt (| x |) นั้นสมบูรณ์แบบที่ x = 0 แต่อนุพันธ์ไม่มีที่สิ้นสุด
n00b

ฉันไม่เห็นด้วยกับความคิดเห็นที่ว่า "ฟังก์ชั่นใด ๆ อย่างต่อเนื่องควรราบรื่นในระดับที่เล็กพอ" ความราบรื่นนั้นเกี่ยวข้องกับอนุพันธ์ต่อเนื่อง ความต่อเนื่องของฟังก์ชั่นดั้งเดิมเป็นเงื่อนไขที่จำเป็น แต่ไม่เพียงพอ
Geoff Oxberry

1
@GeoffOxberry: ลบข้อความนั้น มันเป็นผลลัพธ์ที่สมเหตุสมผลใน FD แต่ไม่ได้ทำการวิเคราะห์
Phil H
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.