如何在 Fortran 中定义周期函数?

How to define periodic function in Fortran?

如何在 Fortran 中定义周期函数?

例如,f(x) = exp(-x**2),对于 –10 < x < 10 句点 20.

你应该可以使用 MODULO

f = exp(-(MODULO(x-10,20.)-10.)**2)

x-10 用于将重复间隔移动到 -10,10。否则,MODULO(x, 20.) 将在间隔 0,20 上周期性出现。因为 MODULO 返回值 [0,20),最后的 -10 将其转换为 [-10,10)

我假设 x 是 real。如果它有不同的种类甚至不同的类型,MODULO 的另一个参数必须是相同的类型(20._wp, 20.d0, 20,...) 根据需要。最后的 -10. 也可能必须调整为更高一类。