Bir fonksiyona rasyonel yaklaşımın açık kaynak uygulaması


15

Bir işleve rasyonel yaklaşım bazı açık kaynak uygulaması (Python, C, C ++, Fortran iyidir) arıyorum. Makale boyunca bir şey [1]. Ona bir işlev veriyorum ve oranı verilen aralıktaki yaklaşıklık ve hata aynı genlikle salınan ve optimal bir yaklaşım veya ona yakın olan iki polinomu geri veriyor.

İşte bulduğum şey:

  • Chebfun bunu yapabilir gibi görünüyor, ama Matlab * 'a erişimim yok.

  • Sayısal Tarifler (NR) bölümünde 5-13 "Rasyonel Chebyshev Yaklaşımı" bölümünde basit bir program vardır.

  • Mathematica TasarlandıRationalApproximation ve MiniMaxApproximation

NR kodu daha yeni (muhtemelen daha iyi test edilmiş) bir şey olup olmadığını merak ediyordum.

Uygulamam, hipergeometrik seri veya sayısal iptalleri olan bir formül olarak verilen yaklaşık 10 özel fonksiyonumun olması ve çağrılan sağlam, hızlı ve doğru bir değerlendirme fonksiyonuna sahip olmak istiyorum. Hartree Fock hesaplamalarında iki parçacık matris elemanını hesaplamanın en iç döngüsü. Benim için işe yarayan fonksiyona basit bir örnek verdim [2]. Gördüğünüz gibi, SymPy kullanarak hesapladığım ya doğrudan formül ya da x = 0 civarında bir seri kullanıyor. Bu biraz işe yarıyor, ancak doğruluk harika değil, x = 1 önemli basamakların yaklaşık yarısı kayboluyor (ancak x = 0.1 ve x = 1e5 için neredeyse tüm önemli basamaklar için doğrudur). Daha iyi bir yaklaşım arıyorum.

[1] Deun, J. ve Trefethen, LN (2011). Rasyonel yaklaşım için Carathéodory-Fejér yönteminin sağlam bir uygulaması. BIT Sayısal Matematik, 51 (4), 1039-1050. doi: 10.1007 / s10543-011-0331-7 ( Haziran 2010 e-baskı )

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

(*) Bana 404 veren chebfun web sitesinde değil, ama Pedro bunun sağlayıcı sorunum olması gerektiğini önerdi.

Yanıtlar:


4

Bunun herhangi bir yardımı olabilir mi? http://www.alglib.net/interpolation/rational.php


1
Teşekkürler, bunun olacağını düşünüyorum. Bunu kullanmayı öğrenmem gerekiyor. Şu anda zaman baskısı altındayım, bu yüzden işi yapmak için Mathematica'dan MiniMaxApproximation kullandım, ancak bunu açık kaynak araçlarını kullanarak yapmayı öğrenmek istiyorum.
Ondřej Čertík

10

Bir kerelik en iyi rasyonel yaklaşımlar yapmak genellikle Remez algoritmasının "manuel" yinelemeleriyle gerçekleştirilebilir : enterpolasyon noktaları için ilk tahminde (göreceli veya mutlak) alternatif işaret hatalarıyla rasyonel bir yaklaşımı enterpolasyon edin, burada bir (veya daha fazla) nokta bulun asıl hata, enterpolasyon noktalarının ve pivotun (aşılama noktaları hatalarını koruyacak şekilde tahmin edilen noktalardan bir veya daha fazlasını değiştirmek) aşar. Teoriyi en baştan anlamanın iyi bir yolu. Gerekli doğruluk mütevazı olduğunda, bir elektronik tablo uygulaması hesaplamalarda yolumu hissetmeme ve sorunları kes ve yapıştır yoluyla uyarlamama yardımcı oluyor.

y=1/x1x2resim açıklamasını buraya girin

Düz çizgiyi "maksimum hata" noktasındaki mesafenin yarısına indirirsek, iki uç noktayı ve iç kısımdaki bu kritik noktayı sayan üç "eksi salınımlı" mutlak hata noktasına sahip oluruz. Böylece, düzgün bir dışbükey fonksiyona en iyi doğrusal polinom yaklaşımı neredeyse muayene yoluyla bulunabilir.

Chebfun yazılım kendisi açık kaynak (olan BSD tarzı lisans v4.0 beri). Kendi sitelerine olan bağlantıların o zaman neden 404 hatası vermiş olabileceğinden emin değilim, ancak şimdi v5.2.1'de. (Ayrıca bir GitHub deposuna sahiptirler .) Chebfun projesi, en iyi rasyonel yaklaşımlardan daha fazlasını hedefler, merkezi konsept bir aralıkta (tek değişkenli gerçek) işlevler için Matlab vektör benzeri bir sözdizimidir.

Daireyi tamamlamak için Matlab yerine Octave altında çalışmasını gerektirecektir . Bu konuda 2010 yılında başlatılan bir Octave-muhafazakar ipucu vardı. Chebfun muhafızları / yazarları tarafından hazırlanan 2012 tarihli bir makale , Octave uyumluluğunun yanlarından biraz çaba harcadığını gösteriyor.

Chebfun ile ilgili projeler sayfasına bakıldığında , Chebfun yazılımı açık kaynak olduğundan, bu bağlantı noktasını yapmak veya orada listelenen pychebfunbir Python Chebyshev İşlevleri gibi Olivier Verdier's gibi açık kaynak paketlerinden birini kullanmak mümkün olabilir. projesi GitHub'da düzenlendi.


1
Chebfun web sitesindeki bu bağlantı, onu kullanarak rasyonel yaklaşımların nasıl yapılacağına dair belgelere sahiptir: chebfun.org/docs/guide/guide04.html
Ondřej Čertík
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.