--- title: Mathematica中一些有用的函数 description: 作为个人使用的技巧存档 date: 2025-04-15 21:56:00 +0800 categories: [计算机, 数学] tags: [计算机, 数学] math: true --- {% raw %} ## 函数映射 ### 基础 1. `@`即前缀运算符: `f@x`等价于`f[x]`. 2. `Map[f,expr]`或`f/@ expr`,将`expr`中每个元素用`f`作用. - 特别的,`f/@ {a,b,c}`就是`{f[a], f[b], f[c]}`. - 对于单层情况,即`f/@ g[a,b,c]`会变成`g[f[a],f[b],f[c]]` - `Map[f,expr,level]`将`f`作用到`expr`的`level`层. 3. `Apply[f,expr]`或`f@@ expr`,将`expr`的头部用`f`替换 - 对于单层,`f@@ g[a,b,c]`即`f[a,b,c]`.因此`g`是`List`且`f`是多元函数时,这相当于对列表计算. 4. `MapApply[f,expr]`或`f@@@ expr`,将`expr`的第**1**层表头替换为`f`. - 因此对单层不起作用: `f@@@ {a,b,c}`仍为`{a,b,c}`. - 对于高层,如二层: `f@@@ {{a,b},{c,d}}`为`{f[a,b],f[c,d]}`. - 换言之,即对"列表"中每个子列表元素作用. ### 技巧 1. `Through`提供如下方法: ```mathematica Through[p[f,g,...][a,b,...]] ``` 将`p[f,g]`中的每个元素作用到后面的`[a,b]`上,变成 ```mathematica p[f[a,b,...],g[a,b,...],...] ``` 若取`p`为`List`,则上述可变为 ```mathematica Through@ {f,g,h}[a,b,c] {f[a,b,c], g[a,b,c], h[a,b,c]} ``` {% endraw %}