一组数字的循环输出
如1,0,1,0,1,1,0,1,0,1……或着是0,0,1,0,1,0,0,1,0,1……
都是五个一循环,五个一循环。他们之间好像存在某种联系,但又不是那么明显,即使使用奇偶性调控也无法实现。
对与1,0,1,0,1,1,0,1,0,1……这组数字的公式表达是:
f=[3*(n+4)/5]-[3*(n+3)/5]
n f
1 1
2 0
3 1
4 0
5 1
6 1
7 0
8 1
9 0
10 1
11 1
对于0,0,1,0,1,0,0,1,0,1……这组数组的公式表达是:
f=[2*(n+5)/5]-[2*(n+4)/5]
n f
1 0
2 0
3 1
4 0
5 1
6 0
7 0
8 1
9 0
10 1
11 0
有什么发现吗?表达式的通式为f=[p*(n+a)/q]-[p*(n+b)/q],这里的[ ]是取整的意思,在数学中称之为高斯函数
由于数组的循环是以五个出现的,而q就是5。但这是为什么呢?是不是当数组以6个循环,q就等于6呢?
答案是正确,以几个数字循环,q就等于几!那p又有什么用呢?p与q的组合可以说是关键。
n+a,n+b为未知数,
设x=5*k+h(x,k,h皆为整数)----------5就是q
很显然,x%5=h=0,1,2,3,4.
这五个值分别乘以同一个纯小数y,将产生不同的值g,而由于y的大小问题,将使得结果在某些值上进位
0
1
y*h 2 = g
3
4
例如:y=0.6,h为5的余数0,1,2,3,4
G=0.6*x [G] [Gn+1]-[Gn]=t
g1=0.6*0=0 [g1]=0
g2=0.6*1=0.6 [g2]=0 [g2]-[g1]=0
g3 =0.6*2=1.2(进位) [g3]=1 [g3]-[g2]=1
g4 =0.6*3=1.8 [g4]=1 [g4]-[g3]=0
g5 =0.6*4=2.4(进位) [g5]=2 [g5]-[g4]=1
g6 =0.6*5=3.0(进位) [g6]=3 [g6]-[g5]=1
g7 =0.6*6=3.6 [g7]=3 [g7]-[g6]=0
g8 =0.6*7=4.2 (进位) [g8]=4 [g8]-[g7]=1
g9 =0.6*8=4.8 [g9]=4 [g9]-[g8]=0
g10 =0.6*9=5.4(进位) [g10]=5 [g10]-[g9]=1
g11 =0.6*10=6.0 (进位)[g11]=6 [g11]-[g10]=1
规律出来了对吧!其实 G=0.6*x=0.6*( 5*k+h )=3k+0.6*h 其规律就来源于0.6*h的进位效果
现在我们来解析一下公式:f=[p*(n+a)/q]-[p*(n+b)/q]
n+a,n+b就是x(a,b的作用是起调控作用,以控数组首项处在你想要的循环位置上),p/q=0.6,所以a,b起调控作用需要具体加减,关键是要找到这个小数,以实现进位的效果,q很容易找到,就是有几个数字循环,q就等于几。
那p呢?我们在看看序列
对与1,0,1,0,1,1,0,1,0,1……这组数字的公式表达是:
f=[3*(n+4)/5]-[3*(n+3)/5]
对于0,0,1,0,1,0,0,1,0,1……这组数组的公式表达是:
f=[2*(n+5)/5]-[2*(n+4)/5]
在数组中,数组元素的和好像就是q,哈哈!或许你还不清楚q为何会等于数组元素和的原因,由于你要进位,你进了多少为当然就产生多少1喽,于是q便等于和喽
例如:1,0,1,0,1这个循环,你必然要进位3次,经历1-0,2-1,3-2这三个阶段对吧?
q与0.6*h是对应的,h便是p的几个余数,即0.6p=q。
或许看了这么久,你觉得该数组的循环输出作用不大?
0,0,1,1,2,3,3,4,4,5……你能表达吗?其实不就在上面吗?用一个取整函数做到了,
甚至一些不是以0,1这样进位的也可以做到,只需在[p*(n+a)/q]前面加个z[p*(n+a)/q]便可以了,具体的应用就要靠你去挖掘了,在计算某一天是星期几的蔡勒公式就用到了该方法(http://download.csdn.net/detail/zhouyumengdie/9553975)文档已经上传有兴趣的同学可以看看,附件里面也有
表达式的通式为f=z([p*(n+a)/q]-[p*(n+b)/q])
拓展 =[r*(n+c)/s]([p*(n+a)/q]-[p*(n+b)/q])