Mathematica学习(1)

转自: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入门了。入门之后,我们就可以讨论一些稍微高级的话题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值