Método matemático
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 −1 ≤ x ≤ x 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 0 ≤ x ≤ x 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