Estou procurando alguma implementação de código aberto (qualquer um de Python, C, C ++, Fortran é bom) de aproximação racional a uma função. Algo ao longo do artigo [1]. Dou-lhe uma função e ele me devolve dois polinômios, cuja razão é a aproximação no intervalo determinado e o erro está oscilando com a mesma amplitude e é uma aproximação ótima ou próxima a ela.
Aqui está o que eu encontrei:
Parece que a chebfun pode fazer isso, mas não tenho acesso ao Matlab *.
Há um programa simples na seção 5-13 "Aproximação Racional de Chebyshev" em Receitas Numéricas (NR).
O Mathematica EconomizedRationalApproximation e MiniMaxApproximation
Fiquei me perguntando se há algo mais novo (possivelmente melhor testado) do que o código NR.
Minha aplicação é que eu tenho um conjunto de funções especiais, cerca de 10, que são dadas como séries hipergeométricas ou alguma fórmula que possui cancelamentos numéricos, e eu quero ter uma função de avaliação robusta, rápida e precisa, que está sendo chamada em o loop mais interno do cálculo de dois elementos da matriz de partículas nos cálculos de Hartree Fock. Eu coloquei um exemplo simples de uma função que funciona para mim em [2]. Como você pode ver, é usando uma fórmula direta ou uma série em torno de x = 0 que calculei usando o SymPy. Funciona meio que, mas a precisão não é boa, cerca de x = 1 cerca de metade dos dígitos significativos são perdidos (mas para x = 0,1 e x = 1e5 é preciso para quase todos os dígitos significativos). Estou procurando uma melhor aproximação.
[1] Deun, J. e Trefethen, LN (2011). Uma implementação robusta do método Carathéodory-Fejér para aproximação racional. BIT Numerical Mathematics, 51 (4), 1039-1050. doi: 10.1007 / s10543-011-0331-7 ( junho de 2010 e-print )
[2] https://gist.github.com/3831580.
(*) Nem no site da chebfun, que me dá 404, mas Pedro sugeriu que esse deve ser o problema do meu provedor.