การใช้โอเพ่นซอร์สของการประมาณด้วยเหตุผลกับฟังก์ชั่น


15

ฉันกำลังมองหาการใช้งานโอเพนซอร์ซบางส่วน (Python, C, C ++, Fortran นั้นใช้ได้) จากการประมาณด้วยเหตุผลถึงฟังก์ชั่น มีบางอย่างในบทความ [1] ฉันให้มันฟังก์ชั่นและมันให้สองชื่อพหุนามซึ่งมีอัตราส่วนคือการประมาณในช่วงเวลาที่กำหนดและข้อผิดพลาดกำลังสั่นด้วยแอมพลิจูดเดียวกันและเป็นการประมาณที่เหมาะสมที่สุดหรือใกล้เคียงกับมัน

นี่คือสิ่งที่ฉันพบ:

  • ดูเหมือนว่า chebfun สามารถทำได้ แต่ฉันไม่สามารถเข้าถึง Matlab *

  • มีโปรแกรมอย่างง่ายในส่วนที่ 5-13 "Rational Chebyshev Approxation" ในสูตรเชิงตัวเลข (NR)

  • Mathematica มีการประหยัดเชิงเหตุผลการประมาณค่าแบบย่อและ MiniMaxApproximation

ฉันสงสัยว่ามีบางสิ่งที่ใหม่กว่า (ทดสอบได้ดีกว่า) กว่ารหัส NR หรือไม่

แอปพลิเคชันของฉันคือฉันมีชุดของฟังก์ชั่นพิเศษประมาณ 10 ซึ่งได้รับทั้งชุดไฮเพอร์เมตริกซ์หรือสูตรบางอย่างที่มีการยกเลิกตัวเลขและฉันต้องการมีฟังก์ชั่นการประเมินที่รวดเร็วและแม่นยำที่ถูกเรียกใช้ วงในสุดของการคำนวณองค์ประกอบเมทริกซ์ของอนุภาคสองตัวในการคำนวณ Hartree Fock ฉันวางตัวอย่างง่ายๆของฟังก์ชั่นที่เหมาะกับฉันที่ [2] อย่างที่คุณเห็นมันอาจใช้สูตรโดยตรงหรืออนุกรมรอบ ๆ x = 0 ที่ฉันคำนวณโดยใช้ SymPy มันเรียงลำดับของงาน แต่ความแม่นยำไม่ดีประมาณ x = 1 ประมาณครึ่งหนึ่งของตัวเลขที่สำคัญหายไป (แต่สำหรับ x = 0.1 และ x = 1e5 นั้นถูกต้องกับตัวเลขที่สำคัญเกือบทั้งหมด) ฉันกำลังมองหาการประมาณที่ดีกว่า

[1] Deun, J. และ Trefethen, LN (2011) การใช้งานที่มีประสิทธิภาพของวิธีการCarathéodory-Fejérสำหรับการประมาณด้วยเหตุผล BIT คณิตศาสตร์เชิงตัวเลข, 51 (4), 1039–1050 ดอย: 10.1007 / s10543-011-0331-7 ( มิถุนายน 2010 e-print )

[2] https://gist.github.com/3831580

(*) หรือไปที่เว็บไซต์ chebfun ซึ่งให้ฉัน 404 แต่เปโดรแนะนำว่าต้องเป็นปัญหาของผู้ให้บริการของฉัน

คำตอบ:


4

อาจเป็นเพราะความช่วยเหลือใด ๆ http://www.alglib.net/interpolation/rational.php


1
ขอบคุณฉันคิดว่าสิ่งนี้จะทำ ฉันต้องเรียนรู้ที่จะใช้มัน ในขณะนี้ฉันอยู่ภายใต้การกดเวลาดังนั้นฉันจึงใช้ MiniMaxApproximation จาก Mathematica เพื่อทำงานให้เสร็จ แต่ฉันต้องการเรียนรู้การทำสิ่งนี้โดยใช้เครื่องมือ opensource
OndřejČertík

