CCH Calculo Numérico

Fazer download em docx, pdf ou txt
Fazer download em docx, pdf ou txt
Você está na página 1de 11

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

ATIVIDADE DE COMPLEMENTAÇÃO DE CARGA HORÁRIA – CCH CÁLCULO


NUMÉRICO

Interpolação – Forma de Lagrange e de Newton

Fernando Gabriel

Câmpus Toledo, novembro de 2019

INTRODUÇÃO
A interpolação consiste na determinação, a partir de um conjunto de dados
discretos, de uma função ou de um conjunto de funções analíticas que podem
determinar um ou mais valores no domínio de definição. Ou seja, pode-se descrever
a interpolação como um processo numérico que transforma uma função discreta, a
qual tem um número contável de valores entre quaisquer dois valores, em uma
função contínua, que tem um número infinito de valores entre dois valores quaisquer
[1].

Este método é comumente utilizado para encontrar uma solução aproximada


para problemas matemáticos que não apresentam uma solução exata. Pode-se citar
como exemplo uma função polinomial f(x), a qual é conhecida apenas em alguns
pontos de um intervalo genérico real [a,b] e quer-se conhecer seu valor em um ponto
diferente do mesmo intervalo. Para isso o ideal é buscar uma nova função g(x) para
substituí-la já que em sua forma analítica, f(x) é muito complexa e limitada quanto a
operações como diferenciação e integração [2].

Neste trabalho abordaremos duas formas de interpolação na resolução de um


problema: a forma de Lagrange e a de Newton, sendo que ambas possuem funções
base na forma de polinômios. A resolução será feita por meio de código
computacional com linguagem em C, utilizando o programa Code Blocks.

A interpolação polinomial tem uma vasta série de aplicações, como no


desenvolvimento de equações não lineares, cálculo de integrais e derivadas, nos
rigorosos métodos numéricos de resolução de equações diferenciais, além de ser
empregada também na computação gráfica, no processamento de sinais e imagens
[3].

DESENVOLVIMENTO
A interpolação polinomial pode ser representada por uma função f(x), a qual
pode ser definida como um conjunto finito e discreto de n+1 pontos x 0, x1, x2 ... xn,
sendo que n é o polinômio de grau máximo que coincide com f(x). Tal polinômio
interpolador é designado por Pn(x), que está representado juntamente com f(x) na
Figura 1 [4].

Figura 1. Função e polinômio interpolador.


Fonte: Lauro e Nunes [5].

A existência e unicidade do polinômio interpolador P n(x) pode ser verificada


através do seguinte teorema:

Teorema 1: Existe um único polinômio P n(x), de grau ≤n, tal que: P n(xi)=f(xi), com
i=0,1,2,3,...,n, desde que xi ≠ xj, i ≠ j [4].

Tal polinômio interpolador pode ser de 1ª ordem P 1(x), o qual consiste em


uma reta e interpola 2 pontos, definindo a interpolação linear.

y 1− y 0
P 1 ( x ) = y 0+ ( x−x 0 )(1)
x 1−x 0

Já a interpolação quadrática (2ª ordem), dada por P 2(x), consiste em uma


parábola e interpola 3 pontos. É definida pela equação:

P2 ( x ) =a0 +a 1 x+ a2 x2 (2)

A interpolação linear e quadrática está representada na Figura 2.


Figura 2. Interpolação linear e quadrática.

Fonte: Pilling [6].

Como será utilizado, para o estudo de caso que será apresentado


posteriormente, a forma de Lagrange e de Newton, é preciso levar em consideração
algumas fórmulas e definições. Começamos com a forma de Lagrange:

Seja f uma função tabelada em pontos distintos x 0, x1, x2, ...,xn e seja Li(x)
polinômios de Lagrange de grau n, em que L i é dado pela seguinte equação:

( x−x ¿¿ n)
Li=( x−x ¿¿ 0)( x−x¿¿ i−1)(x−x ¿¿ i+ 1) … ¿ ¿¿ ¿ (3)
( x ¿ ¿i− x0 )( x ¿ ¿ i−xi −1 )¿ ¿ ¿ ¿ ¿

Logo, o polinômio interpolador na forma de Lagrange nos pontos x 0, x1, x2, ...,
xn é dado pela equação [4]:

n
Pn ( x ) =∑ y i Li ( x ) (4)
i=0

Utilizando dos conceitos do polinômio interpolador de ordem 1 e de Lagrange,


é possível chegar na seguinte equação, a qual será utilizada no desenvolvimento do
código na resolução do problema.

y 1− y 0 y 0 x 1− y 1 x 0
P1 (x)= ×x+ (5)
x1−x 0 x 1−x 0
Em seguida, para obtermos a forma de interpolação de Newton, é necessário
considerar que uma função f(x) seja contínua e possua derivadas contínuas em um
intervalo [a, b]. Os pontos no intervalo, devem ser distintos no intervalo [4].

