朱莉娅绝对是新人,有一个问题要问你。
我正在通过移植我的一些 Mathematica 和 Python 代码(主要是物理学中的科学计算等)来自学一些 Julia,然后看看是什么。到现在为止,事情还算顺利。而且很快。到目前为止。
现在,我正在模拟一个基本的锁定放大器,它本质上接受一个可能非常复杂的时间相关信号Uin(t),并产生一个输出,Uout(t)在某个参考频率上锁相fref(也就是说,它突出显示的分量Uin(t),与参考正弦波有一定的相位关系)。描述无关紧要,重要的是它基本上是通过计算积分来实现的(为了清楚起见,我实际上在这里省略了阶段):

因此,我在 Mathematica 和 Julia 中开始并测试了这一点:我定义了一个模型Uin(t),传递了一些参数值,然后Uout(t)在时间t = 0为fref.
Julia:我使用QuadGK包进行数值积分。
T = 0.1
f = 100.
Uin(t) = sin(2pi * f * t) + sin(2pi * 2f *t)
Uout(t, fref)::Float64 = quadgk(s -> Uin(s) * sin(2pi * fref * s), t-T, t, rtol=1E-3)[1]/T
frng = 80.:1.:120.
print(@time broadcast(Uout, 0., frng))
Run Code Online (Sandbox Code Playgroud)数学
T = …Run Code Online (Sandbox Code Playgroud)