朱莉娅:通过对一系列函数求和来获得函数

时间:2019-03-02 18:07:48

标签: function julia

我有一个函数数组,我想对这些函数使用加权和来制作另一个函数。假设T=[T1, ..., T20]T1(x,y)=x^2+5T2(x,y)=sin(x+y),...

我想创建另一个名为g(x,y)=10*T1(x,y)+...+32*T20(x,y)的函数。系数可能会发生变化,所以我想使用某种循环,但是我不能。

1 个答案:

答案 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