Portanto, o polinômio de interpolação de newton da função sobre os pontos


x0, x1, x2, ..., xn do intervalo é:

Pn (x )=f [x ¿¿ 0]+( x−x ¿¿ 0) f [ x 0 , x 1 ]+ …+( x−x¿ ¿ 0) …( x− x¿¿ n−1) f [x 0 , x1 , … x n ]¿ ¿ ¿ ¿(6)

A equação pode ser fracionada de acordo com a ordem da função ( P1 (x),


P2 ( x ) …). Porém, antes de chegar no polinômio interpolador, utiliza-se a tabela de
Diferenças Divididas (Figura 3) para encontrar os valores necessários.

Figura 3. Tabela das diferenças divididas.

Fonte: Franco (2006) [4].

ESTUDO DE CASO

A interpolação de forma geral tem várias aplicações podem ser utilizadas


como, por exemplo, em tabelas termodinâmicas de líquido saturado, vapor
superaquecido, líquido comprimido, ou em qualquer outro conjunto de pontos em
que se deseja encontrar um o valor.

Problema a ser resolvido pela forma de Lagrange

Para a forma de Lagrange foi escolhido um exercício elaborado por Montera


[7]. Em é necessário calcular o número de bactérias por unidade de volume em 3
horas e 42 minutos.

Tabela 2: O número de bactérias, por unidade de volume existente em uma cultura


após x horas.

h (horas) 0 1 2 3 4
V (volume de 32 47 65 92 132
bactérias)
Fonte: Montera (2011) [7].

Problema a ser resolvido pela forma de Newton

Escolheu-se um exercício do livro Cálculo Numérico, da autora Neide Franco


em que deseja-se determinar a densidade da água em 27 ºC utilizando a
interpolação de Newton.

Tabela 1: Valores de densidade da água em várias temperaturas.

T (ºC) 0 5 10 15 20 25 30 35 40
Ρ 0,9999 0,9998 0,9997 0,9991 0,9982 0,9971 0,9957 0,9941 0,9902
3
(g/cm )

Fonte: Franco (2006) [4].

RESULTADOS E DISCUSSÕES

Problema a ser resolvido pela forma de Lagrange:

Primeiramente calculou-se L0 e L1,


( x−x ¿¿ 4 )
L0=( x−x ¿¿ 1)(x−x ¿¿ 2)(x−x ¿¿3) ¿¿¿¿
( x ¿ ¿ 0−x 1 )( x ¿ ¿ 0−x 2)(x ¿ ¿ 0−x3 )( x ¿ ¿ 0−x 4 )¿ ¿ ¿¿

(x−x¿ ¿ 4)
L1=( x−x¿ ¿ 0)(x −x¿¿ 2)(x−x ¿¿ 3) ¿ ¿ ¿¿
( x ¿ ¿ 1−x 0 )( x ¿ ¿ 1−x 2 )( x ¿ ¿1−x3 )( x ¿ ¿ 1−x 4 )¿ ¿ ¿ ¿

Posteriormente determinou-se o polinômio de primeiro grau pela equação:

P1 ( x )= y 0 × L 0 ( x ) +Y 1 × L1 ( x )

P 1 ( 3,7 )=120 bactérias por unidade de volume

Em seguida criou-se um código fonte para interpolação de lagrange:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
float vmaior, v[5], hx [5], vmenor, y0, y1, vresultante, a, b, h,
hmaior, hmenor, x0, x1 ;

/* valores de horas */
hx[0] = 0;
hx[1] = 1;
hx[2] = 2;
hx[3] = 3;
hx[4] = 4;

/* valores de volume*/
v[0] = 32;
v[1] = 47;
v[2] = 65;
v[3] = 92;
v[4] = 132;

/* print e scanf para captar em qual hora o usuario deseja encontrar o


volume*/

printf("Em qual hora deseja encontrar o volume?\n");


scanf("%f",&h);

/*condição para restrição de entrada*/


if(h<=hx[0] || h>=hx[4])
{
printf("\nErro, digite um valor dentro do intervalo definido.");
}
else
{
/* laço para identificar entre quais valores o volume esta na tabela */
for(i=0;h>=hx[i];i++)
{
hmenor= hx[i];
hmaior= hx[i+1];
vmenor= v[i];
vmaior= v[i+1];
}
x0 = hmenor;
x1 = hmaior;
y0 = vmenor;
y1 = vmaior;

/*equação para interpolação em forma de Lagrange*/


a = ((y1-y0)/(x1-x0));
b = ((y0*x1-y1*x0)/(x1-x0));
vresultante = a*h+b;
printf("%f", vresultante);
}

return 0;
}
Em seguida, utilizando a interpolação de Newton, resolveu-se o estudo de
caso numericamente. Pela tabela de diferenças divididas (Tabela 3) encontrou-se os
valores referentes às ordens 1 e 2.

