Я пытаюсь написать программу, которая вычисляет сумму бесконечного ряда a ^ n / b ^ (n-1) от n = 1 до бесконечности, завершается и выдает ошибку значения, когда она расходится. Вот что у меня есть:
def compute_sum(a, b, tolerance=1e-5):
n=1.
computed_sum = 0.
previous_sum = 0.
while (n>0.):
previous_sum = computed_sum
computed_sum += a**n / b**(n-1.)
n=n+1.
if (computed_sum - previous_sum < tolerance or computed_sum - previous_sum < -tolerance):
raise ValueError()
return computed_sum
Предполагается, что l oop заканчивается, когда разница между вычисленной суммой и предыдущей суммой меньше заданного допуска. Если я удалил оператор if и вычислил его с a = -2 и b = 3 и, используя time (n <9999), я получу точный ответ. </p>
Я просто не знаю, как выйти из l oop, если он расходится или разница меньше заданного уровня допуска.
По крайней мере, я направляюсь в правильном направлении или мой подход совершенно неверный? Какая здесь методология?
Спасибо!