函数的重复调用
许多程序中涉及迭代过程. Nest 和 NestList 可以进行有效的迭代.
重复调用一元函数.
Nest[f, x, n] 将
f 对
x 复合
n 次.
| Out[1]= |  |
| Out[2]= |  |
| Out[4]= |  |
Nest 和 NestList 对函数进行确定数目的复合. 有时需要对函数进行多次复合直到它不再变化为止. FixedPoint 和 FixedPointList 可以实现这一功能.
将函数复合到结果不变为止.
用牛顿迭代法求

的近似值.
从

开始迭代5次.
| Out[6]= |  |
| Out[7]= |  |
| Out[8]= |  |
| NestWhile[f,x,test] | 重复运用函数 f,不断迭代直到 test 不为 True 时结束 |
| NestWhileList[f,x,test] | 产生迭代序列 ,直到 test 不为 True 时结束 |
| NestWhile[f,x,test,m], NestWhileList[f,x,test,m] |
| 每一步迭代中将 m 个最新的结果作为 test 的自变量进行判断 |
| NestWhile[f,x,test,All], NestWhileList[f,x,test,All] |
| 将迭代产生的所有结果代入 test 自变量中进行判断 |
重复迭代直到某一条件不成立时停止.
重复作用函数

直到结果不是偶数时停止.
| Out[10]= |  |
| Out[11]= |  |
| Out[12]= |  |
Nest 等重复作用一元函数 f,每次作用中都是将前一次的结果作为 f 的自变量.
将这一过程推广到二元函数是非常重要的,碰到的问题是每次迭代只产生一个新结果,而二元函数有两个自变量,解决这一问题的一个途径就是作用迭代列中相邻的两个结果.
| FoldList[f,x,{a,b,...}] | 产生迭代序列  |
| Fold[f,x,{a,b,...}] | 用 FoldList[f, x, {a, b, ...}] 产生迭代序列中的最后一项 |
对二元函数进行迭代的方法.
| Out[13]= |  |
| Out[14]= |  |
| Out[15]= |  |
用 Fold 和 FoldList 可以在 Mathematica 中写出高效的程序. 在某些情况下,把 Fold 和 FoldList 当作由第二个变量作为索引用来产生一个函数系列的简单嵌套是有益的.
定义函数

.
| Out[18]= |  |