簡體   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