uk702
发表于 2021-2-20 10:07:36
GP 代码:
\\ 定义 x@y=(x+y)/(1+xy),求 2@5@8...@n
f(n)=fold((x,y)->(x+y)/(1+x*y), vector(floor(n/3), i, 3*i-1))
f(10)
Julia:
f(x,y)=(x+y)//(1+x*y)
n=10;foreach(println, Iterators.accumulate(f, 2:3:n))
Mathematica:
f := Fold[(#1 + #2)/(1 + #1 #2) &, Range]
f(10)
王守恩
发表于 2023-2-14 18:36:25
mathematica 发表于 2021-1-27 12:54
容易观测到以4位周期
\[\begin{array}{llllll}
3 & \frac{5}{7} & 5 & \left(
尊敬的 mathematica!新年好!您在哪里?想你了!!!
我想把10楼的“复制代码”作点变化,怎么都没成功。
haifeng
发表于 2023-2-15 13:13:26
# 使用 Calculator 的 printRecursiveSeries() 函数. (目前暂时只能处理形如 h_{n+1}=f(h_n) 的递推公式, 其中 f() 为一元有理函数.)
# 第一个参数是迭代式, 例如 $a_{n+1}=\frac{a_n+n+1}{1+a_n*(n+1)}$, 则输入 (a_n+n+1)/(1+a_n*(n+1))
# 第二个参数是通项 $a_n$, 则输入 a_n
# 第三个参数指初始值 $a_1=0$, $n$ 默认从 1 开始.
# 第四个参数表示要打印的项数.
# 第五个参数可选, 表示分隔符. 可以输入 \n, \t, \n\n, 或其他符号
# 由于要输出分数形式, 故先进入分数计算模式
>> :mode=fraction
>> printRecursiveSeries((a_n+n+1)/(1+a_n*(n+1)),a_n,0,10,\n)
输出如下:
0|1
2
5|7
11|9
7|8
11|10
27|29
37|35
22|23
28|27
------------------------
若上面的 10 改为 2021, 则最后输出
。。。
970718|970717
1943405|1943407
1945379|1945377
973675|973676
974663|974662
1951299|1951301
1953277|1953275
977626|977627
978616|978615
1959209|1959211
1961191|1961189
981585|981586
982577|982576
1967135|1967137
1969121|1969119
985552|985553
986546|986545
1975077|1975079
1977067|1977065
989527|989528
990523|990522
1983035|1983037
1985029|1985027
993510|993511
994508|994507
1991009|1991011
1993007|1993005
997501|997502
998501|998500
1998999|1999001
2001001|2000999
1001500|1001501
1002502|1002501
2007005|2007007
2009011|2009009
1005507|1005508
1006511|1006510
2015027|2015029
2017037|2017035
1009522|1009523
1010528|1010527
2023065|2023067
2025079|2025077
1013545|1013546
1014553|1014552
2031119|2031121
2033137|2033135
1017576|1017577
1018586|1018585
2039189|2039191
2041211|2041209
1021615|1021616
------------------------
By Calculator