mathematica软件的基本用法11数第一次练习.docx
《mathematica软件的基本用法11数第一次练习.docx》由会员分享,可在线阅读,更多相关《mathematica软件的基本用法11数第一次练习.docx(14页珍藏版)》请在冰点文库上搜索。
mathematica软件的基本用法11数第一次练习
第1章Mathematica软件的根本用法
§1.1启动与运行
1.1.1Mathematica的启动
假设在Windows环境下已安装好Mathematica5.0,启动Windows后,在“开始〞菜单的“程序〞中单击
,就启动了Mathematica5.0,在屏幕上显示如图的Notebook窗口,系统暂时为文件取名Untitled-1,直到用户保存时重新命名为止.
1.1.2Mathematica的运行
输入1+1,然后按下小键盘上的Enter键(或Shif+Enter键.注:
直接按Enter键是表达式换行),这时系统开始计算并输出计算结果,并给输入和输出附上次序标识In[1]和Out[1],注意In[1]是计算后才出现的;再输入第二个表达式Expand[(x+y)^5],要求系统将一个二项式展开,按Shift+Enter输出计算结果后,系统分别将其标识为ln[2]和Out[2].如图.
为了节省篇幅,本书后面不再把ln[i]与Out[i]写出.如将“In[1]:
=1+1,Out[1]=2”写成“运行1+1得2”.
说明:
假设把本系统的输出结果复制到Word文档中,在没有安装Mathematica的计算机上无法正常显示,但只要安装了立即变得正常.
§1.2根本用法及命令格式
1.2.1常量
1.数值类型
在Mathematic中,根本的数值类型有四种:
整数,有理数、实数和复数.
假设你的计算机的内存足够大,Mathemateic可以表示任意长度的准确整数及实数,而不受所用的计算机字长的影响.整数与整数进展四那么运算的结果仍是准确的整数或是有理数.
例如:
2的100次方是一个31位的整数:
.
运行1/2+1/3得
.
当两个整数相除而又不能整除时,系统就用有理数来表示.
实数既可以是准确值,也可以是用浮点数表示,Mathematica实数的有效位数可取任意位数,是一种具有任意准确度的近似实数,当然在计算的时候也可以控制实数的精度.实数有两种表示方法:
一种是小数形式表示,另外一种是用指数形式表示.如:
98.
运行0.12*10^11得×1010.
实数也可以与整数、有理数进展混合运算,结果还是一个实数.
得.
在Mathematica中,复数是由实部和虚部组成,实部和虚部可以用整数、有理数、实数表示,用I表示虚数单位如:
I得3+0.7.
2.不同类型数的转换
在Mathematica的不同应用中,通常对数字的类型要求是不同的.例如在公式推导中的数字常用整数或有理数表示,而在数值计算中的数字常用实数表示.在一般情况下在输出行Out[n]中,系统根据输入行ln[n]的数字类型对计算结果做出相应的处理.假设有一些特殊的要求,就要进展数据类型转换.
在Mathematica中提供以下几个函数到达转换数据类型的目的:
表1-1
函数格式
意义
N[x]
将x转换成默认6位精度的实数
N[x,n]
将x转换成近似实数,精度为n
Rationalize[x]
给出实数x的有理数近似值
Rationalize[x,dx]
给出x的有理数近似值,误差小于dx
举例如下:
运行N[5/,运行N[5/3,20]得(怎么会多一个6呢?
)
.
注:
在Mathematica4.0版本中,当
时,系统自动以6位有效数字输出计算结果,在更高版本中不受此限制.
Rationalize[x]给出x的有理数近似值,如运行Rationalize[0.48]得
.Mathematica尽量保持计算的准确性,例如运行Rationalize[Pi]得
,运行Rationalize[Sqrt[2]]得
.
Rationalize[x,dx]给出x的误差小于dx的有理数近似值,如运行Rationalize[Pi,1]得3;运行Rationalize[Pi,0.1]得
;运行Rationalize[Pi,0.01]得
.继续计算得
的此后7个不同精度级的有理数依次为:
.
用同样的方法算得
的前8个各种精度的近似值分别为
.
数学常数
Mathematica中定义了一些常见的数学常数,这些数学常数都是准确数.
表1-2
符号
意义
值
Pi
圆周率
…
E
自然对数的底
…
Degree
1度
/180
I
虚数单位i
Infinity
无穷大
∞
-Infinity
负的无穷大
-∞
GoldenRatio
…的倒数
黄金分割数应为:
0.6180339887.数学常数可用在公式推导和数值计算中,在数值计算中表示准确值.如:
运行Pi^2得
,运行N[Pi^2]得.
1.2.2变量
1.变量的命名
变量的命名规那么:
以字母开头,后跟数字和字母的组合,不能跟具有特殊意义的符号如*,?
%,_,/等,长度不限,但Mathematica中内部函数和命令都是以大写字母开始的标识符.为了不与它门混淆,读者在自定义变量时应该尽量以小写字母开始,另外在Mathematica中的变量也是区分大小写的.例如:
a12,ast,aST都是合法的变量名,而12a,z*a是非法的(提示与建议:
给变量命名时,一方面不要用系统保存字,如Pi,E,C,Sin等;另一方面,尽可能与保存字相比至少有两个以上不一样的字符,不然在运行时系统会提示是否为拼写错误).
符号%表示刚刚计算的结果,%2(或%%)表示倒数第2个计算结果,%n表示倒数第n个计算结果,在进展交互式计算时可以使用,但在程序中尽量少用.
2.给变量赋值
在Mathmatica中用等号=为变量赋值.变量不必定义数值类型,可以表示一个数值,一个数组,一个表达式,甚至一个图形.如:
运行x=3得3;运行x^2+2x得15;运行x=%+1得16.
可同时对不同的变量赋不同的值,例如:
运行{u,v,w}={1,2,3}得{1,2,3};运行2u+3v+w得11.
对于已定义的变量,当你不再使用它时,为防止变量值的混淆,可以随时用“变量名=.〞去除它的值,假设变量本身也要去除那么用函数Clear[x],例如运行u=.后再运行2u+v得2+2u(前面的运行已有v=2,而u的值1已经去除).
3.变量的交换
在给定一个表达式时其中的变量可以取不同的值,这时可用变量交换来计算表达式的不同值.格式为
expr/.x->val,例如:
运行Clear[x];f=x/2+1得
.
运行f/.x->1得
.
运行f/.x->4得3.
假设表达式中有多个变量也可以同时交换,例如有两个变量时格式为:
expr/.{x->xval,y->yval},例如:
运行(x+y)*(x-y)^2/.{x->3,y->1-a}得
.
1.2.3内建函数
在Mathematica的Notebook界面下,可以用交互方式完成各种运算,如绘制函数图象,求极限、解方程等,也可以用它编写象C语言那样的构造化程序.在Mathematica系统中定义了许多功能强大的函数,我们称之为内建函数(built-infunction),直接调用这些函数可以到达事半功倍的效果.这些函数分为两类,第一类是数学意义上的函数,如:
绝对值函数Abs[x],正弦函数Sin[x],反正弦函数ArcSin[x],余弦函数Cos[x],指数函数Exp[x],以e为底的对数函数Log[x],以a为底的对数函数Log[a,x]等;第二类是命令意义上的函数,如作函数图形的函数Plot[f[x],{x,xmin,xmax}],解方程函数Solve[eqn,x],求导函数D[f[x],x]等.
注意:
(1)在Mathematica中,所有函数严格区分大小写,一般地,内建函数的首写字母必须大写,有时一个函数名是由几个单词构成,那么每个单词的首写字母也必须大写,如:
求局部极小值函数FindMinimum[f[x],{x,x0}等.
(2)在Mathematica中,函数名和自变量之间的分隔符是用方括号“[]〞,而不是一般数学书上用的圆括号“()〞,初学者很容易犯这类错误.
假设输入了不合语法规那么的表达式,系统会显示出错信息,并且不给出计算结果,例如:
要画正弦函数在区间[-10,10]上的图形,输入plot[Sin[x],{x,-10,10}],那么系统提示:
General:
:
spell1:
Possiblespellingerror:
newsymbolname"plot"issimilartoexistingsymbol"Plot".More…
同时原样输出原命令,表示“可能有拼写错误,新符号‘plot’很象已经存在的符号‘Plot’〞,由于系统作图命令“Plot〞第一个字母必须大写,错误出在〞plot〞中首字母没有大写.再输入Plot[Sin[x],{x,-10,10},系统又提示“Syntax:
:
bktmcp:
Expression"Plot[Sin[x],{x,-10,10}"hasnoclosing"]".〞表示缺少右方括号,并且在命令中将不配对的括号用红色显示.
一个表达式只有准确无误地输入后运行才能得出正确结果.学会看系统出错信息能帮助我们较快找出错误,进步工作效率.完成各种计算后,点击File->Exit退出,假设文件未存盘,系统提示用户存盘,文件名以“.nb〞作为后缀,称为Notebook文件.以后想使用本次保存的结果时可以通过File->Open菜单读入,也可以直接双击该文件图标,系统自动调用Mathematica将它翻开.
建议:
最好在操作中途保存文件,第一次保存时,点击File->save出现“另存为〞窗口,选定保存位置并输入文件名后单击“保存〞按钮即可,以后保存直接击Ctrl+S即可.
1.2.4表达式的输入
Mathematica提供了多种输入数学表达式的方法.除了用键盘输入外,还可以使用工具栏或者快捷方式输入运算符、矩阵或数学表达式.
维格式输入
形如x/(2+3x)+y*(x-w)的表达式称为一维格式,除特殊字符外,所有数学表达式均可用这种格式输入,其优点之一是只用键盘就能完成输入,优点之二是适宜在编程中使用,优点之三是可以在Mathematica与Word之间互相复制命令表达式.在利用该软件处理数学问题时,建议采用一维格式.这种格式的缺点是有些数学表达式不直观.
2.二维格式输入
形如
的表达式称为二维格式,假设为了特殊需要可以使用二维格式输入.
方法一:
先按一维格式输入:
x/(2+3x)+y/(x-w),在变量x,y,w未赋值的情况下运行的结果就是二维格式
将其复制到指定位置即可;
方法二:
可以使用快捷方式输入二维格式.下面列出了用快捷方式输入二维格式的几种常见形式,如表1-3所示.
表1-3
数学运算
数学表达式
按键
分式
xCtrl+/2
N次方
xCtrl+^2
下标
xCtrl+_2
例1.1如输入数学表达式
可以按如下顺序输入按键:
(,x,+,1,),Ctrl+^,4,->,+,a,Ctrl+_,1,->,Ctrl+/,Ctrl+2,2,x,+,y,->,->.
也可以用根本输入工具栏输入二维格式:
从FILE菜单中激活Plaettes->BasicInput工具栏,对于常用的特殊字符(如以下列图),只要单击这些字符按钮即可输入,使用工具栏可输入更复杂的数学表达式.
3.特殊字符输入
MathemMatica还提供了用以输入各种特殊符号的工具栏.假设要输入其它的特殊字符或运算符号,必须使用从File菜单中选取palettes,再选CompleteCharacters工具栏,如右图,单击对应的符号后即可输入.
1.2.5数值的输出形式
在数值的输出中,可以使用转换函数进展不同数据类型和精度的转换.另外,对一些特殊要求的格式还可以使用如下的表达式表示形式函数,如表1-4所示.
表1-4
函数格式
意义
NumberForm[expr,n]
以n位精度的实数形式输出实数expr
ScientificForm[expr]
以科学记数法输出实数expr
EngineergForm[expr]
以工程记数法输出实数expr
例1.2数值的形式转换运行A=N[Pi^30,30]得
.
运行NumberForm[A,10]得
.
运行ScientificForm[A]的结果与此一样,但下面的命令输出幂值可被3整除的实数:
运行EngineeringForm[A]得EngineeringForm=
.
§1.3函数
1.3.1系统函数
在Mathmatic中定义了大量的数学函数可以直接调用,这些函数其名称一般表达了一定的意义,可以帮助我们理解.几个常用的函数如表1-5所示.
表1-5
函数格式
意义
Floor[x]
不比x大的最大整数
Ceiling[x]
不比x小的最小整数
Sign[x]
符号函数
Round[x]
接近x的整数
Abs[x]
x绝对值
Max[x1,x2,x3,…]
x1,x2,x3,…中的最大值
Min[x1,x2,x3,…]
x1,x2,x3,…中的最小值
Random[]
0~1之间的随机函数
Random[Real,xmax]
0~xmax之间的随机函数
Random[Real,{xmin,xmax}]
xmin~xmax之间的随机函数
Exp[x]
指数函数
Log[x]
自然对数函数lnx
Log[b,x]
以b为底的对数函数
Sin[x],Cos[x],Tan[x],Cot[x],Sec[x],Csc[x]
三角函数(变量以弧度为单位)
ArcSin[x],ArcCos[x],ArcTan[x],ArcCot[x],ArcSec[x],ArcCsc[x]
反三角函数
Sinh[x],Cosh[x],Tanh[x],Coth[x],Sech[x],Csch[x]
双曲函数
ArcSinh[x],ArcCosh[x],ArcTanh[x],ArcCoth[x],ArcSech[x],,ArcCsch[x]
反双曲函数
Mod[m,n]
m被n整除的余数,余数与n的符号一样
Quotient[m,n]
整除函数(m/n的整数局部)
GCD[n1,n2,…]或GCD[s]
n1,n2,…的最大公约数,s为一数集合
LCM[n1,n2,…]或LCM[s]
n1,n2,…的最大公倍数,s为数据集合
n!
n的阶乘
n!
!
n的双阶乘
Mathematica中的函数与数学上的函数有些不同的地方,Mathematica中函数是一个具有独立功能的程序模块,可以直接被调用.同时每一函数也可以包括一个或多个参数,也可以没有参数.参数的的数据类型也比较复杂.更加详细的说明可以参看系统帮助,理解各个函数的功能和使用方法是学习Mathematica软件的根底.
1.3.2自定义函数的定义
1.函数的立即定义
立即定义函数的语法是“f[x_]=expr〞,其中f为函数名,x为自变量,expr为表达式.在执行时会把expr中的x都换为f的自变量x.函数的自变量具有局部性,只对所在的函数起作用.函数执行完毕后变量的值也就没有了,不会改变其它全局定义的同名变量的值.
例定义函数f(x)=xsinx+x2,求函数值f(3),绘制其图形.
运行Clear[x];f[x_]=Sin[x]+x^2得
运行f[3]得9+Sin[3]
运行Plot[f[t],{t,0,2}]得如图1-4所示的图形.
注意:
假设运行前x已经赋了值,那么不能得到上述函数.
对于自定义函数我们可以使用命令Clear[f]去除掉,而Remove[f]命令那么从系统中删除该函数.
2.延迟定义函数
从定义格式上延迟定义函数与即时定义的区别为“=〞与“:
=〞,延迟定义的格式为“f[x_]:
=expr〞,其他操作与立即定义函数方式根本一样.主要区别是:
即时定义函数在输入函数后立即定义函数并存放在内存中并可直接调用,假设定义函数前变量已赋值将会把当前值直接代入函数表达式中计算出结果;延迟定义时,其中的变量只是形式变量,不受当前值的影响,只是在调用函数时,才把变量的值代入函数表达式进展计算.
建议读者在编程时尽量用延迟定义函数方式定义函数.
3.多变量函数的定义
也可以定义多个变量的函数,延迟定义函数方式的格式为“f[x_,y_,z_,…]:
=expr〞,其中f为函数名,x,y,z,…为自变量,expr为表达式.
例1.4定义函数f(x,y)=xy+ycosx并求函数值f(2,3).
运行f[x_,y_]:
=x*y+y*Cos[x]得xy+yCos[x]
运行f[2,3]得6+3Cos[2]
与即时定义比较,例如:
当运行x=3;后再运行f[x_,y_]=x^2*y得9y,运行f[t,y]得9y;而运行f[x_,y_]:
=x^2*y后再运行f[t,y]得t2y.
4.使用条件运算符或If命令定义函数
例1.5定义分段函数:
.
这时,要根据x的不同值给出不同的表达式.一种方法是使用条件运算符,根本格式为f[x_]:
=expr/;condition,当condition条件满足时才把expr赋给f.“/;condition〞的详细用法见.
通过观察得出的图形可以验证以下函数定义的正确性:
运行f[x_]:
=x-1/;x>=0
f[x_]:
=x^2/;(x>-1)&&(x<0)
f[x_]:
=Sin[x]/;x<=-1
Plot[f[x],{x,-2,2}]得如图1-5所示图形.
图1-5
当然,使用If命令也可以定义上面的函数,If语句的格式为If[条件,值1,值2]假设条件为真取“值1〞,条件为假取“值2〞,下面是用If语句定义的命令.
运行g[x_]:
=If[x>=0,x-1,If[x>-1,x^2,Sin[x]]];Plot[g[x],{x,-2,2}]得到的图形与图1-5完全一样.
可以看出用If定义的函数g(x)和前面的函数f(x)一样,这里使用了两个If嵌套,逻辑性比较强.关于其它的条件命令的进一步讨论请看8小节.
1.3.3函数的调用格式
无论系统自带的函数还是用户采用延迟方式定义的函数,其调用方式一样.
方法一(函数名前放):
f[expr],如运行N[Pi]得;运行Sqrt[2]得
.
方法二(函数名后放):
expr//f,如运行2//Sqrt得
;运行Pi/2//Sin得1.
两种调用方法中,前者更符合数学习惯,而且能更方便地改变参数.