Interpolação de spline - Spline interpolation

No campo matemático da análise numérica , a interpolação de spline é uma forma de interpolação em que o interpolante é um tipo especial de polinômio por partes chamado spline . Ou seja, em vez de ajustar um único polinômio de alto grau a todos os valores de uma vez, a interpolação de spline ajusta polinômios de baixo grau a pequenos subconjuntos dos valores, por exemplo, ajustando nove polinômios cúbicos entre cada um dos pares de dez pontos , em vez de ajustar um único polinômio de grau dez a todos eles. A interpolação de spline é geralmente preferida em relação à interpolação polinomial porque o erro de interpolação pode ser reduzido mesmo ao usar polinômios de baixo grau para o spline. A interpolação de spline também evita o problema do fenômeno de Runge , no qual a oscilação pode ocorrer entre pontos ao interpolar usando polinômios de alto grau.

Introdução

Interpolação com splines cúbicos entre oito pontos. Desenhos técnicos desenhados à mão para construção naval são um exemplo histórico de interpolação de spline; os desenhos foram construídos com réguas flexíveis que foram dobradas para seguir pontos pré-definidos.

Originalmente, spline era um termo para réguas elásticas que eram dobradas para passar por vários pontos predefinidos, ou nós . Estes foram usados ​​para fazer desenhos técnicos de construção naval e de construção manual, conforme ilustrado na figura.

Queremos modelar tipos semelhantes de curvas usando um conjunto de equações matemáticas, com um polinômio para cada par de nós e , onde . Portanto, haverá polinômios e nós: o primeiro polinômio começa em e o último polinômio termina em .

A curvatura de qualquer curva é definida como

Para fazer com que o spline tome uma forma que minimize a dobra (sob a restrição de passar por todos os nós), definiremos ambos e como contínuo em todos os lugares, inclusive nos nós. Assim, a primeira e a segunda derivadas de cada polinômio sucessivo devem ter valores idênticos nos nós, o que significa que

Isso só pode ser alcançado se polinômios de grau 3 ou superior - polinômios cúbicos ou superior - forem usados. A abordagem clássica é usar polinômios de exatamente grau 3 - splines cúbicos .

Algoritmo para encontrar a spline cúbica de interpolação

Queremos encontrar cada polinômio dados os pontos de passagem . Para fazer isso, consideraremos apenas uma única peça da curva , que será interpolada de a . Esta peça terá declives e em seus pontos finais. Ou, mais precisamente,

A equação completa pode ser escrita na forma simétrica

 

 

 

 

( 1 )

Onde

 

 

 

 

( 2 )

 

 

 

 

( 3 )

 

 

 

 

( 4 )

Mas o que são e ? Para derivar esses valores críticos, devemos considerar que

Segue-se então que

 

 

 

 

( 5 )

 

 

 

 

( 6 )

Definindo t = 0 e t = 1 respectivamente nas equações ( 5 ) e ( 6 ), obtém-se de ( 2 ) que, de fato, as primeiras derivadas q ′ ( x 1 ) = k 1 e q ′ ( x 2 ) = k 2 , e também derivados secundários

 

 

 

 

( 7 )

 

 

 

 

( 8 )

Se agora ( x i , y i ), i = 0, 1, ..., n são n + 1 pontos, e

 

 

 

 

( 9 )

onde i = 1, 2, ..., n e são n polinômios de terceiro grau interpolando y no intervalo x i −1xx i para i = 1, ..., n tal que q ′ i ( x i ) = q ′ i +1 ( x i ) para i = 1, ..., n  - 1, então os n polinômios juntos definem uma função diferenciável no intervalo x 0xx n , e

 

 

 

 

( 10 )

 

 

 

 

( 11 )

para i = 1, ..., n , onde

 

 

 

 

( 12 )

 

 

 

 

( 13 )

 

 

 

 

( 14 )

Se a sequência k 0 , k 1 , ..., k n é tal que, além disso, q ′ ′ i ( x i ) = q ′ ′ i +1 ( x i ) vale para i = 1, ... , n  - 1, então a função resultante terá até mesmo uma segunda derivada contínua.

De ( 7 ), ( 8 ), ( 10 ) e ( 11 ) segue que este é o caso se e somente se

 

 

 

 

( 15 )

para i = 1, ..., n  - 1. As relações ( 15 ) são n - 1 equações lineares para os n + 1 valores k 0 , k 1 , ..., k n .

Para as réguas elásticas sendo o modelo para a interpolação de spline, tem-se que à esquerda do "nó" mais à esquerda e à direita do "nó" mais à direita a régua pode se mover livremente e, portanto, tomará a forma de uma linha reta com q ′ ′ = 0 . Como q ′ ′ deve ser uma função contínua de x , "splines naturais", além das n - 1 equações lineares ( 15 ) devem ter

ou seja, isso

 

 

 

 

( 16 )

 

 

 

 

( 17 )

Eventualmente, ( 15 ) junto com ( 16 ) e ( 17 ) constituem n + 1 equações lineares que definem exclusivamente os n + 1 parâmetros k 0 , k 1 , ..., k n .

Existem outras condições finais, "spline fixada", que especifica a inclinação nas extremidades da spline, e a popular "spline não um nó", que requer que a terceira derivada também seja contínua em x 1 e x N -1 pontos. Para a spline "não um nó", as equações adicionais serão:

onde .

Exemplo

Interpolação com splines cúbicas "naturais" entre três pontos

No caso de três pontos, os valores para são encontrados resolvendo o sistema de equações lineares tridiagonais

com

Pelos três pontos

um consegue isso

e de ( 10 ) e ( 11 ) que

Na figura, a função spline que consiste nos dois polinômios cúbicos e dada por ( 9 ) é exibida.

Veja também

Código de computador

TinySpline: biblioteca C de código aberto para splines que implementa interpolação de splines cúbicas

SciPy Spline Interpolation: um pacote Python que implementa interpolação

Interpolação cúbica: biblioteca C # de código aberto para interpolação de spline cúbica

Referências

links externos