转自:http://blog.sina.com.cn/s/blog_5f234d470102v1wk.html
notebook简介
Mathematica的工作环境就叫notebook,这也是M启动后默认打开的界面,保存后的文件后缀名为.nb。大部分输入和输出都是在这里完成的。
Enter键用来换行。而不能用于显示本行的结果,如果要想实现这个功能,需使用shift+Enter。
% 是上一次计算的输出结果,%%是上上次的结果,以此类推;对于Out[n]的输出结果,可以使用%n
注释:(*这里都是注释*)
当计算器使
加、减、乘、除、乘方:
2+3
2-3
2*3
2/3
2^3
阶乘的写法和数学写法一样:5!。当然,!还有其他用法,比如逻辑否定,2!=3将返回True
可以使用括号:2^(1+2)
两个表达式间的空格被解释为*,比如x y等于x*y,而xy则被认为是一个名为xy的变量。有时候,空格是不必要的。比如,2Sin[x]直接就被解释为2*Sin[x],在乘法的解释方法上,特别类似于自然语言。
n++, n--, n*=i这些类C++的用法,在Mathematica中都是支持的。
几种括号的含义
[],所有的函数体都用方括号
{},列表(list),这是Mathematica中最重要的数据结构
(),就是普通的括号,用于改变优先级
数值近似,常量
Mathematica轻易不显示分数、函数等的数值近似解,如果非要显示,就要使用显式的方法:N[1/3,10],上式和1/3 //10效果一样,都是求出1/3的前10位小数。//后面会讲到,它是一个后缀用法。
Mathematica内置的常量有:
Pi,E,I,GoldenRatio分别为圆周率、自然对数底、虚数单位、黄金分割率。
Mathematica中可以直接输入希腊字母等特殊符号。两种方法,第一种:先按一下Esc,然后其英文拼法的第一个字母,基本就都联想出来了。有一些符号,还有缩写输入法。比如,输入α的方法:Esc-a-Esc;第二种,用转义符号\,差不多所有特殊符号都是用[]括起来的,比如α,输入方法:\[Alpha],大写的希腊字母前加Capital,比如大写α,输入方法:\[CapitalAlpha]
内置函数,文档帮助
常用的函数,都已经内置写成。所有的内置函数名,都是以大写字母开头,并且函数名一般比较长,能够望文知意。比如:
Sqrt、Abs、Sign、Exp、Sin、Floor
Log[x]是自然对数,其他底的对数为Log[b,x]
除了这些较为常用的函数,还有一些不太常用但很著名的函数,Mathematica都予以了实现提供:
Fibonacci、LegendreP、BernoulliB、Zeta等
@可以替代[],比如Sin[x]也可以写为Sin@x,这种用法可以减少键盘的使用次数,很简便,但是也容易引起混乱,所以,尽量少用。
后缀标记//有时候特别有用,比如expr//f,等同于f[expr]。Mathematica提供的这种用法,让我们使用它的时候可以随着思考而立即实现。比如,我们已经通过一些代码得到了一个表达式,突然想到,我最后需要一个化简的形式。如果是常规的函数实现,过程应该是这样:
已有代码:
some code;
expr
更改代码的作法:
some code;
Simplify[expr]
采用Mathematica的后缀作法呢,可以这样:
some code;
expr//Simplify
纸面上看,并不明显。不过,你如果从键盘上敲一下,就能体会了。
在需要帮助的内容前面加一个或者两个问号来获得文档帮助:?Sqrt
如果记不清,可以使用通配符:?Plot*
请自己试一试一个问号?Plot和两个问号??Plot的输出结果有什么区别?
查看Mathematica的一些内部实现方法,可以使用FullForm函数,比如:
FullForm[1/2]返回Rational[1,2];
定义函数,求函数值
示例:
f[x_]:=x^2-2x+6
变量后面一定要有下划线,定义符号是:=,而不是一个等号。
函数求值,非常简单,比如f[3]就是f在3处的值;f[a]就是f在a处的值。
列表List
列表是Mathematica中最常用的,也是最重要的数据结构,用大括号围起来:
{1,3,5,7}
{1,3}不等于{3,1}
产生一个满足一定条件的列表:
Table[formula,{i,i-start,i-finish}]
Table[2n+1,{n,1,9}]得到{3,5,7,9,11,13,15,17,19}
Range[i-start,i-finish,step]产生的列表包含开始和结束的元素。
对列表的常用操作:
Length[list] 得到列表的长度
Dimensions[list] 得到列表的维度
Total[list] 得到列表元素之和
代数运算
提取公因式:Factor[]
代数式展开:Expand[(x^2+3x+3)(x^4-4x+2)]
化简代数式用Simplify,有时候必须用FullSimplify才能得到最简结果。F-多一步因式分解操作。还有一个FunctionExpand,一般比F-还快,并且能完成以下F-不能完成的化简,特别是最后的结果是一个复杂函数的时候。
Collect进行函数系数归并操作。
Apart和Together用途相反,一个是部分分式展开,一个是把多个分式加到一起。
最大公约数和最小公倍数:
GCD[210,90]
LCM[210,90]
代数运算中,有大量的表达式替换工作。
/.用于表达式的替换,它的函数名就叫做Replace。
替换规则符号为“->”,由键盘上的中划线和右书名号合成,学名叫Rule。
举个例子:
g=3x+2
g/.x->t+1 得到2+3(t+1)
函数求值,直接把值放到函数体内,比如f[12]
解代数方程
数学上的等号是==,=是赋值。
函数是Solve,给出方程(组)和变量(组):
Solve[2x^2-3x+6==0,x]
Solve[{2x-3y==0,4x-7y==0},{x,y}]
不要解析解,要数值解,使用NSolve,用法完全类似。
微积分
求极限:Limit
Limit[1/x,x->Infinity]
求导数微分:D
D[x^2,x]
求全微分:Dt
求积分:Integrate,NIntegrate
Integrate[1/x,{x,1,4}]
求和:Sum[k^2,{k,1,10}]
级数:Series
展开的函数是有O(-)项,即误差项的,不等同于一般的多项式,所以不能进行求值等操作。为了让它变成一般多项式,即去掉O项,使用Normal函数。比如:
ser=Series[Sin[x],{x,0,5}]
Normal[ser]/.x->0.5
这就是用泰勒展开式求三角函数值的基本思路。
解微分方程
一阶导数可以用y’[x]表示,二阶可用y’’[x]表示。基本用法:
DSolve[y’’[x]+y[x]==0,y[x],x]
DSolve[{y’’[x]+y[x]==0,y[0]==1,y’[0]==0},y[x],x]
线性代数
Mathematica的矩阵也是通过List实现的。这里不多说,将来专题讨论。
二维绘图
基本绘图函数是Plot:
Plot[x*Sin[x],{x,-1,2},PlotStyle->Red]
Plot有大量属性可供配置,查看所有属性:
Options[Plot]
这些属性,有些能够望名知意,有些不能。不管能不能,建议使用?,查一下文档用法。其实,Mathematica在绘图后,会根据上下文联想出所有可供配置的选项的,一个个的去尝试即可,不必记住这么多的命令用法。不过,记住一些常用的配置选项还是有好处的,就是能够保证绘图的统一性。每次都通过点鼠标根据上下文尝试做出来的图,除非记录下来每次的操作,不然每次都不一样,而这在一些应用下是不可饶恕的。其中,比较重要的有:
AxesOrigin, Ticks, AxesLabel, PlotStyle, AspectRtio, PlotRange, Frame, FrameTicks, Axes, Mesh, MeshStyle, ColorFunction
三维绘图
和二维绘图完全类似。
Plot3D
===================================
了解了上述内容,并都一个字母一个字母的实践过了,就可以算是Mathematica入门了。入门之后,我们就可以讨论一些稍微高级的话题了。