Реализовать функцию, оперирующую векторами длины n

Рейтинг: 0Ответов: 1Опубликовано: 31.03.2023

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

Примеры результатов вычислений:

f([0.78, 0.26, 0.24, -0.51]) = -3.91e+01

f([-0.46, -0.17, -0.26, -0.96]) = -1.95e+04

f([-0.28, -0.42, -0.85, 0.49]) = -8.06e+03

f([0.62, 0.91, -0.97, 0.98]) = -4.42e+04

f([0.33, 0.98, 0.48, 0.23]) = -2.55e-01

пробовал:

import math
def f(x):
    n = len(x)
    res = 0
    for i in range(1, n+1):
        index = n+1-math.ceil(i/2)
        res += (1-7*x[index]**2-x[index]/38)**3
    return 61*res

выводит:

    Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    f([0.78, 0.26, 0.24, -0.51])
  File "C:\Users\rhodonited\AppData\Local\Programs\Python\Python310\python-homework.py", line 44, in f
    res += (1-7*x[index]**2-x[index]/38)**3
IndexError: list index out of range

Ответы

▲ 0Принят

Вычтите 1 из index ещё, потому что в питоне индексы считаются с нуля. Ну то есть range и прочее оставьте как есть, чтобы по формуле всё было, а вот индекс при обращении к x нужно уменьшать на 1, поэтому проще всего и правильнее будет в конце подсчёта index вычесть 1:

index = n+1-math.ceil(i/2) - 1
                          ^^^^