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

如何在python中定义周期函数?,python,lambda,Python,Lambda,如何在python中定义周期函数,例如“锯齿”函数 f(x)=x,对于-π

如何在python中定义周期函数,例如“锯齿”函数


f(x)=x,对于-π
你能用lambda函数来实现吗

作为一个普通函数,您还可以将模(
%
)与浮点一起使用:

from math import pi

def f(x):
    return (x+pi) % (2*pi) - pi
这很容易转化为lambda表达式:

lambda x: (x+pi) % (2*pi) - pi

您可以编写一个函数,该函数包含一个函数和一个句点,并返回一个函数:

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)

您可以使用装饰器:

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

一个非常简单的方法是将输入限制在第一个周期。迭代删除一个句点,直到输入在定义的值内。例如,以下示例给出了周期为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
def(t):
当t>2*np.pi时:
t=t-2*np.pi

如果0.0 plz explain
2-pi周期性地在IR上继续
对于lambda可能会很棘手,但我会尝试使用mathmodule2中的fmod pi周期性地在IR上继续(所有实数的集合),这意味着f(x)是为所有实数x定义的,而且f(x)等同于f(x+2pi)@AhsanulHaque:我相信“IR”用作“的ASCII近似值”ℝ" 这里。您不需要Python3免责声明:
%
在Python2和Python3中都适用于浮点数。我认为您需要
(x+pi)%(2*pi)-pi
以获得正确的结果。@:你是对的。只是快速绘制了一个图…谢谢并更新了。+1好主意!
费用
使用起来很奇怪。你的意思是
expanse
范围
?(我可能会称之为
周期性的
,或者
周期性的
)你还想用
(x-a)%interval
替换
x%interval
,我想。@MarkDickinson谢谢你的更正。噢,我糟糕的英语技能>\u oha,现在缺少了一个ly:D,但装饰器的使用很好!偏移量是多少?