Mathematica基础教程

Mathematica基础教程

本文介绍mathematica的基础内容,帮助读者快速地入门Mathematica

1.基础知识

Mathematica中输入语句按shift+enter执行,如果不想显示输出结果,则在句尾加入分号,一次性可输入多条语句。
?+函数名查找帮助
*……*是注释内容

2.变量

2.1变量的取名

变量名以英文字母开头,背后可以跟字母数字,一般来说,推荐变量用小写字母。

2.2变量的赋值

变量的赋值有以下几种形式
1、“等号赋值”

x=value 给x赋值value
x=y=value 给x和y同时赋值value
{x,y}={value1,value2} 给x赋值value1, 给y赋值value 2
x=. 给x赋予空值,即消除x的值
Clear[x] 清除变量x的定义和值

2.3变量替换

expr/.lhs->rhs 用rhs替换lhs
expr/.{lhs1->rhs1, lhs2->rhs2, ……} 分别用rhs替换lhs
注意替换的内容可以是表达式中的任意成分,可以为变量名,也可以为函数名

3.表

List数据结构就是用花括号括起来,用逗号分隔的一类数据类型,里面的元素可以为任意类型,和Python当中的List类似

3.1表的生成

3.1.1建表函数

Table[ ]用通项公式生成列表
Range[ ]制定初值,终值和步长生成表
详见MMA帮助文档

3.2表中元素的引用

s[ [ i ] ]表示表s中第i个元素
s[ [ -i ] ]表示表s倒数第i个元素
多维list中 :
s[ [ i ] ]表示第i 个子表
(千万注意索引的数字是要加上一个方括号的)

3.3表的运算

表的运算和Python当中多维数组运算时一样的,都是逐元素操作。
表还可以作集合运算,计算有关集合的问题,调用Union函数计算并集,调用Intersection函数计算交集,调用Complement函数计算补集

4.函数

圆括号用来表示运算的组合关系,函数变量都是在方括号里面。MMA中的函数首字母都是大写的

4.1自定义函数

要采用“f[x_]:=……”的形式定义,注意两个点,左边的变量x_一定要加下划线,右边的等号是“:=”(因为x_表示任意变量名为x的单一表达式,类似于形式参数)
例如:

In[1]:=f[x]=x+1
Out[1]=x+1    (这说明并没有定义函数,只是把f[x]当做是一个变量而已,这个变量是x+1)
In[2]:=f[1]
Out[2]=f[1]    (这说明仅仅是定义了f[1]这个变量)
In[3]:=f[x_]=x+1
In[4]:=f[3]
Out[5]=4

还可以定义任意多元的函数f[x_,y_,z_……]:=epxr
后面的函数体还可以是多条语句

f[x_]:=(y=Max[x];z=Min[x];y^2+z^2)

另外,还可以定义只对某一类型变量生效的函数,参数数目可变的函数,用的较少,具体参见中科大Mathematica教程。

4.1.1“=”与“:=”的区别

“=”是即时赋值,赋值号右边的等式在定义的时候立刻被求值
“:=”是延时赋值,赋值等式右边的表达式在定义的时候不会被立刻求值,而是在执行调用规则的时才会被求值
例如:

In[1]:=x=1;
In[2]:=f[x_]=x^2
Out[2]=1
In[3]:=g[x_]:=x^2
In[4]:={f[3],g[3]}
Out[4]:={1,9}
In[5]:=h[y_]=2y
Out[5]:=2y
In[6]:={h[3],h[4]}
Out[6]:={6,8}
4.1.2 纯函数

纯函数就是类似于Python中的匿名函数,用于想定义一个函数,但是重新定义一个变量或起一个函数名又嫌麻烦的时候。
形式:

纯函数定义的形式意义
Function[变量,表达式]一个变量的纯函数
Function[变量表,表达式]多个变量的纯函数
[变量(表),表达式]&相当于是Function定义纯函数的缩写

例子详见中科大Mathematica教程

5.表达式

5.1算数运算符

+、-、*、/、^

5.2关系运算符

运算符意义
==等于
!=不等
>大于
<小于
<=小于等于
>=大于等于

5.3 逻辑运算符

逻辑运算符意义
&&
||
Xor异或关系
Implies蕴含关系

Implies[p,q]表示,此式为真当且仅当p,q同真同假

5.4 模式替换规则

lhs->rhs定义了一个模式替换规则,而且是即时替换。相应的还有延时替换,但是用的较少,具体可以见中科大的Mathematica教程,就不细说了。

形式说明
expr/.rules对表达式expr所有的部件调用一次规则
expr//.rules对表达式expr的所有部件反复调用rules,直到结果不再变化

例子:

In[1]:=f[5]/.f[x_]->xf[x-1]
Out[1]:=5f[4]
In[2]:=f[5]//.{f[1]->1,f[x_]->xf[x-1]}
Out[2]:=120
In[3]:=log[a*b*c]//.log[x_*y_]->log[x]+log[y]
Out[3]:=log[a]+log[b]+log[c]

6.程序结构设计

6.1局部变量

6.1.1Module和局部变量

Module[{局部变量表},body]
body就是表达式,多条表达式之间用分号分隔,以最后一个表达式作为输出值。
例子:

