Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumo
1. Introdução
2. Interpolação Linear
A interpolação linear é uma linha que se ajusta a dois pontos. A interpolação linear
mostrada na Figura 1 é dada por:
b−x x−a
g ( x) = f (a) + f (b )
b−a b−a
1
e( x ) = ( x − a)( x − b) f ' ' (ξ ), a < ξ < b
2
O método fundamental para encontrar uma função que passa por vários pontos de
dados (ajustamento de curva) usa um polinômio. O polinômio de n − ésima ordem que
passa por n + 1 pontos é único. Isso significa, sem considerar a fórmula de interpolação,
que todas as interpolações ajustadas para os mesmos pontos são matematicamente idênticos
[2].
x 0 x1 ... x n
f0 f 1 ... f n
onde x 0 , x1 ... são abscissas de pontos e em ordem decrescente. O espaço entre os pontos é
arbitrário. O polinômio de ordem n que passa por n + 1 pontos pode ser escrito como uma
série de potência como
g ( x) = a 0 + a1 x + a 2 x 2 + ... + a n x n
V0 ( x) = ( x − x1 )( x − x 2 )...( x − x n )
( x − x1 )( x − x 2 )...( x − x n )
V0 ( x) =
( x 0 − x1 )( x 0 − x 2 )...( x 0 − x n )
que será igual a unidade para x = x 0 e zero para x = x1 , x = x 2 ,..., x = x n . De modo similar
pode ser escrito Vi
( x − x 0 )( x − x1 )...( x − x n )
Vi =
( xi − x 0 )( x i − x1 )...( x 0 − x n )
( x − x1 )( x − x 2 )...( x − x n )
g ( x) = f0
( xi − x 0 )( x i − x1 )...( xi − x n )
( x − x1 )( x − x 2 )...( x − x n )
+ f1 (2)
( x1 − x 0 )( x1 − x 2 )...( x − x n )
.
.
( x − x 0 )( x − x1 )...( x − x n −1 )
+ fn
( x n − x 0 )( x n − x1 )...( x n − x n −1 )
Exemplo
Tenperatura Desidade
i Ti ρi
0 0
94 C 929 kg / m 3
1 205 902
2 371 860
g (251) = 890.5kg / m 3
( x − xi )
(x0 − xi )
para todo i exceto para i = 0. O segundo termo é f 1 vezes o produto de
( x − xi )
(x1 − xi )
para todo i = 1. Todos os outros termos tem o mesmo padrão. A Equação 2, pode ser
programada como a seguir:
g=0;
for (i=0;i<=n;i++)
z=1.0;
for (j=0;j<=n;j++)
{
if (i!=j)
z=z*(xa-x[j]/(x[i]-x[j]);
g=g+z*f[i];
f[i],x[i], i=0, 1, …, n
g: resultado da interpolação
z: produto de fatores
xa: x
6. Bibliografia
[1] Mathworks, MATLAB Versão do Estudante, Makron Books, São Paulo, 1997.
[2] Nakamura, S. Applied Numerical Methods in C, PTR Prentice Hall, New Jersey, 1992.
para um valor de x dado como entrada, onde ( x i f i ), i = 0.1.2,..., n são os pontos dados na
tabela de entrada, n + 1 é o total de pontos de entrada.
#include <stdio.h>
#include <math.h>
#define TRUE 1
/* n: número do último ponto (n+1 = número de dados de entrada)
f(i), x[i]: dados de entrada dados (i começa em 0)
yans: resultado final
xa: x valor de entrada para o qual a interpolação é calculada */
main()
{
int i, j, kk;
float xa, yans, z;
static n = 3; /* n+1 é o número de pontos de entrada */
/*As próximas duas linhas defina os pontos para ser usados na interpoloção */
static float x[11]={1., 2. , 3., 4.};
static float f[11]={.671, .620, .567, .512};
printf ("Interpolacao de Lagrange\n");
printf("Dados utilizados\n");
printf("i x(i) f(i) \n" );
for (i=0; i<=n; i++)
printf("%d %g %g \n", i, x[i], f[i] );
while (TRUE)
{
printf( "\nEntrada x ? ");
scanf("%f", &xa );
if (!(x[0]<= xa && xa <= x[n]) )
printf("(Atencao: x é uma extrapolacao do intervalo.)\n" );
for (i =0; i<=n; i++)
{
z=1.0;
for (j=0;j<=n;j++)
{
if (i != j)
z=z*(xa - x[j]) / (x[i] - x[j]);
}
yans= yans + z*f[i];
}
printf("Resposta: g( %g) = %g \n", xa, yans );
printf("\nDigite 1 para continuar, 0 para parar: ");
scanf("%d", &kk);
if (kk !=1)
exit(0);
}
}