Интерактивное построение "многоступенчатой" функции с использованием лямбда-функций в python - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь создать функцию, которая является функцией «r» и принимает два массива параметров r0 и V, а также n, который является количеством элементов r0.

Функция определяется следующим образом: если r ниже r[0], возвращается V[0]; если r находится между r[0] и r[1], вернуть V[1] и т. д. и, наконец, если r выше r[n], вернуть V[n+1]. Это иллюстрирует функцию, определенную вручную для n = 3:

Multiple step function n = 3

Вот пример кода, который я пытался сделать с помощью лямбда-функций:

n = 3
r0 = [10,30,60]
V = [1., -5. , 10., 3. ]

def makefn(r0, V):
    return lambda r : (V[0]-V[1])/2 if r < r0[0] else (V[1]-V[0])/2

for i in range(n):
    temp_function[i] = makefn(r0[i:i+1],V[i:i+2])

step_function = lambda r : (V[0]+V[-1])/2 + [temp_function[i](r) for i in range(n)]

Проблемы следующие: - Я не знаю, как заранее выделить список функций, поэтому он возвращает "" temp_function "undefined." «- Я не знаю, как« добавлять »функции, чтобы они объединяли результат.

Есть идеи, как исправить этот код?

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