Юлия: Наличие функции путем суммирования по массиву функций - PullRequest
0 голосов
/ 02 марта 2019

У меня есть массив функций, и я хочу создать другую функцию, используя взвешенную сумму по этим функциям.Допустим, T=[T1, ..., T20] и T1(x,y)=x^2+5, T2(x,y)=sin(x+y), ...

Я хочу создать другую функцию с именем g(x,y)=10*T1(x,y)+...+32*T20(x,y).коэффициенты могут измениться, поэтому я хочу использовать какой-то цикл, но я не смог.

1 Ответ

0 голосов
/ 03 марта 2019

Это моя попытка, возможно, есть лучшее решение.

Если вы можете изменить подпись 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.

...