Avaliação rápida (aproximada) do polinômio de Chebyshev


9

Existe uma maneira preferida de como implementar uma avaliação rápida (aproximada) do polinômio de interpolação de Chebyshev em grade uniforme (considerando os valores de função nos nós de Chebyshev)? Meu problema é que a interpolação se torna lenta quando o grau do polinômio interpolador aumenta.

As seguintes idéias vieram à minha mente:

  • Tente adaptar técnicas não uniformes de FFT (NFFT)
  • Use a FFT para calcular as derivações nos nós Chebyshev, potencialmente depois de ir primeiro para uma grade mais fina (Chebyshev). Em seguida, use uma interpolação cúbica por partes para avaliação (aproximada).
  • Use alguma fórmula que use apenas valores de função (e potencialmente derivados) em nós Chebyshev "próximos" (isso está relacionado a uma técnica NFFT específica).

Dê uma olhada no chebfun ! É uma biblioteca inteira que se baseia em representações de funções por meio de polinômios de Chebyshev. É de código aberto, altamente otimizado e bem mantido, e acho que, se existe uma maneira preferida para a avaliação pontual de um polinômio, você o encontrará lá.
Jan

Respostas:


11

Você já pensou em usar a interpolação baricêntrica ? Uma descrição detalhada de como fazê-lo eficientemente para os nós Chebyshev é fornecida na Seção 5 deste documento.

nmO(nm)

Atualizar

Outra alternativa, se você tiver os coeficientes de Chebyshev do seu polinômio interpolatório, é usar o algoritmo de Clenshaw . Se você tiver apenas os valores da função nos nós Chebyshev, mas precisar avaliar o polinômio várias vezes, poderá calcular os coeficientes com uma FFT.

O algoritmo de Clenshaw é um pouco mais rápido que a interpolação baricêntrica, pois requer apenas adições e multiplicações, e também vetoriza bastante.


Atualmente, eu faço isso pré-computando os pesos relativos aos valores da função nos nós Chebyshev para um ponto de avaliação específico, depois avalio esse ponto para todas as interpolações que tenho que fazer (existem muitos, todos com nós Chebyshev idênticos e pontos de avaliação idênticos) e, em seguida, passe para o próximo ponto de avaliação.
9788 Thomas Klimpel #

[1,1]±1±1/2
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.