Como escrever uma série de Taylor com Python
Hemera Technologies/AbleStock.com/Getty Images
Uma série de Taylor é a representação de uma função por meio de uma soma infinita. Os computadores geralmente aproximam os valores de uma função trigonométrica, exponencial ou outra transcendental por meio de um número finito de termos da série de Taylor correspondente, e você pode recriar esse processo no Python. Os termos da soma estão baseados em derivadas sucessivas da função e, portanto, você precisará identificar um padrão nos valores das mesmas para escrever uma fórmula para cada termo da série. Depois, você usará um laço para acumular a soma, controlando a precisão de sua aproximação com a quantidade de iterações.
Step 1
Consulte a definição da série de Taylor para entender como cada termo pode ser calculado. Cada um deles está indexado, normalmente com "n", e o seu valor se relaciona com a derivada de ordem "n" da função a representar. Para simplificar, use 0 para o valor de "a" na sua primeira tentativa. Essa versão especial da série de Taylor é chamada "série de MacLaurin". Use a função "seno", pois as derivadas sucessivas são fáceis de determinar.
Step 2
Escreva vários valores da derivada "n" da função seno avaliada em 0. Se "n" for igual a 0, o valor será 0. Para n=1, o valor será 1. No caso n=2, o valor será 0. Quando n=3, o valor será -1. O padrão se repete a partir daqui, portanto, você poderá eliminar todos os termos com índice par na série de Taylor, pois estará multiplicada por 0. A fórmula para cada termo da série resultante será:
(-1)^n/(2n+1)!*x^(2n+1)
Se usa "2n+1" em vez de "n" para reindexar a série, eliminando efetivamente os termos de índice par sem alterar os índices em si. O fator "(-1)^n" permite alternar o signo dos termos sucessivos. Essa lição de matemática pode parecer estranha, mas o código do Python será muito mais fácil de ser escrita e reutilizada em outras séries se o índice começar sempre em 0 e for incrementada em 1.
Step 3
Abra o intérprete do Python. Comece digitando os seguintes comandos para definir as variáveis:
sum = 0 x = .5236
A variável "sum" será utilizada para acumular a suma da série de Taylor com cada iteração do cálculo do termo. A variável "x" é o ângulo (em radianos) para o qual você quer aproximar a função seno. Defina outro valor, se quiser.
Step 4
Importe o módulo "math", por meio do comando abaixo, para obter acesso às funções "pow" (potência) e "factorial" (fatorial):
import math
Step 5
Abra um laço "for", estabelecendo a quantidade de interações com a função "range":
for n in range(4):
Isso fará com que a variável do índice, n, comece em 0 e seja incrementada até 4. Esta quantidade reduzida de iterações causará um resultado surpreendentemente preciso. O laço não se executará imediatamente e não começará até que você especifique o bloco de código a iterar.
Step 6
Digite o seguinte comando para acumular o valor de cada termo sucessivo à variável "sum":
sum += math.pow(-1,n)/math.factorial(2n+1)math.pow(x,2*n+1)
O comando deverá ter um espaço prévio para indicar ao Python que é parte do laço "for". Note também que as funções "pow" e "factorial" são usadas em vez da notação "^" e "!". A fórmula à direita do operador de assignação "+=" é idêntica à do passo 2, mas escrita com a sintaxe do Python.
Step 7
Pressione "Enter" para adicionar uma linha vazia. O Python interpretará isso como o final do laço "for" e executará os cálculos. Digite o comando "sum" para revelar o resultado. Para o valor de "x" dado no passo 3, o resultado será muito próximo a .5, o valor do seno de pi/6. Tente novamente com diferentes valores para "x" e para diferente número de iterações do laço, e compare os resultados com a função "math.sin(x)". Você acabou de implementar no Python o mesmo processo que muitos computadores usam para calcular valores para o seno e outras funções transcendentais.
Referências
Dica
- Deixe um espaço e digite o comando "sum" na segunda linha do laço "for" para que o resultado da execução do código seja exibido. Isso mostrará como cada termo sucessivo da série aproxima a soma mais e mais do valor real da função.
Sobre o Autor
Michael Carroll is a high school mathematics teacher. He has written for various websites since 2010, specializing in programming, web design, electronics and various pieces of software. He holds a bachelor's degree in electrical engineering from the University of Texas, with specialization in embedded system design.
Créditos Fotográficos
Hemera Technologies/AbleStock.com/Getty Images