Для l oop в математической записи - PullRequest
0 голосов
/ 14 июля 2020

Может ли кто-нибудь сказать мне, как я могу написать следующее в математической нотации

for x in (range(1,n)):
    var1=1
    var2=0

    var1*=x
    var2+=x
    
    Var3+=var1/var2

Я пробовал SUM ((n!) / SUM (n), но, похоже, не могу получить тот же ответ.

Заранее благодарю

Ответы [ 3 ]

0 голосов
/ 14 июля 2020
import math
return sum([i/j for i, j in zip([math.factorial(i) for i in range(1, n)], [(i)(i+1)/2 for i in range(1, n)])])

Это более простой способ сделать это, но он менее читабелен. Это хорошо? Дважды проверьте, что он выводит правильный номер, но это должно быть.

0 голосов
/ 14 июля 2020

При выходе из l oop и при условии, что Var3 инициализирован в 0, Var3 будет равен n-1. (Бьюсь об заклад, это не то, что вы ожидаете.)

Если переместить (повторные) инициализации из l oop, формула будет

введите описание изображения здесь

0 голосов
/ 14 июля 2020

Sum (n) ничего за вас не сделает. Вы хотите найти сумму (a_1 / b_1 + ... + a_n / b_n), где a_i - это i! а b_i - сумма всех чисел от 1 до i. Упрощенная формула для этого - n (n + 1) / 2. Чтобы понять, почему это работает, подумайте о сопоставлении первого и последнего элементов, второго и второго последнего, et c, пока вы не сложите все пары n / 2. Сумма каждой пары равна n + 1, а их n / 2, поэтому n (n + 1) / 2 - это общая сумма. Следовательно, мы можем express var3 как:

import math #for factorial function
var3 = 0 #im assuming it starts at 0 
for i in range(1, n):
    var3 += math.factorial(i)/((n)(n-1)/2)
...