Interpolação 101

Há muitos anos, o NumXL oferecia suporte a uma função de interpolação como um utilitário ou método auxiliar para atender às necessidades de modelagem dos nossos usuários. Para nossa surpresa, essa funcionalidade recebeu muita atenção, e decidimos compilar aqui algumas das perguntas mais frequentes sobre ela.

O que é interpolação?

A interpolação é um método numérico para estimar o valor de um novo ponto de dados com base no intervalo de um número discreto de pontos de dados conhecidos.

Para ilustrar, vamos supor que o valor de uma função $y=f(x)$ seja dado como um conjunto de cinco (5) valores x distintos, conforme mostrado no gráfico abaixo.
Esse gráfico mostra o conjunto de dados de entrada que consiste em cinco valores x distintos.

Agora, queremos estimar (ou seja, interpolar) o valor da função em $x=5$, usando os cinco (5) pontos de dados fornecidos.

Para fins de interpolação, o valor x desejado deve estar dentro do intervalo do conjunto de dados original (por exemplo, $2\le x\le 12$).

Antes de prosseguirmos, vamos responder a algumas perguntas fundamentais que ouvimos com frequência:

  1. E quanto à extrapolação? Qual é a diferença?
    A extrapolação é o processo de estimar o valor da função de um valor x que está fora do intervalo de um determinado conjunto de dados.
  2. O NumXL oferece suporte à extrapolação?
    Sim, a mesma função NxINTRPL(.) pode ser usado para extrapolação. Certifique-se de passar "true" ou 1 para o argumento "extrapolate".
  3. O ajuste de curva (por exemplo, regressão) e a interpolação são a mesma coisa?
    O ajuste de curva e a interpolação são frequentemente usados de forma intercambiável, mas há uma diferença sutil entre eles: a interpolação deve se ajustar exatamente aos pontos de dados, enquanto o ajuste de curva deve se aproximar o máximo possível.
  4. Devo usar interpolação ou ajuste de curva?
    Isso depende. A interpolação pressupõe que os pontos de dados sejam conhecidos perfeitamente (ou, pelo menos, com uma precisão muito alta), enquanto o ajuste da curva pressupõe algum grau de ruído nos pontos de dados.

Preparação de dados

Como mencionamos anteriormente, todos os métodos de interpolação aceitam um conjunto discreto de pontos de dados conhecidos. Para lidar com conjuntos de dados do mundo real, a função de interpolação NumXL (NxINTRPL) pré-processa os dados para:

  • Classifique os pontos de dados em ordem crescente (com base em X).
  • Elimine silenciosamente os pontos de dados com valores ausentes.
  • Substitua várias leituras para o mesmo valor X por sua média.

PERGUNTAS FREQUENTES:

Q: Os pontos de dados devem ser separados de maneira uniforme?

A: Não, o comprimento do intervalo entre os pontos de dados não precisa ser uniforme, mas recomendamos que os pontos de dados sejam espalhados pelo intervalo x para melhorar a precisão da interpolação e minimizar o impacto dos outliers.

Métodos de interpolação

  1. Interpolação de etapas 1: Interpolação plana direta:

    Os métodos de interpolação por etapas modelam a função desconhecida de forma plana/constante entre pontos de dados conhecidos, usando o último valor conhecido.
    Esse gráfico mostra o método de interpolação 'Forward Flat'.

  2. Interpolação em etapas 2: Interpolação plana para trás:

    No caso do método backward flat, a função desconhecida também é modelada como plana/constante entre os pontos de dados conhecidos, mas usa o nível do ponto de dados imediatamente seguinte.
    Esse gráfico mostra o método de interpolação

  3. Interpolação de etapas 3: Interpolação do vizinho mais próximo:

    Com o método do vizinho mais próximo, a função desconhecida ainda é modelada de forma plana/constante, mas seu nível é determinado pelo nível do ponto de dados mais próximo.
    Esse gráfico mostra o método de interpolação 'Vizinho mais próximo'.

  4. Interpolação linear:

    Com a interpolação linear, conectamos cada ponto de dados aos seus vizinhos usando linhas retas.
    Esse gráfico mostra o método de interpolação 'Linear'.

    Observe que os valores da função entre dois pontos de dados são determinados exclusivamente por esses dois pontos de dados.

  5. Spline cúbico: Spline natural:

    Usando o método de spline cúbico, construímos um polinômio cúbico em cada intervalo com a primeira e a segunda derivadas correspondentes nos pontos de dados fornecidos. A segunda derivada é escolhida para ser zero no primeiro ponto e no último ponto.
    Esse gráfico mostra o método de interpolação 'Natural Spline'.

    A curva resultante é suave, mas não é "local", o que significa que, se as funções fizerem uma grande alteração (por exemplo, x=4), a curva ao redor dos pontos circundantes será "instável" (ou seja, ultrapassará os pontos intermediários).

  6. Spline cúbico: AKIMA Spline:

    Para evitar a curva instável da spline cúbica natural, relaxamos a continuidade da segunda derivada em torno dos pontos de dados (nós), resultando em cantos não arredondados.
    Esse gráfico mostra o método de interpolação 'AKIMA Spline'.

    Conforme mostrado na figura acima, a curva em torno dos pontos de dados é contínua, mas não suave.

  7. Spline cúbico: Steffen Spline:

    A spline de Steffen acrescenta uma nova restrição: o segmento da spline cúbica é monotônico entre os pontos de dados. Não há oscilação, ponto final.
    Esse gráfico mostra o método de interpolação 'Steffen Spline'.

    A curva resultante é suave ao redor dos pontos de dados e não apresenta nenhuma oscilação entre eles. Portanto, os mínimos e máximos só podem ocorrer exatamente nos pontos de dados.

    A spline de Steffen e sua primeira derivada são garantidamente contínuas, mas a segunda derivada pode ser descontínua.

  8. Spline cúbico: Constrained (Kruger) Spline:

    Kruger propôs uma spline cúbica restrita para evitar a ultrapassagem sacrificando a suavidade, de modo que não precisamos mais de uma segunda derivada contínua em cada ponto e calculamos o valor da primeira derivada numericamente usando os pontos ao redor.
    Esse gráfico mostra o método de interpolação 'Constrained (Kruger) Spline'.

    Usando o spline restrito (Kruger), evitamos o efeito de oscilação de overshoot do spline cúbico e não precisamos adicionar restrições de monotonicidade.

Há outros tipos de splines cúbicos, mas apresentamos apenas os que são suportados atualmente na versão 1.68 do NumXL.

Perguntas frequentes:

Q: Que tipo de spline cúbico devo usar?

A: Isso depende da natureza de seus dados e da importância de uma curva suave e/ou do efeito colateral de ultrapassagem. Em muitos casos, sugerimos escolher a spline cúbica restrita (Kruger) como uma aposta segura.

Q: Vejo duas funções de interpolação no NumXL: INTERPOLATE(.) e NxINTRPL(.). Qual deles devo usar?

A: A função INTERPOLATE(.) foi nossa função de implementação inicial, mas agora está obsoleta. Todos os métodos de interpolação mencionados acima estão disponíveis somente em NxINTRPL(.), portanto, você só deve usar essa função.

Q: A função NxINTRPL(.) aceita tanto um valor único quanto uma matriz para o argumento de destino. Por quê?

A: A função NxINTRPL(.) é executada mais rapidamente quando você interpola vários valores de uma só vez, em vez de chamar cada valor separadamente. Recomendamos passar todos os valores de x em algumas chamadas de função.

  Anexos

Comentários

iniciar sessão para comentar.

Este artigo foi útil?
0 de 0 acharam isto útil