Рекуррентное соотношение Python
Дано натуральное n и действительные числа a1, a2,...,an . Вычислить:
Сам цикл, вроде как, написал правильно, уже несколько часов сижу над самим значением zi, рекурретном соотношении. В этом и вся проблема. Никак не могу понять как его правильно записать. Мой код:
import math
import random
n = int(input("n: "))
items = [random.randint(0, n) for i in range(n)]
suma = 0
for i in range(1, n+1)
suma += (z - math.sqrt(z))**2
print(suma)
import math
import random
n = int(input("n: "))
items = [random.randint(0, n) for i in range(n)]
suma = 0
for i in range(1, n+1):
z = value if 0 < value < 25 else 2.7
suma += z - math.sqrt(z)
print(suma)
Пробывал так, ошибка
Ответы (3 шт):
так?
sum = 0
for value in arr:
z = value if 0 < value < 25 else 2.7
sum += (z - math.sqrt(z))**2
При больших n нет смысла заменять числа на 2.7, а потом каждый раз считать корни и квадраты из 2.7. Cначала отбираем те, что от 0 до 25, и потом подсчитываем сколько раз надо добавить (2.7 - sqrt(2/7))**2. Вам понадобится больше памяти, но вычисления будут быстрее.
И кстати - что делать, если вдруг число в списке равно 0?? Из условия неясно.
import math
import random
n = int(input("n = "))
a = float(input("a = "))
items = [random.uniform(-a, a) for i in range(n)]
upwork = []
cur_i = 0
for element in items:
if 0 < element < 25:
upwork.append(element)
# здесь len(upwoprk) чисел не равны 2,7. Остальные n - len(upwork) должны равняться 2,7
summ = 0
for z in upwork:
summ += (z - math.sqrt(z))**2
summ += (n - len(upwork)) * (2.7 - math.sqrt(2.7))**2
print(summ)
Ошибка в вашем втором примере состоит в том, что переменная value не определена. Вместо value надо использовать items[i]
import random
import math
n = int(input("n: "))
items = [random.randint(0, n) for i in range(n)]
suma = 0
for i in range(n):
z = items[i] if (0 < items[i] < 25) else 2.7
suma += (z - math.sqrt(z))**2
print(suma)
