Faça uma função LeibnizPImod(erro) para retornar PI com erro menor do que o parâmetro passado. Por exemplo se você gerar 3.1409 com k termos e 3.1414 com
1 termos então se o erro aceitável for 0.01 você já pode retornar o valor de PI aproximado com k+1 termos. Naturalmente, se o erro for 0.000001 você terá que verificar as diferenças e aumentar o número de erros para que o número retornado seja preciso.
Passo 1
Beleza, vamos lá! O exercício pede para a gente criar uma função chamada
LeibnizPImod
que calcula o valor de PI usando a série de Leibniz. A ideia é continuar somando os termos dessa série até que o erro, ou seja, a diferença entre duas aproximações consecutivas, seja menor que o valor que a gente passar como parâmetro. Para resolver isso, vamos precisar entender como funciona a série de Leibniz e como implementar um controle de erro na nossa função.Passo 2
Primeiro, vamos lembrar o que é a série de Leibniz para calcular PI. A série é uma forma infinita de somar termos que convergem para PI. A fórmula da série de Leibniz é:
Cada termo adicional que a gente soma traz uma aproximação um pouco mais precisa de PI. O sinal dos termos alterna entre positivo e negativo.
Passo 3
Agora, vamos pensar em como implementar isso em uma função. A função
LeibnizPImod
vai receber um parâmetro chamado erro
, que é o valor máximo de diferença aceitável entre duas aproximações consecutivas de PI. A função vai começar somando os termos da série até que a diferença entre o valor atual e o valor anterior seja menor que esse erro
.Passo 4
Vamos começar a implementar a função. Precisamos de algumas variáveis: uma para armazenar o valor atual de PI, outra para o valor anterior, e uma para contar o número de termos que já somamos. Além disso, vamos precisar de uma variável para controlar o sinal dos termos (positivo ou negativo).
Passo 5
Dentro da função, inicializamos as variáveis:
pi_atual = 0
: para acumular a soma dos termos da série.pi_anterior = 0
: para guardar o valor da soma anterior.k = 0
: contador de termos.sinal = 1
: para alternar entre positivo e negativo.
Passo 6
Agora, vamos criar um loop que continuará executando enquanto a diferença entre
pi_atual
e pi_anterior
for maior ou igual ao erro
passado. Dentro do loop, atualizamos pi_anterior
com o valor de pi_atual
, somamos o próximo termo da série à pi_atual
, alternamos o sinal, e incrementamos o contador k
.Passo 7
A fórmula para o próximo termo é:
Multiplicamos esse termo por 4 ao final para obter a aproximação de PI. Então, a cada iteração, fazemos:
E depois de sair do loop, multiplicamos
pi_atual
por 4 para obter o valor final de PI.Passo 8
Por fim, retornamos o valor de PI multiplicado por 4 e o número de termos usados para chegar a essa aproximação. Isso ajuda a entender quão precisa foi a nossa estimativa em relação ao erro especificado.
Resposta
Pronto! A função
LeibnizPImod
calcula o valor de PI usando a série de Leibniz e para quando a diferença entre duas aproximações consecutivas for menor que o erro especificado. Aqui está o código em Python:def LeibnizPImod(erro):
pi_anterior = 0
pi_atual = 0
k = 0
sinal = 1
while True:
pi_atual += sinal / (2 * k + 1)
pi_atual_valor = 4 * pi_atual
if k > 0:
diferenca = abs(pi_atual_valor - pi_anterior)
if diferenca < erro:
return pi_atual_valor, k + 1
pi_anterior = pi_atual_valor
sinal *= -1
k += 1
Essa função retorna uma aproximação de PI com o erro menor que o especificado e também o número de termos utilizados para alcançar essa precisão.
Exercícios relacionados
Faça uma função contaNumerosA(d, a, b) para retornar a quantidade de números múltiplos de d no intervalo [a…b]
Faça uma função contaNumerosB(d1, d2, a, b) para retornar a soma dos números múltiplos de d1 ou de d2 no intervalo [a…b]
Faça uma função somaDiv
para retornar a soma dos divisores de um número n incluindo o número um e excluindo o próprio número
Considere a fórmula de Leibniz para calculo do valor de PI.
Faça uma função LeibnizPI(termos) que retorne o valor de PI calculado
com o número de termos passado como parâmetro.
Ex: termos então vai usar os termos
e
para calcular PI
Faça uma função LeibnizPI(termos) que retorne o valor de PI calculado
com o número de termos passado como parâmetro.
Ex: termos