Galera, estou resolvendo o seguinte exercício de um livro:
"Escreva um programa que encontre o valor da expressão image, com a precisão da linguagem, onde -1 < x < 1. Dica: a série se constitui da seguinte forma: x1 + x3 + x5 + x7 …. Se o usuário digitar um valor para x que não satisfaça a condição |x|<1 (valor absoluto de x deve ser menor do que 1), então o programa deve indicar um erro e terminar a execução sem tentar realizar o cálculo, porque caso contrário, ele ficaria em repetição infinita."
Meu algoritmo é esse daqui:
x = float(input("Insira o valor de x[-1< x < 1]: "))
if(abs(x) < 1):
i = 0
termo = 0
serie_anterior = x ** (2 * i + 1)
serie_atual = x ** (2 * i + 1)
while(serie_anterior != serie_atual or i <= 1):
print("Série Anterior:{:.15f} - Série Atual:{:.15f}".format(serie_anterior,serie_atual))
i += 1
termo = round(x ** (2 * i + 1),15)
serie_anterior = round(serie_atual,15)
serie_atual = round(serie_atual + termo,15)
print("Valor de X: {} - Valor da série: {:.15f}".format(x,serie_atual))
else:
print("Houve um erro na inserção de x!!!")
Acontece que quando insiro valores para teste, eles diferem muito dos valores apresentados pelo autor do livro. Alguém conseguiria me dizer se existe erro de lógica? Ou a diferença deve ser apenas pelo arredondamento? Eu usei 15 casas pois não sei se minha versão atual do python trabalha com 15 casas.