如何修复 Plots 中的噪声 [julia]

How to fix noise in Plots [julia]

我有一个函数是由另一个函数随机生成的。 我的目标是让该函数生成大约 10 次,并找到所有这些函数的期望值。

这是我的问题: 每当我尝试直接绘制一个随机函数(例如通过绘制生成函数)时,一切都很完美,但是当我尝试在中间使用某种函数时,一切都会走下坡路。


我想也许,因为生成的函数使用了我在其中声明的一些变量,所以当您尝试将它传递给下一个函数时,它可能会出现某种问题,但即使我避免使用其中的变量仍然很奇怪


工作代码:

plot(generatingFunction())

错误代码:

function R(x)            
     generatingFunction()(x)
end
plot(R)

working code plot bad code plot

Julia 总是 在将参数传递给函数之前评估它的参数。因此,当您调用 plot(generatingFunction()) 时,它与执行以下操作相同:

f = generatingFunction()
plot(f)

相比之下,当您将函数的创建 - generatingFunction() - 放在另一个函数中时,Julia 将 创建一个新版本时间 R 被调用了!

function R(x)
     f = generatingFunction()            
     f(x)
end
plot(R)

你真正想要的是将f创建移动到R的计算之外——你可以将此作为const 全局或作为捕获的闭包。后者的典型习语是这样的:

let
    f = generatingFunction()
    global function R(x)
        f(x)
    end
end