Szukam implementacji typu open source (dowolne z Python, C, C ++, Fortran jest w porządku) racjonalnego zbliżenia do funkcji. Coś w tym artykule [1]. Daję mu funkcję i zwraca mi dwa wielomiany, których stosunek jest przybliżeniem dla danego interwału, a błąd oscyluje z tą samą amplitudą i jest to optymalne przybliżenie lub blisko niego.
Oto, co znalazłem:
Wygląda na to, że chebfun może to zrobić, ale nie mam dostępu do Matlaba *.
W rozdziale 5-13 „Racjonalne zbliżenie Chebysheva” znajduje się prosty program w przepisach numerycznych (NR).
Mathematica ma EconomizedRationalApproximation i MiniMaxApproximation
Zastanawiałem się, czy istnieje coś nowszego (być może lepiej przetestowanego) niż kod NR.
Moja aplikacja polega na tym, że mam zestaw funkcji specjalnych, około 10, które są podane albo jako serie hipergeometryczne, albo jakąś formułę, która ma anulowania numeryczne, i chcę mieć solidną, szybką i dokładną funkcję oceny, która jest wywoływana najbardziej wewnętrzna pętla obliczania dwóch elementów macierzy cząstek w obliczeniach Hartree Fock. Podam prosty przykład funkcji, która działa dla mnie w [2]. Jak widać, jest to albo formuła bezpośrednia, albo seria około x = 0, którą obliczyłem za pomocą SymPy. To trochę działa, ale dokładność nie jest duża, około x = 1 około połowa znaczących cyfr jest tracona (ale dla x = 0,1, a także x = 1e5 jest dokładna do prawie wszystkich cyfr znaczących). Szukam lepszego przybliżenia.
[1] Deun, J. i Trefethen, LN (2011). Solidna implementacja metody Carathéodory-Fejér w celu racjonalnego przybliżenia. BIT Matematyka numeryczna, 51 (4), 1039–1050. doi: 10.1007 / s10543-011-0331-7 ( e-druk z czerwca 2010 r. )
[2] https://gist.github.com/3831580
(*) Ani na stronie Chebfun, która daje mi 404, ale Pedro zasugerował, że to musi być mój problem z dostawcą.
źródło
Wykonanie jednorazowych najlepszych racjonalnych aproksymacji często można osiągnąć przez „ręczne” iteracje algorytmu Remeza : interpoluj racjonalne aproksymacje z (względnymi lub bezwzględnymi) naprzemiennymi błędami znaku przy początkowym zgadywaniu punktów interpolacji, zlokalizuj jeden (lub więcej) punktów, w których rzeczywisty błąd przekracza błąd punktów interpolacji i osi obrotu (zamieniając jeden lub więcej odgadniętych punktów dla nich, w sposób pozwalający zachować błędy naprzemiennego znakowania). To dobry sposób na zrozumienie teorii od podstaw. Kiedy wymagana dokładność jest niewielka, znajduję implementację arkusza kalkulacyjnego, która pomaga mi przejść przez obliczenia i dostosować problemy za pomocą metody „wklej i wklej”.
Jeśli obniżymy linię prostą o połowę odległości w punkcie „błędu maksymalnego”, będziemy mieli trzy punkty „równomiernego” błędu bezwzględnego zliczając dwa punkty końcowe i ten krytyczny punkt we wnętrzu. Zatem najlepsze liniowe przybliżenie wielomianowe do gładkiej funkcji wypukłej można znaleźć prawie przez kontrolę.
Oprogramowanie Chebfun sama jest open source ( licencji BSD ), ponieważ v4.0. Nie jestem pewien, dlaczego w linkach do ich witryny w tym czasie pojawił się błąd 404, ale teraz są w wersji 5.2.1. (Posiadają także repozytorium GitHub .) Projekt Chebfun ma na celu więcej niż najlepsze racjonalne aproksymacje, przy czym centralną koncepcją jest składnia podobna do wektora Matlaba dla funkcji (rzeczywista jednowymiarowa) w danym przedziale.
Aby ukończyć krąg, wymagałby, aby działał pod Octave, a nie Matlab. W 2010 r. Pojawił się wątek opiekuna Octave na ten temat . Artykuł z 2012 r. Autorstwa opiekunów / autorów Chebfun sugeruje, że podjęto pewne wysiłki w celu zapewnienia zgodności Octave z ich strony.
Spojrzenie na stronę projektów związanych z Chebfun sugeruje, że ponieważ oprogramowanie Chebfun jest oprogramowaniem typu open source, może być możliwe skorzystanie z tego portu lub skorzystanie z jednego z wymienionych tam pakietów open source, takich jak Olivier Verdier
pychebfun
, Python Chebyshev Functions projekt hostowany na GitHub.źródło