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