2012-03-22

Mathematica Tips - 1

    注意空格,养成书写严格形式的习惯!
   
    (*不要轻易使用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]
       
    [[]]与[[{}]]的区别,后者有「头部」
    要特别注意「层数」的概念!

没有评论:

发表评论