注意空格,养成书写严格形式的习惯!
(*不要轻易使用MatrixForm命令*)
(*使用Take需注意层数*)
局部变量(染成绿色):
In[2]:= m = i^2
Out[2]= i^2
在块内 i+m 的计算过程中,i 用了局部值.
In[3]:= Block[{i = a}, i + m]
Out[3]= a + a^2
这里仅明显出现在 i+m 中的 i 被当作局部变量处理.
In[4]:= Module[{i = a}, i + m]
Out[4]= a + i^2
->和:>区别:
-> 在首次输入时计算;:> 在使用时计算:
In[6]:= {x, x, x, x} /. x -> RandomReal[]
Out[6]= {0.339388, 0.339388, 0.339388, 0.339388}
In[5]:= {x, x, x, x} /. x :> RandomReal[]
Out[5]= {0.715386, 0.330938, 0.828099, 0.762862}
Mathematica将向量、矩阵均视为张量处理;与MatLab不同。
数值计算的结果精度不比在变量精度的基础上判断的结果高!
随机数设定种子!
@@用来替换函数头部:
In[2]:= f @@ {a, b, c, d}
Out[2]= f[a, b, c, d]
/@用来映射函数体
In[1]:= Reverse /@ {{a, b}, {c, d}, {e, f}}
Out[1]= {{b, a}, {d, c}, {f, e}}
@,@@,/@区别:
In[4]:= f@g[a, b, c, d]
Out[4]= f[g[a, b, c, d]]
In[5]:= f @@ g[a, b, c, d]
Out[5]= f[a, b, c, d]
In[6]:= f /@ g[a, b, c, d]
Out[6]= g[f[a], f[b], f[c], f[d]]
/.用来替换表达式中的某个变量
In[2]:= {x, x^2, y, z} /. x -> {a, b}
Out[2]= {{a, b}, {a^2, b^2}, y, z}
f[##]& 纯函数,##:所有参量
In[5]:= f[##] & /@ {a, b, c}等价于In[5]:= f[##] & [Sequence[{a, b, c}]]
Out[5]= {f[a], f[b], f[c]}
In[4]:= f[##] &[a, b, c]
Out[4]= f[a, b, c]
MapIndexed传递2个参数:[list,{list num}]
表达式中可以用Print 函数输出:
Do[If[PrimeQ[2^n - 1], Print[n]], {n, 50, 100}]
Show可以显示多个图形
Show[g1,g2,...]
Nest可以重复调用函数:
Nest[Framed, x, 6]
[[]]与[[{}]]的区别,后者有「头部」
要特别注意「层数」的概念!