Buscar

aula02_taylor

Prévia do material em texto

Ca´lculo Nume´rico
Polinoˆmios de Taylor
Heder S. Bernardino
Heder S. Bernardino Ca´lculo Nume´rico
Suma´rio
1 Aula Anterior
2 Introduc¸a˜o
3 Polinoˆmios de Taylor
4 Exemplos
5 Revisa˜o
Heder S. Bernardino Ca´lculo Nume´rico
Aula Anterior
Aula Anterior
Heder S. Bernardino Ca´lculo Nume´rico
Aula Anterior
Informac¸o˜es Gerais
◮ Site da disciplina
◮ http://sites.google.com/site/calcnumufjf
◮ Datas das avaliac¸o˜es
◮ Hora´rios de monitoria
◮ Material
◮ Listas de exerc´ıcios
◮ Atendimento
◮ Quinta-feira de 10-12h
◮ heder@ice.ufjf.br
Heder S. Bernardino Ca´lculo Nume´rico
Aula Anterior
Informac¸o˜es Gerais
◮ Laborato´rios
◮ Listas com os nomes dos alunos que participara˜o de cada laborato´rio
sera˜o disponibilizadas no site da disciplina
◮ Local ainda na˜o definido
◮ Linguagem de programac¸a˜o C
◮ Code::Blocks
◮ PLPlot
Heder S. Bernardino Ca´lculo Nume´rico
Aula Anterior
Aula Anterior
Heder S. Bernardino Ca´lculo Nume´rico
Introduc¸a˜o
Introduc¸a˜o
Heder S. Bernardino Ca´lculo Nume´rico
Introduc¸a˜o
Introduc¸a˜o
◮ Algumas func¸o˜es na˜o sa˜o ta˜o simples de serem avaliadas
◮ ex
◮ ln(x)
◮ sen(x)
◮ cos(x)
◮ esen(x)
◮ O objetivo aqui e´ calcular f(x) por meio de func¸o˜es que sejam mais
fa´ceis de serem avaliadas
◮ Pn(x) = a0 + a1x+ a2x
2 + · · ·+ anxn
◮ Polinoˆmios sa˜o compostos por operac¸o˜es de adic¸a˜o e multiplicac¸a˜o
Heder S. Bernardino Ca´lculo Nume´rico
Introduc¸a˜o
Introduc¸a˜o
◮ Assim, parece adequado aproximar uma func¸a˜o f(x) complexa por
um polinoˆmio de Pn(x) de grau n
◮ Uma alternativa sa˜o os Polinoˆmios de Taylor
◮ Extremamente importantes
◮ Muitas te´cnicas nume´ricas sa˜o derivadas diretamente
◮ diferenciac¸a˜o nume´rica
◮ soluc¸a˜o nume´rica de equac¸o˜es diferenciais ordina´rias
◮ O objetivo aqui e´ obter uma aproximac¸a˜o polinomial para uma func¸a˜o
f(x) em torno de um ponto x0
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
◮ Os Polinoˆmios de Taylor foram definidos de modo que
f (k)(x0) = P
(k)
n (x0), 0 ≤ k ≤ n
◮ obs.: f (k)(x) e´ a k-e´sima derivada de f(x)
◮ Assumindo inicialmente x0 = 0 e o polinoˆmio aproximador na forma
f(x) ≈ Pn(x) = a0 + a1x+ a2x2 + · · ·+ anxn
=
n∑
k=0
akx
k
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
◮ Avaliando o polinoˆmio em x0 = 0, enta˜o
f(0) = Pn(0) = a0
◮ Derivando f(x) = Pn(x), obte´m-se
f ′(x) = P ′n(x) = a1 + 2a2x+ 3a3x
2 + 4a4x
3 + · · ·+ nanxn−1
⇒ f ′(0) = P ′n(0) = a1
◮ Derivando novamente
f ′′(x) = P ′′n (x) = 2a2 + 3.2a3x+ 4.3a4x
2 + · · ·+ n.(n− 1)anxn−2
⇒ f ′′(0) = P ′′n (0) = 2a2
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
◮ Seguindo o mesmo racioc´ınio
f ′′′(x) = P ′′′n (x) = 3.2a3 + 4.3.2a4x+ · · ·+ n.(n− 1).(n− 2)anxn−3
⇒ f ′′′(0) = P ′′′n (0) = 3.2a3
...
f (k)(x) = P (k)n (x) = k!ak + (k + 1)!ak+1x+ . . .
⇒ f (k)(0) = P (k)n (0) = k!ak
◮ Logo, tem-se que
f (k)(0) = k!ak
ak =
f (k)(0)
k!
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
◮ De modo geral, sendo x0 ∈ R e o polinoˆmio aproximador na forma
f(x) ≈ Pn(x) = a0 + a1(x− x0) + a2(x− x0)2 + · · ·+ an(x− x0)n
=
n∑
k=0
ak(x− x0)k
◮ Nota-se que
f(x0) = Pn(x0) = a0
◮ Derivando f(x) = Pn(x), obte´m-se
f ′(x) = P ′n(x) =a1 + 2a2(x− x0) + 3a3(x− x0)2 + 4a4(x− x0)3
+ · · ·+ nan(x− x0)n−1
⇒ f ′(x0) = P ′n(x0) =a1
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
◮ Derivando f(x) = Pn(x), obte´m-se
f ′(x) = P ′n(x) =a1 + 2a2(x− x0) + 3a3(x− x0)2 + 4a4(x− x0)3
+ · · ·+ nan(x− x0)n−1
⇒ f ′(x0) = P ′n(x0) =a1
◮ Derivando novamente
f ′′(x) = P ′′n (x) =2a2 + 3.2a3(x− x0) + 4.3a4(x− x0)2
+ · · ·+ n.(n− 1)an(x− x0)n−2
⇒ f ′′(x0) =P ′′n (x0) = 2a2
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
◮ Seguindo o mesmo racioc´ınio
f ′′′(x) = P ′′′n (x) =3.2a3 + 4.3.2a4(x− x0)
+ · · ·+ n.(n− 1).(n− 2)an(x− x0)n−3
⇒ f ′′′(x0) = P ′′′n (x0) =3.2a3
...
f (k)(x) = P (k)n (x) =k!ak + (k + 1)!ak+1(x− x0) + . . .
⇒ f (k)(x0) =P (k)n (x0) = k!ak
◮ Logo, tem-se que
f (k)(x0) = k!ak
ak =
f (k)(x0)
k!
, 0 ≤ k ≤ n
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
◮ Seja f(x) uma func¸a˜o n vezes diferencia´vel, enta˜o
Pn(x) = a0 + a1(x− x0) + a2(x− x0)2 + · · ·+ an(x− x0)n
=
n∑
k=0
ak(x− x0)k
onde
ak =
f (k)(x0)
k!
, 0 ≤ k ≤ n
e´ Polinoˆmio de Taylor de grau n para f(x) em torno de x0
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
◮ Ou seja, o Polinoˆmio de Taylor de grau n para f(x) em torno de x0
pode ser definido como
Pn(x) =f(x0) + f
′(x0)(x− x0) +
f
′′
(x0)
2
(x− x0)2
+ · · ·+ f
(n)(x0)
n!
(x− x0)n
◮ Ou de forma simplificada como
Pn(x) =
n∑
k=0
f (k)(x0)
(x− x0)k
k!
onde
◮ f (0)(x) = f(x)
◮ 0! = 1
Heder S. Bernardino Ca´lculo Nume´rico
Polinoˆmios de Taylor
Polinoˆmios de Taylor
◮ O caso particular em que x0 = 0, ou seja,
Pn(x) =
n∑
k=0
f (k)(0)
(x− 0)k
k!
=
n∑
k=0
f (k)(0)
xk
k!
e´ chamado de Polinoˆmio de MacLaurin
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
◮ Exemplo 1
Encontre o Polinoˆmio de Taylor linear (grau 1) que aproxima
f(x) = ex em torno do ponto x0 = 0.
◮ Soluc¸a˜o:
P1(x) = 1 + x
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
◮ Exemplo 1 – Observac¸a˜o geome´trica
A equac¸a˜o da reta e´ dada por
T (x) = a0 + a1x
◮ Determinando a reta tangente a` func¸a˜o f(x):
◮ A reta deve passar pelo ponto (x0, f(x0)), ou seja,
f(x0) = a0 + a1x0
◮ O coeficiente angular e´ dado por f ′(x)
◮ Usando como base o ponto de refereˆncia enta˜o a1 = f
′(x0)
◮ Finalmente,
f(x0) = a0 + f
′(x0)x0 ⇒ a0 = f(x0)− f ′(x0)x0
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
◮ Exemplo 1 – Observac¸a˜o geome´trica
◮ Definidos a0 e a1, reta tangente a f(x) fica enta˜o definida como
T (x) = a0 + a1x⇒ T (x) = f(x0)− f ′(x0)x0 + f ′(x0)x
⇒ T (x) = f(x0) + f ′(x0)(x− x0)
◮ Sendo o Polinoˆmio de Taylor linear dado por
P1(x) = f(x0) + f
′(x0)(x− x0)
enta˜o e´ poss´ıvel observar que o polinoˆmio que aproxima a func¸a˜o e´ a
reta tangente a f(x) no ponto x = x0
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
1 #include <stdio.h>
2 #include <math.h>
3 //inclui biblioteca para gerar graficos
4 #include <plplot/plplot.h>
5 //numero de pontos
6 #define N 101
7
8 //retorna o menor valor de um vetor
9 PLFLT retorna_menor( PLFLT a[ ], int n ) {
10 int i;
11 PLFLT menor = a[ 0 ];
12 for(i=1; i<n; i++) {
13 if ( a[ i ] < menor ) {
14 menor = a[ i ];
15 }
16 }
17 return menor;
18 }
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos – continuac¸a˜o
1 //retorna o maior valor de um vetor
2 PLFLT retorna_maior( PLFLT a[ ], int n ) {
3 int i;
4 PLFLT maior = a[ 0 ];
5 for(i=1; i<n; i++) {
6 if ( a[ i ] > maior ) {
7 maior = a[ i ];
8 }
9 }
10 return maior;
11 }
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos – continuac¸a˜o
1 //desenha grafico com duas linhas
2 void desenhar_grafico_2linhas( float x[ ], float f[ ], float approx[ ] ) {
3 PLFLT xmin = x[ 0 ]; //limites do eixo x
4 PLFLT xmax = x[ N-1 ];
5 PLFLT ymin;//limites do eixo y
6 PLFLT ymax;
7 PLFLT aux;
8 PLFLT xPL[N]; //vetor x de valores reais (PLFLT)
9 PLFLT fPL[N]; //vetor f para guardar os valores de f(x) = exp(x)
10 PLFLT approxPL[N]; //vetor p1 para guardar as aproximacoes de f(x)
11 int i; //variavel para a estrutura de controle
12
13 //copia os vetores
14 for(i=0; i<N; i++) {
15 xPL[ i ] = x[ i ];
16 fPL[ i ] = f[ i ];
17 approxPL[ i ] = approx[ i ];
18 }
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos – continuac¸a˜o
1 //determina o menor valor no eixo y do grafico
2 ymin = retorna_menor( fPL, N );
3 aux = retorna_menor( approxPL, N );
4 if ( aux < ymin ) {
5 ymin = aux;
6 }
7 //determina o maior valor no eixo y do grafico
8 ymax = retorna_maior( fPL, N );
9 aux = retorna_maior( approxPL, N );
10 if ( aux > ymax ) {
11 ymax = aux;
12 }
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos – continuac¸a˜o
1 //desenha o grafico
2 plinit();
3 plenv( xmin, xmax, ymin, ymax, 0, 0 );
4 pllab( "x", "y", "Serie de Taylor -- Polinomio Linear" );
5 plcol0( 1 );
6 plline( N, xPL, fPL );
7 plcol0( 3 );
8 plline( N, xPL, approxPL );
9 plend();
10 } // fim da funcao desenhar_grafico_2linhas
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos – continuac¸a˜o
1 //popula um vetor com valores igualmente espacados em um intervalo
2 void popula_valores_igualmente_espacados( float xmin, float xmax, int n,
3 float x[ ] ) {
4
5 int i; //variavel para a estrutura de controle
6 float passo = ( xmax - xmin ) / ( n - 1 );
7 x[ 0 ] = xmin;
8 for(i=1; i<n; i++) {
9 x[ i ] = x[ i-1 ] + passo; //determina o proximo x
10 }
11
12 }
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos – continuac¸a˜o
1 //calcula a aproximacao de uma exponencial usando Taylor
2 float exp_taylor_p1( float x ) {
3 return 1 + x;
4 }
5
6 int main() {
7 float x[ N ]; //vetor x de valores reais
8 float f[ N ]; //vetor f para guardar os valores de f(x) = exp(x)
9 float p1[ N ]; //vetor p1 para guardar as aproximacoes de f(x)
10 int i; //variavel para a estrutura de controle
11
12 popula_valores_igualmente_espacados( -2, 2, N, x );
13 for(i=0; i<N; i++) {
14 f[ i ] = exp( x[ i ] ); //calcula f(x)
15 p1[ i ] = exp_taylor_p1( x[ i ] ); //calcula a aproximacao de f(x)
16 }
17 desenhar_grafico_2linhas( x, f, p1 );
18 return 0;
19 }
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
◮ Exemplo 2
Encontre o Polinoˆmio de Taylor quadra´tico (grau 2) que aproxima
f(x) = ex em torno do ponto x0 = 0.
◮ Soluc¸a˜o:
P2(x) = 1 + x+
x2
2
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
−2.0 −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5 2.0
x
−1
0
1
2
3
4
5
6
7
8
y
f(x)
P_1(x) = 1 + x
P_2(x) = 1 + x + (x*x)/2
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
◮ Exemplo 3
Encontre o Polinoˆmio de Taylor de grau n que aproxima f(x) = ex
em torno do ponto x0 = 0.
◮ Soluc¸a˜o:
Pn(x) =
n∑
k=0
xk
k!
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
1 //calcula a aproximacao de uma exponencial usando Taylor
2 float exp_taylor( float x, int n ) {
3 float fatorial = 1.0;
4 float termo = 1.0;
5 float resultado = termo;
6 int i;
7 for(i = 1; i <= n; i++) {
8 fatorial = fatorial * i;
9 termo = termo * x;
10 resultado = resultado + termo / fatorial;
11 }
12 return resultado;
13 }
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos – continuac¸a˜o
1 int main() {
2 float x[ N ]; //vetor x de valores reais
3 float f[ N ]; //vetor f para guardar os valores de f(x) = exp(x)
4 float pn[ N ]; //vetor p1 para guardar as aproximacoes de f(x)
5 int i; //variavel para a estrutura de controle
6 int grau = 4; //grau do polinomio
7
8 popula_valores_igualmente_espacados( -2, 2, N, x );
9 for(i=0; i<N; i++) {
10 f[ i ] = exp( x[ i ] ); //calcula f(x)
11 pn[ i ] = exp_taylor( x[ i ], grau ); //calcula a aproximacao
12 }
13
14 desenhar_grafico_2linhas( x, f, pn );
15 return 0;
16 }
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos – Polinoˆmio de Grau 4
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
−2.0 −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5 2.0
x
−1
0
1
2
3
4
5
6
7
8
y
f(x)
P_1(x)
P_2(x)
P_3(x)
P_4(x)
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
◮ Exemplo 4
Encontre o Polinoˆmio de Taylor de grau 2n+ 1 que aproxima
f(x) = sen(x) em torno do ponto x0 = 0.
◮ Soluc¸a˜o:
P2n+1(x) =
n∑
k=0
(−1)k x
2k+1
(2k + 1)!
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
−4 −3 −2 −1 0 1 2 3 4
x
−8
−6
−4
−2
0
2
4
6
8
y
sen(x)
P_1(x)
P_3(x)
P_5(x)
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
◮ Exemplo 5
Encontre uma aproximac¸a˜o para f(6) sabendo que:
◮ f(4) = 125
◮ f ′(4) = 74
◮ f ′′(4) = 30
◮ f ′′′(4) = 6
◮ as derivadas de ordem superior sa˜o nulas
◮ Soluc¸a˜o:
f(6) ≈ P3(6) = 341
Heder S. Bernardino Ca´lculo Nume´rico
Exemplos
Exemplos
◮ Exemplo 6
Calcule uma aproximac¸a˜o para
√
3 sabendo que
√
4 = 2.
◮ Soluc¸a˜o:
P1(x) =
x+ 4
4√
3 ≈ P1(3) = 1,75
Heder S. Bernardino Ca´lculo Nume´rico
Revisa˜o
Revisa˜o
Heder S. Bernardino Ca´lculo Nume´rico
Revisa˜o
Revisa˜o
◮ O Polinoˆmio de Taylor de grau n para f(x) em torno de x0 pode ser
definido como
Pn(x) =
n∑
k=0
f (k)(x0)
(x− x0)k
k!
◮ Os Polinoˆmios de Taylor foram definidos de modo que
f (k)(x0) = P
(k)
n (x0), 0 ≤ k ≤ n
Heder S. Bernardino Ca´lculo Nume´rico
Revisa˜o
Revisa˜o
◮ Ao adotar Polinoˆmios de Taylor, pode-se observar que
◮ A qualidade da aproximac¸a˜o e´ proporcional ao grau do polinoˆmio
◮ O erro da aproximac¸a˜o e´ proporcional a` distaˆncia entre o ponto x a ser
avaliado e x0
◮ Para determinar Pn(x) apenas os valores da func¸a˜o a ser aproximada e
de suas derivadas no ponto x0 sa˜o necessa´rios
◮ O conhecimento das expresso˜es anal´ıticas na˜o e´ requerido
Heder S. Bernardino Ca´lculo Nume´rico
Revisa˜o
Du´vidas?
Heder S. Bernardino Ca´lculo Nume´rico
	Aula Anterior
	Introdução
	Polinômios de Taylor
	Exemplos
	Revisão

Continue navegando