繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM