В Python существует проблема, заключающаяся в оценке функции по списку чисел, которые предоставляются в качестве входных данных для следующей функции:
f (y) = sin (3y + pi / 3)+ cos (4y - pi / 7)
Я не думаю, что в StackOverflow доступны инструменты MathJax, поэтому вышесказанное - лучшее, что я могу сделать.
Для этой функции предусмотрено четыре выхода:Массив или список, содержащий значения, полученные функцией для каждого элемента входного списка, минимальное и максимальное значения в выходном массиве / списке и массив или список различий между последовательными значениями, полученными функцией.
Вот код на данный момент.Мы предполагаем, что только разумные входные данные передаются в функцию.
import sympy
def minMaxDiffValues(lst):
y = sympy.symbols('y')
f = sympy.sin(3*y + sympy.pi/3) + sympy.cos(4*y - sympy.pi/7)
values = []
for n in lst:
values.append(f.subs(y,n))
differences = []
for i in range(len(values) - 1):
differences.append(values[i + 1] - values[i])
print values
print min(values)
print max(values)
print differences
Насколько я знаю, приведенный выше код выполняет свою работу;Я решил работать со списками, хотя я знаком с NumPy.Я заменю операторы print одним оператором return;сейчас я печатаю выходные данные, чтобы убедиться, что они правильные.
Единственная проблема заключается в том, что проблема не позволяет использовать циклы;таким образом, я не уверен, как подойти к такой проблеме для первой и последней выходов функции.
Можно ли написать вышеуказанную функцию без использования каких-либо циклов?