32
Interpolação Polinomial

Aula Interpol a Cao

Embed Size (px)

Citation preview

Page 1: Aula Interpol a Cao

Interpolação Polinomial

Page 2: Aula Interpol a Cao

Índice

● Polinômios● Polinômios de Lagrange● Métodos das diferenças divididas de newton

Page 3: Aula Interpol a Cao

Interpolação Polinomial

● Dado um conjunto de pontos conhecidos, calcular os pontos intermediários entre o primeiro e o último ponto conhecido

Page 4: Aula Interpol a Cao

Caso de uso

Hora Amostragem08:00:00 210:00:00 313:00:00 417:00:00 1

● Uma fábrica despeja dejetos no leito de um rio

● Deve-se determinar a quantidade de dejetos expelidos durante o dia

● Metodologia: amostragem de hora em hora

● Após muitas tentativas, quatro tiveram sucesso

Page 5: Aula Interpol a Cao

Situação

● Temos quatro pontos, e necessitamos saber uma estimativa do que está sendo jogado no rio no decorrer do dia

Número de Horas

kg/horas0 22 35 49 1

Qtde Poluentes

Page 6: Aula Interpol a Cao

Pontos Disponíveis

Page 7: Aula Interpol a Cao

Variação Constante

Page 8: Aula Interpol a Cao

Variação Linear

Page 9: Aula Interpol a Cao

Interpolação Polinomial

Page 10: Aula Interpol a Cao

Interpolação Polinomial

Page 11: Aula Interpol a Cao

Interpolação Polinomial

Page 12: Aula Interpol a Cao

Interpolação Polinomial

● Pode ser resolvido usando eliminação de Gaus

p é único

● Problema: é computacionalmente custoso● Deve-se encontrar um meio mais barato

Page 13: Aula Interpol a Cao

Polinômios de Lagrange● Dado um conjunto de k+1 pontos

onde todos os xj são distintos

o polinômio interpolador de Lagrange é a combinação linear

das bases polinômicas de Lagrange

L

Page 14: Aula Interpol a Cao

Polinômios Lagrange

L

Page 15: Aula Interpol a Cao

Polinômios de Lagrange

p(x) L

Page 16: Aula Interpol a Cao

Diferenças Divididas de Newton

Page 17: Aula Interpol a Cao

Diferenças Divididas de Newton

Page 18: Aula Interpol a Cao

Diferenças Divididas de Newton

Page 19: Aula Interpol a Cao

Diferenças Divididas de Newton

Page 20: Aula Interpol a Cao

Diferenças Divididas de Newton

Page 21: Aula Interpol a Cao
Page 22: Aula Interpol a Cao
Page 23: Aula Interpol a Cao
Page 24: Aula Interpol a Cao
Page 25: Aula Interpol a Cao

Retas

Page 26: Aula Interpol a Cao

Interpolante linear por partes

Page 27: Aula Interpol a Cao
Page 28: Aula Interpol a Cao

* Primeiro algoritmo *f[i],x[i], i=0, 1, ..., ng: resultado da interpolaçãoz: produto de fatoresxa: x *valor da interpolação a ser calculado

g=0;Para i<-0 até n z=1.0; Para j<-0 até n Se (i!=j) z=z*(xa-x[j]/(x[i]-x[j]); g=g+z*f[i];

Lagrange

Page 29: Aula Interpol a Cao

//Algoritmo em linguagem C#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 finalxa: 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 interpolaçã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] );

Page 30: Aula Interpol a Cao

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); }}

Page 31: Aula Interpol a Cao

//Interpolação usando newton#define MAXN 100#define ORDER 4

real ax[MAXN],ay[MAXN],diff[MAXN+1][ORDER+1];real nr<-1.0,dr<-1.0,x,p,h,yp;inteiro i,n,j,k;

Mostrar("entre com o valor de n : ")Ler(n);Mostrar("entre com os valores na forma X e Y")Para i<-0 até n

Ler(ax[i],ay[i])

Mostrar("Entre o valor de x para o qual y é desejado : ")Ler(x)h<-ax[1]-ax[0];Para i<-0 até n-1

diff[i][1]<-ay[i+1]-ay[i]; Para j<-2; até ORDER Para i<-0 até n diff[i][j]<-diff[i+1][j-1]-diff[i][j-1]

Page 32: Aula Interpol a Cao

//continuacaoi=0 Enquanto(!(ax[i]>x)) i<-i+1

i<-i-1;p<-(x-ax[i])/hyp<-ay[i]Para k<-1 até ORDER nr<-nr*p-k+1;

dr<-dr*k;yp<-yp+(nr/dr)*diff[i][k];

Mostrar(resultados)