函数的重复调用

许多程序中涉及迭代过程. NestNestList 可以进行有效的迭代.

Nest[f,x,n]fx 复合 n
NestList[f,x,n]产生列表 ,其中 f 最多复合 n

重复调用一元函数.

Nest[f, x, n]fx 复合 n 次.
In[1]:=
Click for copyable input
Out[1]=
给出函数的复合序列.
In[2]:=
Click for copyable input
Out[2]=
定义一个简单函数.
In[3]:=
Click for copyable input
Nest 对函数进行迭代.
In[4]:=
Click for copyable input
Out[4]=

NestNestList 对函数进行确定数目的复合. 有时需要对函数进行多次复合直到它不再变化为止. FixedPointFixedPointList 可以实现这一功能.

FixedPoint[f,x]f 复合到结果不变为止
FixedPointList[f,x]产生 f 的复合序列 直到结果不变为止

将函数复合到结果不变为止.

用牛顿迭代法求 的近似值.
In[5]:=
Click for copyable input
开始迭代5次.
In[6]:=
Click for copyable input
Out[6]=
使用函数 FixedPoint,自动继续运用 直到结果不再变为止.
In[7]:=
Click for copyable input
Out[7]=
给出迭代序列.
In[8]:=
Click for copyable input
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 自变量中进行判断

重复迭代直到某一条件不成立时停止.

产生一个函数,其功能为对一个数除以2.
In[9]:=
Click for copyable input
重复作用函数 直到结果不是偶数时停止.
In[10]:=
Click for copyable input
Out[10]=
重复使用 直到相邻两结果相同为止,正如 FixedPointList 中的一样.
In[11]:=
Click for copyable input
Out[11]=
重复迭代到结果与前面某一次结果相同时结束.
In[12]:=
Click for copyable input
Out[12]=

Nest 等重复作用一元函数 f,每次作用中都是将前一次的结果作为 f 的自变量.

将这一过程推广到二元函数是非常重要的,碰到的问题是每次迭代只产生一个新结果,而二元函数有两个自变量,解决这一问题的一个途径就是作用迭代列中相邻的两个结果.

FoldList[f,x,{a,b,...}]产生迭代序列
Fold[f,x,{a,b,...}]FoldList[f, x, {a, b, ...}] 产生迭代序列中的最后一项

对二元函数进行迭代的方法.

FoldList 应用举例.
In[13]:=
Click for copyable input
Out[13]=
Fold 给出由 FoldList 产生的最后一项.
In[14]:=
Click for copyable input
Out[14]=
产生求和序列.
In[15]:=
Click for copyable input
Out[15]=

FoldFoldList 可以在 Mathematica 中写出高效的程序. 在某些情况下,把 FoldFoldList 当作由第二个变量作为索引用来产生一个函数系列的简单嵌套是有益的.

定义函数 .
In[16]:=
Click for copyable input
定义另一个内置函数 FromDigits.
In[17]:=
Click for copyable input
下面是具体函数操作的例子.
In[18]:=
Click for copyable input
Out[18]=
New to Mathematica? Find your learning path »
Have a question? Ask support »