Tabela 3. Diferenças divididas

x Ordem 0 Ordem 1 Ordem 2


0 0,9999
5 0,9998 0
- 0,00002
10 0,9997
-0,000014
- 0,00002
15 0,9991
-0,000006
20 0,9982 - 0,00012

25 0,9971 -0,000004
- 0,00018
30 0,9957 -0,000006
- 0,00022
35 0,9941
-0,000004
- 0,00028
40 0,9902
-0,000046
- 0,00032

- 0,00078
Fonte: Autor Próprio.

Como queremos interpolar a temperatura de 27 ºC, tomamos como X 0 25ºC, logo


chegamos na seguinte função:

P2 ( x ) =0,6601+ 0,02498 x −0,00046 x2


Portanto:

P2 ( 27° C )=0,99922

Em seguida criou-se um código fonte para interpolação na forma de Newton:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
float interpol, x0, x1, x2, y1, y2, y0, x[9], y[9], ordem1a, ordem1b,
ordem2, p2x;

/* Valores de temperatura */

x[0]=0;
x[1]=5;
x[2]=10;
x[3]=25;
x[4]=20;
x[5]=25;
x[6]=30;
x[7]=35;
x[8]=40;

/* Valores de densidade */

y[0]=0.9999;
y[1]=0.9998;
y[2]=0.9997;
y[3]=0.9991;
y[4]=0.9982;
y[5]=0.9971;
y[6]=0.9957;
y[7]=0.9941;
y[8]=0.9902;

printf("Digite o valor que deseja interpolar (entre 0 e 40):\n");


scanf("%f", &interpol);

/* Condição de restrição de entrada */


if(interpol>=40 || interpol <=0)
{
printf("\nErro. Digite um valor dentro do intervalo\n");
}
else
{

/*Laço de repetição para encontrar entre quais valores a temperatura na


tabela*/
for(i=0; x[i]<interpol; i++) //compara o interpol com os valores de
x, até encontrar entre quais x ele esta.
{
x0 = x[i];
y0 = y[i];
x1 = x[i+1];
y1 = y[i+1];
x2 = x[i+2];
y2 = y[i+2];
}

/* Equação para as diferenças dividas de ordem 1 e 2*/

ordem1a = (y1 - y0) / (x1 - x0);


ordem1b = (y2 - y1) / (x2 - x1);
printf ("\nOrdem1: [%f , %f]", ordem1a, ordem1b);

ordem2 = (ordem1b - ordem1a) / (x2 - x0);


printf("\nOrdem2: %f", ordem2);

/* Equação para a interpolação em forma de Newton */


p2x = y0 + (interpol-x0)*ordem1a + (interpol-x0)*(interpol-
x1)*ordem2;

printf("\nO valor da interpolacao e: %f \n", p2x);


}

return 0;
}

O resultado obtido pelo programa criado foi de 0,995700.

CONCLUSÃO

Os resultados quando obtidos pela forma analítica apresentam erro em


relação à forma computacional. Entretanto, no presente trabalho não foram
calculados. O objetivo dos autores é mostrar a aplicabilidade dos métodos
numéricos em problemas corriqueiros e também demonstrar a praticidade de se
obter esses resultados de forma computacional.

Logo, pode-se concluir que o código é eficiente para a aplicação das


interpolações, tanto para a forma linear quanto para a forma quadrática e pode ser
utilizado a qualquer outro problema cujo objetivo seja encontrar um valor entre um
conjunto de pontos de uma tabela.

REFERÊNCIAS
[1] MENEGHET, A. Interpolação. Disponível em:
<https://www.dca.ufrn.br/~meneghet/FTP/MCEC/Transp05.pdf>. Acesso em 24 de
novembro de 2018.

[2] LOPES, Álvaro. COSTA, Manuel. Comparação entre métodos de aproximação


numérica utilizando o programa Matlab. Revista Interdisciplinar. Dezembro, 2017.

[3] Interpolação polinomial. Capítulo 4. Disponível em :<


http://www.mat.uc.pt/~alma/aulas/anem/sebenta/cap4.pdf>. Acesso em 24 de
novembro de 2018.

[4] FRANCO, Neide Bertoldi. Cálculo Numérico. São Paulo: Pearson, 2006.

[5] GALVÃO, Lauro; NUNES, Luiz. Apostila de Cálculo numérico. Disponível em: <
https://www1.univap.br/spilling/CN/apostila2.pdf>. Acesso em 24 de novembro de
2018.

[6] PILLING, Sérgio. Interpolação Numérica – Cálculo numérico. Universidade do


vale do Paraíba. Vol. IV. São Paulo.

[7] MONTERA, Luciana. Interpolação. Universidade Federal do Mato Grosso Do


Sul. Disponível em:< http://www.facom.ufms.br/~montera/Interpolacao_alunos.pdf>.
Acesso em 25 de novembro de 2018.

Você também pode gostar