10

การประมาณด้วยเหตุผลที่ดีที่สุดเพียงครั้งเดียวสามารถทำได้โดยการทำซ้ำ "แบบแมนนวล" ของอัลกอริธึม Remez : แก้ไขการประมาณด้วยเหตุผล (สัมพัทธ์หรือสัมบูรณ์) สลับสัญญาณผิดพลาดที่การคาดเดาเบื้องต้นสำหรับการแก้ไขจุด ข้อผิดพลาดที่เกิดขึ้นจริงมีค่าเกินกว่าจุดการแก้ไขและจุดหมุน (การสลับจุดเดาอย่างน้อยหนึ่งจุดสำหรับจุดเหล่านี้ในลักษณะที่รักษาข้อผิดพลาดสัญญาณสลับ) เป็นวิธีที่ดีที่จะเข้าใจทฤษฎีตั้งแต่ต้น เมื่อความถูกต้องที่ต้องการนั้นเรียบง่ายฉันพบว่าการใช้งานสเปรดชีตช่วยให้ฉันรู้สึกถึงวิธีการคำนวณและปรับแก้ปัญหาผ่านการตัดและวาง

Y=1/x1x2ป้อนคำอธิบายรูปภาพที่นี่

หากเราลดระยะทางตรงลงครึ่งหนึ่งที่จุด "ความผิดพลาดสูงสุด" เราจะมีจุดผิดพลาดสัมบูรณ์ "equi-oscillatory" สามจุดนับเป็นจุดสิ้นสุดสองจุดและจุดวิกฤติในการตกแต่งภายใน ดังนั้นการประมาณค่าพหุนามเชิงเส้นที่ดีที่สุดกับฟังก์ชั่นนูนเรียบสามารถพบได้เกือบโดยการตรวจสอบ

ซอฟต์แวร์ Chebfunตัวเองเป็นโอเพนซอร์ส ( ใบอนุญาต BSD สไตล์ ) ตั้งแต่ v4.0 ไม่แน่ใจว่าทำไมลิงก์ไปยังไซต์ของพวกเขาอาจได้รับข้อผิดพลาด 404 กลับมาในเวลานั้น แต่ตอนนี้พวกเขาอยู่ที่ v5.2.1 (พวกเขายังมีพื้นที่เก็บข้อมูล GitHub ) โครงการ Chebfun มีจุดมุ่งหมายมากกว่าการประมาณตามหลักเหตุผลที่ดีที่สุดโดยแนวคิดหลักเป็นไวยากรณ์ของเวกเตอร์ Matlab สำหรับฟังก์ชัน (univariate real) ของ Matlab

ในการทำให้วงให้สมบูรณ์จะต้องทำให้มันทำงานภายใต้ระดับแปดเสียงมากกว่า Matlab มีหัวข้อการบำรุงรักษาระดับแปดเสียงเกี่ยวกับเรื่องนี้เริ่มต้นขึ้นในปี 2010 บทความในปี2555 โดยผู้ดูแล / ผู้เขียน Chebfunชี้ให้เห็นว่ามีความพยายามบางอย่างในการทำงานร่วมกันของ Octave จากด้านข้างของพวกเขา

การดูหน้าโครงการที่เกี่ยวข้องกับ Chebfunแนะนำว่าเนื่องจากซอฟต์แวร์ Chebfun เป็นโอเพ่นซอร์สอาจเป็นไปได้ที่จะทำพอร์ตนี้หรือใช้แพ็คเกจโอเพนซอร์ซที่มีอยู่ในรายการเช่น Olivier Verdier's pychebfun, Python Chebyshev Function โครงการที่โฮสต์ที่ GitHub


1
ลิงค์นี้ที่เว็บไซต์ Chebfun มีเอกสารวิธีการใช้เหตุผลอย่างสมเหตุสมผล: chebfun.org/docs/guide/guide04.html
OndřejČertík
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.