监控和选择算法

在 Wolfram 语言中函数被仔细地创建,因此用户通常不知道这些函数内部如何运作. 但是特别地,对于使用迭代算法的数值函数来说,有时候能够监控这些算法的内部运行进展是很有用的.

StepMonitor当采取一个成功的步进时,所计算的表达式
EvaluationMonitor当输入的函数被计算时,所计算的表达式

监控数值函数进度的选项.

这里显示每采取一个步进的时候,所对应的 值.
In[1]:=
Click for copyable input
Out[1]=

注意到使用 而不是 是很重要的. 用户需要延时规则 以使 expr 在每次使用而不是在给出规则的时候计算.

ReapSow 提供了方便的方式来对采取的步进生成列表.
In[2]:=
Click for copyable input
Out[2]=
这里计算步进数目.
In[3]:=
Click for copyable input
Out[3]=

要对一个答案采取成功的步进,有时候迭代数值算法必须对给定的函数做一些计算. 有时候,这是因为每个步进的需要,例如,从函数值的差异估计导数,并且有时候这是因为要采取一个成功的步进需要做多次尝试.

这里显示在获得答案的时候所采取的成功的步进.
In[4]:=
Click for copyable input
Out[4]=
这里当函数每次计算时都进行显示.
In[5]:=
Click for copyable input
Out[5]=
在 Wolfram 语言中算法实现的计算模式可以相当复杂.
In[6]:=
Click for copyable input
Out[6]=
Method->Automatic自动地选择方法(默认)
Method->"name"指定要使用的明确方法
Method->{"name",{"par1"->val1,}}指定方法的更多详细信息

Method 选项.

对于特定类型的数值计算,经常有一些已知的不同方法. 通常 Wolfram 语言支持在已有文献中被最广泛使用的成功算法,以及那些没有广泛被使用的算法. 对于任何特定问题,它通常以相当大的努力自动挑选最好的方法. 但是如果用户对一个问题掌握了丰富的知识,或者用户正在研究符合自身利益的数值方法,用户可能会发现明确告诉 Wolfram 语言应该使用什么方法是有益的. 函数参考页面列出了 Wolfram 语言内置的一些方法;其它函数在 "数值及相关函数" 中或其它高等文档中进行讨论.

这里使用方法 求解微分方程,并且返回步进数目和所需计算数目.
In[7]:=
Click for copyable input
通过自动选择的方法,得到了所需的步进和计算数目.
In[8]:=
Click for copyable input
Out[8]=
这表明使用其它一些可能的方法会发生的情况. 自动选中的 Adams 方法是最快的.
In[9]:=
Click for copyable input
Out[9]=
这表明当差分阶数的参数改变时,使用明确 RungeKutta方法会发生什么情况.
In[10]:=
Click for copyable input
Out[10]=