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