mathematica内置函数概览
MMA 内置的函数帮助文档MMA 安装好后自带的说明文档在 path/to/mma/version/Documentation/ChineseSimplified 中, Packages 是内置的包文件夹, 在 MMA 中按 F1 出现的帮助文档大多来自 System 文件夹中. System 文件夹中有数据样本, 笔记样本页, 用户指南, 一些问题的处理方法专题笔记, 参考页面和教程类笔记页.
= 与 := 的区别这段主要讲函数定义时, = 与 := 的区别. 先看两段代码
123456ClearAll[f];x = 3;f[x_] := 5 x;f[5]?f(*25*)
然而
123456ClearAll[f];x = 3;f[x_] = 5 x;f[5]?f(*15*)
在 MMA 中, := 用于延时计算, 也就是当左边表达式出现时, 先用右边表达式替换, 然后重新计算表达式的值. 而 = 则在函数定义时就将右边表达式的值算好赋值给左边, 函数定义中的参数 x_ 其实并没有起任何作用, 表示函数的定义域是任意表达式.
在上面用 = 定义的函数的自变量是一种模式, _ 是模式匹配符号. 比如将上面的定义换成 f[x_String]=5x, 则只有 f 作用在字符串上时, 函数的值才会是 15, 否则就不计算其值. 而事实上, 将 x_String 中的 x 删去也无妨, 因为它并不起任何作用.
123456ClearAll[f];x = 3;f[x_String] = 5 x;f[5]f["5"]?f
有时我们需要进行函数迭代运算, 迭代过程中的某些函数值可能会经常被计算, 比如
12345ClearAll[FibonacciF];FibonacciF[1] = FibonacciF[2] = 1;FibonacciF[n_ /; n > 2] := FibonacciF[n - 1] + FibonacciF[n - 2];?FibonacciFTracePrint[FibonacciF[5]]
其中 TracePrint 打印出 MMA 在计算 FibonacciF[5] 时的计算过程. 如果要计算前几个 Fibonacci 数列的值, 位于前面的 FibonacciF[n] 会被重复计算多次. 为了避免重复计算造成的资源浪费, ...