В настоящее время я пытаюсь создать лямбда-функцию, которая будет передавать переменную как функции, являющейся входом для лямбдифицированной функции, так и самой самой лямбдифицированной функции.Моя версия Python - 2.7, а моя версия - 1.3.
Я могу заставить функцию lambdify (f) работать правильно, когда передан правильный аргумент (Y).Затем я пытаюсь создать лямбда-функцию, которая передаст переменную (z) в функцию (controlFunc), которая затем будет введена в мою функцию lambdify (f).
Проблема заключается в том, что лямбдаФункция будет использовать последнюю функцию lambdify на каждой итерации (что и должно быть) И обновлять все ПРЕДЫДУЩИЕ лямбда-функции, чтобы использовать также последнюю функцию lambdify.Я считаю, что это не ошибка в моем коде, но я легко могу ошибаться.
Я попытался установить функцию lambdify в vasriable, а затем сделать из нее функцию lambda.Я попытался использовать всю функцию lambdify в функции лямбда.Я даже пытался использовать списочное понимание (я считаю, что это правильный термин) для оценки каждой лямбда-выражения лямбда в списке.
import sympy as sy
import numpy as np
r,s,t,v,w,x,y = sy.symbols('r,s,t,v,w,x,y')
variables = [[t,v,w,x,y]]
inputs = [[r,s]]
L = [[]]
controlledSim = True
ctrl_input = [[10., 10.]]
def controlFunc(x,controlDict):
return ctrl_input[0]
control = [controlFunc for i in range(10)]
controlDict = []
func = [sy.Matrix([[1.*r*s*t*v*w*x*y],
[2.*r*s*t*v*w*x*y],
[3.*r*s*t*v*w*x*y],
[4.*r*s*t*v*w*x*y],
[5.*r*s*t*v*w*x*y]])]
X = [1.,1.,1.,1.,1.]
Y = [1.,1.,1.,1.,1.,10.,10.]
for j in range(len(L)):
if controlledSim == True:
func[j] = list(func[j])
temp = [[] for i in range(len(func[j]))]
f = [[] for i in range(len(func[j]))]
for i in range(len(func[j])):
f[i] = sy.lambdify([np.append(variables[j],inputs[j])], func[j][i])
temp[i] = lambda z: f[i](np.append(z,control[i](z,controlDict)))
func_lambda = lambda z: np.array([lamb(z) for lamb in temp]).T
Я знаю, что вывод func_lambda (X) должен быть массивом[100., 200., 300., 400., 500.].
Мои текущие результаты представляют собой массив [500., 500., 500., 500., 500.].