Author : zbzhen, Modified : Mon Nov 13 01:02:43 2023
更多GeoGebra相关教程, 请参考
https://kz16.top/ggb/ggbpptReadMe.html
GeoGebra循环稍微有点麻烦, 通常的办法有
zip
sequence
iteration
iterationList
repeat
execute
在 JavaScript
中使用 for
求自然数累加序列
[0, 1, 3, 6, 10, 15, 21, ...]
import numpy as np np.cumsum(range(8))
a=0..8 l1=Zip(Sum(a, k),k,1..length(a))
这种方法容易想到, 但是计算效率低
a=0..8 l2=sequence(Sum(a, k),k,1,length(a))
本质上和第一种方法差不多, 缺陷也是效率低
a = 0..8 l3=Iteration(join(k,Last(k)+a(1+Length(k))),k,{first(a)},length(a)-1) l4=Iteration(Flatten({k,Last(k)+a(1+Length(k))}),k,{first(a)},length(a)-1)
a = 0..8 l5=x(iterationList(k+(a(y(k)),1),k,{(a(1),2)},length(a)-1))
上面的代码对于a
取一般的列表也成立
求累加序列的算法复杂度为, 如果用第一二种办法, 则把复杂度提高到, 很明显是不合理的, 但是后面的迭代方法写起来比较繁琐
已知数列的首项为, 满足, 求该数列
python解法为
a=[1] for i in range(2, 5): a.append(a[-1] + 1/i)
这种问题直接用列表循环是不好处理的, 需要用到迭代
a1=Iteration(join(k,Last(k)+1/(1+Length(k))),k,{{1}},5) a2=x(iterationList(k+(1/y(k),1),k,{(1,2)},5))
已知数列满足, , , 求该数列
a=[1,1] for i in range(3, 8): a.append(a[-1] - a[-2] + 1/i)
方法不唯一, 但都不简单, 例如
a1=Iteration(append(k,element(k,Length(k))-element(k,Length(k)-1)+1/(1+Length(k))),k,{{1, 1}},5) a2=x(iterationList((y(k), y(k)-x(k)+1/(z(k)), z(k)+1),k,{(1,1,3)},5))