如何在python中定义周期函数?
如何在python中定义周期函数,例如“锯齿”函数如何在python中定义周期函数?,python,lambda,Python,Lambda,如何在python中定义周期函数,例如“锯齿”函数 f(x)=x,对于-π
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 explain2-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,但装饰器的使用很好!偏移量是多少?