函数
FindMinimum、
FindMaximum 和
FindRoot 具有
HoldAll 属性,因此对它们参数的计算具有特殊的语义. 首先,变量由第二个参数确定,然后被局部化. 其次,函数先进行符号化计算,然后处理成用以进行数值计算的有效形式. 最后,在命令的执行过程中,该函数使用不同的数值值反复计算. 下表列出了上述步骤以及进一步的说明.
FindFit 不具有
HoldAll 属性,因此它的参数在命令开始之前都被计算. 但是,它使用如上所述所有步骤,除了一个例外,即它不进行计算函数,而是根据模型函数,变量,和所提供的数据构建一个函数来进行极小化.
有时候,您要防止进行符号计算,这往往是当您的函数不是一个明确的公式,而是通过运行一个程序所得的一个值. 我们通过一个例子来显示会发生什么情况,以及如何防止符号计算.
在
FindRoot 之外有一个简单的函数定义的一个优点是,它可以独立地被测试,以确保它就是您的目的所在.
看起来似乎符号计算只是创造了麻烦,因为您必须专门地定义函数来避免它. 然而,如果没有符号计算,
Mathematica 很难利用它的综合了数值和符号功能的独特优势. 符号计算意味着命令可以持续利用来自符号分析带来的好处,比如算法决定,导数的自动计算,自动优化和编,以及结构分析.