In[1]:=Module[{x,y},x=1;y=2;x=x+1;x+y]
Out[1]=4
6.1.2With和局部变量

With[{x=x0,y=y0,……},body]
定义局部常量x,y……的值为x0,y0……,body是复合表达式。也就是说x,y被赋值之后是不能再次赋值的

6.2条件控制结构

6.2.1 If语句结构
If语句形式含义
If[逻辑表达式,表达式1]逻辑表达式为真,计算表达式1,表达式1的值就是整个If结构的值
If[逻辑表达式,表达式1,表达式2]逻辑表达式为真,计算表达式1;若为假,则计算表达式2
If[逻辑表达式,表达式1,表达式2,表达式3逻辑表达式为真,计算表达式1;若为假,则计算表达式2;既非真又非假,计算表达式3
6.2.2 Which语句结构
Which语句结构含义
Which[条件1,表达式1,条件2,表达式2……]依次计算条件i,计算第一个条件为True的表达式的值,作为整个结构的值。如果所有条件为False,则不做任何运算
Which[条件1,表达式1,条件2,表达式2……,True,表达式]和上面类似,只不过这时候当前面的条件判断都为False的时候,计算到True必然会执行最后一个表达式
6.2.3 Switch结构

Switch[expr,模式1,表达式1,模式2,表达式2,……]
将表达式expr的值与模式1,模式2……依次比较,给出第一个与expr匹配的模式i对应的表达式的值,如果没有匹配的值则整个结构的值为Null

6.3循环结构

6.3.1Do语句结构
Do语句形式含义
Do[expr,{i,i0,i1,s}循环变量i从i0到i1,每次增加s,计算表达式expr
Do[expr,{i,i1}]同上,当i0=1,步长=1时可以省略不写
Do[expr,{n}]计算表达式n次
Do[expr,{i,i0,i1,is},{j,j0,j1,js}]i从i0到i1按步长is递增;对于每一个i,j从j0到j1按步长js递增,计算表达式expr
6.3.2While语句结构

While[条件,循环体]
当条件为True时,执行循环体,一直循环到条件非真的时候停止
与C语言一样,也可以用k++,k–

6.4转向控制

6.4.1复合表达式内的转向控制
函数意义
Label[name]用标识符标出复合表达式的一个位置
Goto[name]转向当前过程中Label[name]位置后执行
6.4.2退出循环结构
函数说明
Return[expr]退出函数中的所有过程和循环,返回expr的值
Break[]结束本层循环
Continue[]直接转向下一层循环
Throw[expr]返回expr作为最近的外层的catch的值

例子:

In[1]:=Catch[a; b; Throw[c]; d; e]
Out[1]=c
In[2]:=f[x_] := If[x > 10, Throw[overflow], x!]
In[3]:=Catch[f[2] + f[11]]
Out[3]=overflow


6.5 程序包的设计

BeginPackage[“程序包名”]
Begin[“Private`”]
f[变量]=表达式(写包的主体)
……
End[]
EndPackage[]

7.输入和输出

常用命令意义
Print[expr1,expr2,expr3……]依次输出表达式,两个结果之间不留空格
Input[ ]读入一个表达式
Input[“提示”]显示提示之后再读入表达式
InputString[ ]读入一个输入的字符串
InputString[“提示”]显示提示之后,再读入字符串
Mathematica入门教程 Mathematica的基本语法特征   如果你是第一次使用Mathematica,那么以下几点请你一定牢牢记住: Mathematica中大写小写是有区别的,如Name、name、NAME等是不同的变量名或函数名。 系统所提供的功能大部分以系统函数的形式给出,内部函数一般写全称,而且一定是以大写英文字母开头,如Sin[x],Conjugate[z]等。 乘法即可以用*,又可以用空格表示,如2 3=2*3=6 ,x y,2 Sin[x]等;乘幂可以用“^”表示,如x^0.5,Tan[x]^y。 自定义的变量可以取几乎任意的名称,长度不限,但不可以数字开头。 当你赋予变量任何一个值,除非你明显地改变该值或使用Clear[变量名]或“变量名=.”取消该值为止,它将始终保持原值不变。 一定要注意四种括号的用法:()圆括号表示项的结合顺序,如(x+(y^x+1/(2x)));[]方括号表示函数,如Log[x], BesselJ[x,1];{}大括号表示一个“表”(一组数字、任意表达式、函数等的集合),如{2x,Sin[12 Pi],{1+A,y*x}};[[]]双方括号表示“表”或“表达式”的下标,如a[[2,3]]、{1,2,3}[[1]]=1。 Mathematica的语句书写十分方便,一个语句可以分为多行写,同一行可以写多个语句(但要以分号间隔)。当语句以分号结束时,语句计算后不做输出(输出语句除外),否则将输出计算的结果。 一.数的表示及计算                                                       1.在Mathematica中你不必考虑数的精确度,因为除非你指定输出精度,Mathematica总会以绝对精确的形式输出结果。例如:你输入 In[1]:=378/123,系统会输出Out[1]:=126/41,如果想得到近似解,则应输入 In[2]:=N[378/123,5],即求其5位有效数字的数值解,系统会输出Out[2]:=3.073
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光与无畏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值