我有一个函数数组,我想对这些函数使用加权和来制作另一个函数。假设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)
的函数。系数可能会发生变化,所以我想使用某种循环,但是我不能。
答案 0 :(得分:4)
这是我的尝试,可能有更好的解决方案。
如果可以更改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
。