Я новичок в python, и я пытаюсь смоделировать сходимость ряда к пи на основе определенного термина. Мне удалось создать список, который возвращает приблизительное значение для пи на каждой итерации, однако я изо всех сил пытаюсь создать список, который возвращает разницу между приближением для пи и math.pi. Я понимаю, что код в настоящее время просто зацикливает термин ошибки для одного значения пи, и я не знаю, как перебрать его по n значениям пи. Я уверен, что это простое исправление, на которое я просто не обращаю внимания, поэтому любая помощь будет принята с благодарностью. Вот мой код:

from math import pi
from math import factorial

def term_in_series_1(n):
    values=[] 
    for k in range (n, -1,-1): #Here we are creating a for loop starting at n, finishing at -1 with a stepsize of -1
        value_of_term_n = 2 * 2**k * (factorial(k))**2 / factorial(2*k+1) #The loop uses this equation to calculate the value term of n for values in the range of n 
        values.append(value_of_term_n) #The append function allows each new value term of n to be added to the empty list "values" with length n
    return values

def series_1(n):
    approximation_for_pi = sum(term_in_series_1(n)) #This line is taking the sum of all the values in the series calulated in the previous function
    return approximation_for_pi

def error_1(j):
    values=[] 
    for i in range (j):
        for k in range (n):
            value_of_error_1 = pi - series_1(n) #The loop uses this equation to calculate the value term of n for values in the range of n 
            values.append(value_of_error_1) #The append function allows each new value term of n to be added to the empty list "values" with length n
        return values
error_1(15)
0
LEJ2474 4 Май 2021 в 00:59

1 ответ

Лучший ответ

Этот код кажется проблемой:

for i in range (j):
    value_of_error_1 = pi - series_1(n)

У вас есть переменная итерации i, но ссылка на n возникла из ниоткуда. Предполагая, что переменная итерации должна быть n, вот переделка вашего кода:

from math import pi, factorial

def term_in_series_1(n):
    values = []

    for k in range(n, -1, -1):
        value_of_term_n = 2 * 2**k * factorial(k)**2 / factorial(2*k+1)
        values.append(value_of_term_n)

    return values

def series_1(n):
    return sum(term_in_series_1(n))

def error_1(j):
    errors = []

    for n in range(j):
        errors.append(pi - series_1(n))

    return errors

print(error_1(10))
1
cdlane 3 Май 2021 в 22:10