การประเมินอย่างรวดเร็ว (โดยประมาณ) ของพหุนาม Chebyshev


9

มีวิธีที่ต้องการวิธีการใช้การประเมินอย่างรวดเร็ว (โดยประมาณ) ของการแก้ไขพหุนาม Chebyshev บนกริดสม่ำเสมอ (ให้ค่าฟังก์ชั่นที่โหนด Chebyshev)? ปัญหาของฉันคือการแก้ไขจะช้าเมื่อระดับของการแก้ไขพหุนามเพิ่มขึ้น

ความคิดต่อไปนี้อยู่ในใจของฉัน:

  • พยายามปรับใช้เทคนิค FFT ที่ไม่สม่ำเสมอ (NFFT)
  • ใช้ FFT เพื่อคำนวณหาอนุพันธ์ที่โหนด Chebyshev ซึ่งอาจเกิดขึ้นหลังจากไปที่กริดที่ดีกว่า (Chebyshev) เป็นครั้งแรก จากนั้นใช้การประมาณค่าคิวแบบชิ้นต่อชิ้นสำหรับการประเมิน (โดยประมาณ)
  • ใช้สูตรบางอย่างที่ใช้เฉพาะค่าฟังก์ชัน (และอนุพันธ์ที่อาจเกิดขึ้น) ที่โหนด "ใกล้เคียง" Chebyshev (ซึ่งเกี่ยวข้องกับเทคนิค NFFT เฉพาะ)

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

คำตอบ:


11

คุณคิดว่าจะใช้การแก้ไข Barycentricหรือไม่? คำอธิบายรายละเอียดเกี่ยวกับวิธีการที่จะทำมันได้อย่างมีประสิทธิภาพสำหรับโหนดเซฟจะได้รับในมาตรา 5 แห่งนี้กระดาษ

นี่คือการประเมินที่แน่นอนของหน่วยสอดแทรก Chebyshev หากคุณกำลังประเมินพหุนามดีกรีn ที่ ม. โหนดราคาอยู่ใน O(nม.).

ปรับปรุง

อีกทางเลือกหนึ่งถ้าคุณมีค่าสัมประสิทธิ์ของพหุนาม Chebyshev interpolatory ของคุณคือการใช้อัลกอริทึม Clenshaw หากคุณมีค่าฟังก์ชันที่โหนด Chebyshev เท่านั้น แต่ต้องประเมินพหุนามหลายครั้งคุณสามารถคำนวณค่าสัมประสิทธิ์ด้วย FFT

อัลกอริทึม Clenshaw ค่อนข้างเร็วกว่าการประมาณค่าแบริเซนทริกเนื่องจากมันต้องการเพียงการเพิ่มเติมและการคูณและมันก็เวกเตอร์ค่อนข้างดี


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

@ThomasKlimpel: คุณคำนวณน้ำหนักอย่างไร หากคุณกำลังใช้โหนด Chebyshev[-1,1]พวกเขาเป็นเพียงแค่ ±1, หรือ ±1/2ที่ขอบ ถ้าความเร็วเป็นสิ่งสำคัญจริงๆฉันได้เพิ่มอัลกอริธึม Clenshaw ให้กับคำตอบของฉัน จากประสบการณ์ของฉันมันเร็วกว่าการคอมไพล์โค้ดประมาณสี่เท่า
เปโดร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.