Это моя попытка, возможно, есть лучшее решение.
Если вы можете изменить подпись g:
g(x, y, weights, T) = sum(weights[i]*Ti(x,y) for (i,Ti) in enumerate(T))
Если вам нужна именно эта подпись g(x,y)
, Я предлагаю функцию генератора:
generate_g(weights, T) = (x,y) -> sum(weights[i]*Ti(x,y) for (i,Ti) in enumerate(T))
Вы передаете в нее веса, и она возвращает новую функцию, которая принимает x и y в качестве аргументов.Вот пример
julia> T1(x,y)=x^2+5; T2(x,y)=sin(x+y); T=[T1, T2];
julia>g = generate_g([10,11], T)
#3 (generic function with 1 method)
julia> g(1,2)
61.55232008865854
При изменении весов вы можете сгенерировать новый g
.