Baixe o app para aproveitar ainda mais
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
Compartilhar