生成周期函数用的小东西。。。
mathematica吧
全部回复
仅看楼主
level 10
mm_酱 楼主
可能有人需要:
code:
=====================================================================
Clear[periodic];periodic[func_, {val_Symbol, min_?NumberQ, max_?NumberQ}] /; (max > min && ! FreeQ[func, val]) := Module[{interval, shift, shiftmin, shiftfunc}, interval = max - min; If[min < 0, shift = interval Ceiling[-min/interval], shift = 0]; shiftmin = min + shift; shiftfunc = func /. val -> val - shift; shiftfunc /. val -> (Mod[val - max, interval] + shiftmin) ];periodic[___] := Print["Wrong Input!"];
=====================================================================
用法示例:

2013年03月30日 06点03分 1
level 9
精简版(无错误控制):[大笑][大笑][大笑]
myperiodic[func_, {val_Symbol, min_?NumberQ, max_?NumberQ}] :=
func /. (val :> Mod[val - min, max - min] + min)

2013年03月30日 06点03分 2
膜拜,我脑抽了。
2013年03月30日 07点03分
我的数学拙计啊。。。[啊!]
2013年03月30日 07点03分
感谢楼主,请问两个自变量三维作图的话,函数要怎么定义~
2015年04月15日 08点04分
吧务
level 12
@愿卿长安康
这是二元的情形
periodicfunction[
func_, {x_Symbol, xmin_?NumberQ, xmax_?NumberQ}, {y_Symbol,
ymin_?NumberQ, ymax_?NumberQ}] :=
func /. Thread[{x, y} ->
Mod[{x, y} - {xmin, ymin}, {xmax - xmin, ymax - ymin}] + {xmin,
ymin}]
当然也可以推广到多元的情形
periodicfunction[
func_, {x : {PatternSequence[_Symbol] ..},
xmin : {PatternSequence[_?NumberQ] ..},
xmax : {PatternSequence[_?NumberQ] ..}}] :=
func /. Thread[x -> Mod[x - xmin, xmax - xmin] + xmin]
2015年04月15日 11点04分 4
level 1
嗯嗯,谢谢楼主~
2015年04月30日 15点04分 5
level 7

喜欢
2015年11月02日 10点11分 7
level 10
膜拜,我脑抽了。
2015年12月24日 07点12分 8
1