[英]How to define periodic function in python?
你怎么能在python中定义一个周期函数,例如“锯齿”函数?
f(x) = x,对于 –π < x < π 和 2-pi 在 IR 上周期性地继续
你能用 lambda 函数做到这一点吗?
作为普通函数,您也可以将模数 ( %
) 与浮点数一起使用:
from math import pi
def f(x):
return (x+pi) % (2*pi) - pi
这很容易转化为 lambda 表达式:
lambda x: (x+pi) % (2*pi) - pi
您可以使用装饰器:
def periodically_continued(a, b):
interval = b - a
return lambda f: lambda x: f((x - a) % interval + a)
@periodically_continued(-1, 1)
def f(x):
return x
g = periodically_continued(0, 1)(lambda x: -x)
assert f(2.5) == 0.5
assert g(2.5) == -0.5
您可以编写一个函数,它接受一个函数和一个句点,并返回一个函数:
import math
def periodic_function(func, period, offset):
return lambda x: func( ((x - offset) % period ) + offset )
然后使用它:
sawtooth = periodic_function(lambda x: x, 2*math.pi, math.pi)
一个非常简单的方法是将输入限制在第一个时期。 迭代删除一个周期,直到输入落在定义的值内。 例如,以下示例给出了一个周期为 2*pi 的方波。
def f(t):
while t>2*np.pi:
t=t-2*np.pi
if 0.0 <= t <=np.pi:
return 1.0
else:
return -1.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.