сумма кубов по формуле - PullRequest
       2

сумма кубов по формуле

0 голосов
/ 11 октября 2019

Учитывая

\sum_{k=0}^{n}k^3 = \frac{n^2(n+1)^2}{4}

Мне нужно вычислить левую часть. Я должен составить список первых 1000 целочисленных кубов и суммировать их. Тогда я должен вычислить правую часть и к тому же. Кроме того, я должен сравнить вычислительное время для вышеуказанных методов.

То, что я до сих пор сделал, это:

import time 
start = time.clock()


list = []
for n in range(0,1001):
    list.append(n**3)
print(list)
print("List of the first 1000 integer cubes is:",list, "and their sum is:", sum(list))

stop = time.clock() 
print("Computation time: ",stop-start, "seconds.")

a=0
for n in range (0,1001):
    a=(int)(n*(n+1)/2)
print ("Sum of the first 1000 integer cubes is:",a*a)

Первая часть для левой стороны работает нормально, но проблема в правой стороне. Когда я наберу n = 4, я получу одинаковый результат для обеих сторон, но проблема возникает, когда n большое, потому что я получаю, что одна сторона больше другой, то есть они не одинаковы.

Также, вы можете помочь мне создать список для правой стороны, я пытался сделать что-то вроде этого:

a=[]
for n in range (0,10):
    a.append(int)(n**2(n+1)**2/4)

Но это не работает.

В течение вычислительного времени, я думаю, я должен установить еще один таймер для правой стороны, но опять же я не уверен, как их сравнивать.

Любой совет приветствуется,

1 Ответ

0 голосов
/ 12 октября 2019

Хорошо, я думаю, что вы пробовали в цикле for совершенно неправильно. Если вы хотите доказать формулу «трудный путь» (неиндуктивный способ) - вам нужно просто сложить кубы из n первых целых чисел и сравнить ее с вашей формулой - рассчитывается один раз (не суммируется n раз).

Итак, оцените:

n=100
s=0
for i in range(1,n+1):
    s+=i**3
###range evaluates from 1 till n if you specify it till n+1
s_ind=(n**2)*((n+1)**2)/4

print(s==s_ind)

В противном случае, если предполагается использовать индукцию - все это на бумаге, т.е. базовое условие a_1=1^3=((1)*(2)^2)/4=1 и условие шага, например a_n-a_(n-1)=sum(i^3)[i=1,...,n]-sum(j^3)[i=1,...,n-1]=n^3 (и что оно также выполняетсяпри условии a_n = ваша формула здесь (какой спойлер предупреждает - это делает;))

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...