1数学软件认识试验
更新时间:2023-05-13 03:01:01 阅读量: 实用文档 文档下载
- 轻松认识数学软件推荐度:
- 相关推荐
第二篇 实验篇
“数学实验”是一种新的教学模式,是“技术数学”的重要组成部分,是与前面的理论篇和后面的建模篇相配合的重要教学环节,起着承上启下的重要作用。它将数学知识、数学建模与计算机应用三者融为一体,通过数学实验使学生深入理解数学基本概念和基本理论,熟悉常用的数学软件,培养学生运用所学知识建立数学模型、使用计算机解决实际问题的能力。
第十三章 基础实验
[学习目的]
1. 掌握Mathematica软件的基本操作;
2. 掌握绘制函数图像的方法;
3. 理解并掌握微积分和线性代数的计算方法;
4. 理解并掌握统计分析和规划运算的方法;
5. 通过实验,掌握有关的基本数学方法与数学思想。
§13.1
[学习目标]
1. 能表述Mathematica软件的特点;
2. 会使用Mathematica软件进行数值计算;
3. 会利用Mathematica软件进行代数运算;
4. 能运用Mathematica软件解代数方程。
一、 数学软件简介
到目前为止,所有的理工科大学生都必须花大量的时间练习求极限、导数和积分的技能,需要死背大量的公式、方法和技巧,这些重复劳动令人厌烦,直接影响了一些学生的学习兴趣,挤占了学生在理解数学概念和理论方面所花的时间。正是为了使学生和其他人员摆脱重复劳动的需要,像Mathematica这样具有符号推导功能的软件应运而生,突破了计算机只能进行数值计算的局限性,那些既令人厌烦又容易出错的计算、推导可由计算机完成。新一代的数学软件就是计算器的升级换代产品。当人们接触到这类软件后,就像当年看到计算器那样爱不释手。当前,数学机械化的条件已经具备,应当教会学生用计算机软件求解,这样既可以减轻学生的负担,又可节省出时间来加强数学概念与理论方面的教学。
同类优秀的数学软件还有MATLAB和Mathcad等,但它们基本上都还是以数值计算为主,有的也有符号运算的功能。而Mathematica软件以符号运算为主,进行符号运算比它们都方便,因此Mathematica更适于作为数学教学软件。一方面,通过这类软件,改变了靠一本书、一支笔、一张纸学习数学的传统,有利于数学的大众化,能激发学生学习、应用数学的兴趣。另一方面,以计算机软件为助手,使枯燥的数值计算和符号运算方便、快捷,善于死背死算的人已无可取之处,迫使学生从“死记”转向“理解”,这真是一件非常有意义的事。Mathematica的绘图功能也十分强大,使用方便、快捷,适合在教学中使用。在数值计算方面,注重计算精度,更具有数学上的严肃性,为精确计算的首选软件。现在,Mathematica数学软件认识实验
软件已经成为科技人员和大学师生们的得力工具,被广泛传播。
我们由于Mathematica涉及的数学与计算机知识十分广泛,一般人都会有既被吸引而又望而生畏的感觉。为此我们提醒读者,既不要害怕,也不必像学习数学与计算机基础课那样逐字逐句地认真推敲。首先全面了解一下它的功能,做到心中有数还是必要的。然后,等需要用到哪一部分时,再仔细学习钻研,不必面面俱到。读者主要应靠认真阅读书中的实例,去学习具体的操作方法和技巧,一般能模仿着使用就够了。尽管本书在讲解上力求准确、细致,然而有些内容比较复杂,仅靠几行文字解释是弄不清楚的。遇到看书和Help仍弄不清的问题,大都可以通过实例试验来解决。
最后还应指出,机械可以代替人做重复、繁重的工作,但不如人灵活。Mathematica的符号运算功能虽然强大,能代替人解《技术数学》教材中的绝大多数计算题,但也有技不如人的情况。令人鼓舞的是,随着版本的不断更新,功能日趋完善。作为教学软件,4.x版已相当令人满意。不过,无论在数学上还是在计算机语言方面,这个软件与常规既相似又有差别,经常会由于忽略了差别而在理解和使用上出现错误,这一点务必注意。
二、 Mathematica起步
1. Mathematica软件的主要功能
(1) 符号运算
Mathematica是美国Wolfram Research公司开发的著名数学软件,以符号运算为主,能像人一样进行带字母的运算,得到的是精确的结果。符号运算功能可以分成4大类:
(A) 初等数学
可以进行各种数和初等函数式的计算与化简。
(B) 微积分
可以求极限、导数(包括高阶导数和偏导数等)、不定积分和定积分(包括多重积分),将函数展成幂级数,进行无穷级数求和及积分变换。
(C) 线性代数
可进行行列式的计算、矩阵的各种运算(加法、乘法、求逆矩阵等)、解线性方程组、求特征值和特征向量、进行矩阵分解。
(D) 解方程组
能解各类方程组(包括微分方程组)。
下面展示了Mathematica符号运算的实际运行效果。
24 In[1]:= 37
Out[1]=2 21
In[2]:=Apart[1] 2x(x 1)
Out[2]=111 ( 1 x)2 1 xx
11= =1,x] xx In[3]:=Solve[
1 Out[3]={{x→(3 )}} 2
In[4]:=
Out[4]=2311 x2ydydx 28 3
In[5]:= 1 2k 1k
2
Out[5]= 6
(2) 数值计算
Mathematica的数值计算更具科学性。它与通常的数值计算程序有所不同,允许用户指定任意精度,例如能轻而易举地求出π的300位近似值;也可以求出1000!和210000等整数的准确值,令人惊叹。Mathematica具有众多的数值计算函数,能满足线性代数、插值与拟合、数值积分、微分方程数值解、求极值、线性规划及概率统计等方面的常用计算需求。
(3) 绘图
它的绘图功能也很出色,能绘制各种二维和三维彩色图形,自动化程度很高。
如图13-1和图13-2所示是绘图功能的演示。
In[1]:=ParametricPlot[{3 Sin[3θ] Cos[θ],3 Sin[3θ] Sin[θ]},
{θ,0,2π},AspectRatio→Automatic]
图13-1 二维图形演示。
Out[1] = -Graphics-
In[1]:=ParametricPlot3D[{Sin[t],Sin[2t] Sin[u],Sin[2t] Cos[u]},
{t,-Pi/2,Pi/2},{u,0,2Pi},Ticks→None]
图13-2 三维图形演示。
Out[1]= -Graphics3D-
(4) 编程
在Mathematica中,用户可以自己编写各种程序(文本文件),开发新的功能。用户开发的功能可以在软件启动时被调入,与软件本身的功能一样使用。Mathematica 4.0 版自带一百多个专门的程序包,都是另外编写的程序文件,补充并完善了Mathematica的功能。Mathematica良好的底层环境极具吸引力,为数学编程提供了广阔天地。
2. Mathematica界面简介
Mathematica 4.0版在Windows 9x以上环境中运行,一般占用150MB以上的硬盘空间,软件的安装与一般Windows应用程序的安装过程相同。本书假定Mathematica安装在目录D:\Mathematica\4.0中,Mathematica启动后的界面如图13-3所示。
图13-3 Mathematica启动后的界面
图13-3所示的界面由工作区窗口、基本输入模板和主菜单组成。
(1) 工作区窗口
左边的大窗口为工作区,是显示一切输入、输出的窗口。无论直接输入各种算式或命令,
还是运行已经编好的程序,所有操作都在这个窗口中进行。可以同时打开多个工作区窗口。在这样的窗口中,不仅可以显示文字与数学表达式,还可以显示图形、按钮等对象,将这种类型的窗口称为Notebook。
(2) 基本输入模板
位于工作区窗口右边的是基本输入模板,由一系列按钮组成。用鼠标左键单击一个按钮,就可以将它表示的符号输入到当前的工作区窗口中。用户应该认真观看并大致记忆它的内容。Mathematica提供多个这样的模板,用于简化数学表达式、特殊字符及Mathematica函数的输入,还可以根据需要自制特殊的模板。模板的引入大大加快了输入速度、减轻了记忆负担,这也是人们乐于使用Mathematica的原因之一。
(3) 主菜单
位于如图13-3上方所示的是主菜单。Mathematica的菜单项很多,初学时不必一次搞清楚。以下只介绍一些最常用的菜单项。
File菜单
File中的New,Open,Close及Save命令用于新建、打开、关闭及保存用户的文件,这些选项的功能与Word类似,不再赘述。另外有几个选项是Mathematica特有的,其中最有用的是:
Palettes 用于打开各种模板。
Generate Palette from Selection 用于生成用户自制的模板。
Notebooks 记录最近使用过的文件。
模板
Palettes中最有用的是BasicCalculations(基本计算模板)选项,这个模板分类给出了各种基本计算的按钮。例如Calculus子项中的Common Operations,就包含各种微积分基本计算按钮。模板是解决输入困难的好办法,使用户无须死记大量的命令及相关参数,便于查询和输入。
联机帮助系统
记不清或不了解某些操作时,可以打开Help菜单,查询有关帮助。其中的Master Index是字典式查询,其它是分类的帮助内容,可自行观看。
三、 数、变量、函数、算式和表
1. 数的表示和计算
(1) 准确数与近似数
2 Mathematica以符号运算为主,这与C、BASIC和FORTRAN语言不同。例如,π,,3
2等符号表示准确数。近似数用带小数点的数表示,例如1.2,2.3*10^5等。无论准确数还是近似数,都没有位数的限制(当然,实际上受到计算机内存的限制),可以求出2100000的准确值,也可以求出π的任意位数的近似值。
(2) 数的输入、输出方法和格式
例1计算:(1)23+,(2) 23+32 ,(3)4。 32
解:In[1]:=2/3+
Out[1]=3 213 6
In[2]:= 2^3 + 32
Out[2]=17
In[3]:=4
Out[3]=2
说明:上例中以不同的方式输入了分式和幂式,并得到计算结果。
以下通过例1讲解数的输入、输出方法和格式。
(A) 分式的输入
在例1中,第1行分别以两种形式输入了两个分数。分数线的输入可键入“/”或“Ctrl+/”来实现。前者的分式表示法与C,BASIC等程序语言相同;后者产生常规的分数线和一个表示分母位置的小方块,光标停在小方块内,键入分母后可以按键盘上的“→”退出分母,也可按End键或单击分数后面的位置退出分母,使光标处于分数后面的位置,就可以继续输入后面的表达式了。输入分式也可用基本输入模板中的分式按钮输入分式形式,可以通过Tab键或单击使光标从分子跳到分母。对分数进行四则运算的结果是准确数,分子、分母的公因数已经被自动约去。
(B) 指数的输入
在例1中,第3行分别以两种形式输入了两个幂式。指数的输入可通过按“^”键或“Ctrl+6”键来完成。前者的指数表示法与C,BASIC等程序语言相同,后者按数学的常规方式产生一个表示指数位置的小方块。也可用基本输入模板中的幂式按钮输入幂式形式,通过按Tab键或单击使光标从底跳到指数。
说明:根式也可通过键盘输入,但不如用基本输入模板中的根式按钮输入方便,且无须记忆键盘命令。
注意:准确数的运算结果都是准确数,准确数与近似数运算的结果是近似数(保持最大可能的精度)。
(C) 输入与输出提示
从例1中看到Mathematica自动在输入的式子前面加上如 In[1]:= 等符号,在输出的答案前面加上Out[1]= 等符号,以便分清输入与输出并自动加上编号。用户也可以通过Kernel菜单中的Show In/Out Names选项去掉这些提示。
(D) 计算的执行
当输入完整个算式后按Shift+Enter键(或小键盘上的Enter键),Mathematica立即开始计算。在例1中共进行了三次计算,也可以一次计算三个算式。只要在前两次输入完算式后
按Enter键(只换行不计算),最后一个算式输入完后按Shift+Enter键即可。Mathematica启动后的首次计算开始时,才将执行计算的核心程序调入,因此需要等待片刻。再次执行计算时,速度就很快了。由于键入匆忙,有时会产生输入错误。一经执行后才被发现,当然得不到正确的结果。这时不必重新输入,只要将原式修改后,再次按Shift+Enter键,就能重新计算,并用新的输出覆盖原来的输出。可以将工作区窗口当成一张“无限”长的草稿纸,不断进行输入输出,所有的内容都会被保留。
(E) 强制中断计算
如果执行计算后,由于各种原因使计算长时间不能完成,可以通过键盘命令“Alt + ,”或“Alt + .”停止计算。使用后者将立即停止计算,而使用前者后则弹出一个对话框供选择。
(F) 特殊字符的输入
π和e分别用专用字符Pi和E表示,也可以由基本输入模板的特殊字符按钮输入。I表示虚数单位(注意必须用大写字母),也可以由基本输入模板的特殊字符按钮输入。复数用a+bI表示。Infinity表示无穷大,也可以由基本输入模板的特殊字符按钮输入符号 ∞。注意符号 ∞与 +∞相同,没有双侧无穷的概念(而MATLAB是有的);-Infinity表示 -∞。
(3) 近似数的精度控制
求近似值的函数N。Mathematica允许用户任意指定数值计算的精度,函数N的调用格式如下:
N[表达式,数字位数] 用于指定计算表达式的具有任意数字位数的近似值(指定的数字位数应该大于16),结果在末位后是四舍五入的。
N[表达式] 用于计算表达式的近似值,具有机器规定的精度(16位有效数字),但是按标准输出只显示前6位有效数字,如果想要全部显示应该改为按InputForm形式输出(使用Cell菜单中的选择输出形式选项可以更改输出形式或使用InputForm[ ]函数)。还可以使用函数NumberForm[Real,n]规定实数的显示位数n。
注意:在Mathematica中,π和e都表示准确数。
例2求π和e的6位、8位、16位和50位有效数字的近似值。
解:In[1]:=N[π]
Out[1]=3.14159
In[2]:=N[π] // InputForm
Out[2] // InputForm=
3.141592653589793
In[3]:= NumberForm[N[π],8]
Out[3] // NumberForm=
3.1415927
In[4]:=N[π,50]
Out[4]=3.1415926535897932384626433832795028841971693993751
In[5]:=N[e,50]
Out[5]=2.7182818284590452353602874713526624977572470937000
说明:其中,π和e由基本输入模板中的相应按钮输入。
2. 变量
(1) 变量命名
Mathematica中的变量名必须是以字母开头的并由字母或数字组成的字符串(长度不限),但是不能含有空格或标点符号,大写与小写字母用于表示不同的变量。例如x,a1,b12,Tc都是合法的变量名,2a是不合法的变量名,a1与A1是不同的变量。
(2) 变量赋值
一个变量可以表示各种类型的数或字符串,也可以表示一个算式。与C语言不同,不必事先声明变量的类型,Mathematica会根据用户给变量所赋的值自动处理。
使用等号给变量赋值,具体格式如下:
x =Value 给x赋值。
x = y =Value 同时给x,y赋相同的值。
{x,y, }={Value1,Value2, } 同时给x,y, 赋不同的值。
例3 观察下面给x、a、b、c等变量的赋值方法和输出效果。
In[1]:=x=2
Out[1]=2
In[2]:=a1=s+t
Out[2]=s+t
In[3]:=a=b=c=1
Out[3]=1
In[4]:={u,v}={1,2}
Out[4]={1,2}
In[5]:=x=a
Out[5]=1
In[6]:=x
Out[6]=1
In[7]:=s=1
Out[7]=1
In[8]:=a1
Out=1+t
说明:上例分成两部分:
In[1]~In[4]是4个赋值式。第1个式子引入了符号x,同时声明x表示2。第2个式子引入了符号a1,s,t,同时说明了它们之间的关系。第3个式子同时给多个变量赋以同一值。第4个式子同时给多个变量赋以不同值。
In[5]重新给x赋值为a,因为已知a=1,因此输出结果是1。In[6]查看x的值,答案也表
明x=1。In[7]赋值s=1,In[8]查看a1,输出表明a1=1+t。这时x被重新赋值,s由原来无值变为有值且影响到a1。也就是说用户输入的变量及其值或关系式一直被Mathematica记忆,并随着用户的重新赋值而更新,即使同时打开多个工作区窗口变量也是共享的。这一特性既给使用者带来了方便,但也容易因忘记前面已经使用过哪些变量而产生错误。
(3) 清除变量
为了避免隐蔽的错误,应该及时清除不再使用的变量。其方法有以下几种:
x= . 清除x的值但保留变量x。
Clear[x] 清除x的值但保留变量x(在复杂的使用情况下清除更多的定义)。 Remove[x] 将变量x清除。
(4) 表示输出的专用符号
%是一个重要的Mathematica符号,其用途如下:
% 表示前一个输出的内容。
%% 表示倒数第2个输出的内容,依此类推。
% n 表示第n个(即Out[n])输出的内容。
所有%的内容一直被Mathematica记忆,它们可以像其它变量一样被后面的计算引用,如下面的例子所示。
例4 观察下面输出专用符号“ % ”的使用方法和输出效果。
In[1]:=a=x^2+2 Out[1]=2+x2 In[2]:=2+3 Out[2]=5 In[3]:=% Out[3]=5 In[4]:=%%% Out[4]= 2+x2 In[5]:=a+%2 In[6]:=%1+%2 Out[6]= 7+x2 Out[5]= 7+x2
注意:这些 % n的内容是被保护的,Clear或Remove不能清除它们。其实,所有的输入内容也同样被保留和保护,这些内容当然会占据计算机内存。为了节约内存,可以在解除保护后清除它们。清除的方法是使用Unprotect[In,Out]和Clear[In,Out],不过一般无此必要。
3. 函数
Mathematica的基本功能是作为一个高级的函数计算器来使用的,各种操作主要靠函数来实现。Mathematica提供的函数种类繁多且功能强大,函数一词也不限于数学上的含义,有实现各种操作的函数。本书将Mathematica本身的内部函数和它自带的软件包中的函数统称为
系统函数。还可以由用户自定义函数,加入到Mathematica中,能像系统函数一样使用。学习Mathematica主要是分门别类地学习各种函数的功能及其调用方法。下面只介绍一些简单而又常用的数学函数。
函数的一般形式是:函数名[参数1,参数2, ]。
(1) 基本初等函数
在Mathematica中基本初等函数的格式如下:
Sin[x] 正弦函数 Cos[x] 余弦函数
Tan[x] 正切函数 Cot[x] 余切函数
Sec[x] 正割函数 Csc[x] 余割函数
ArcSin[x] 反正弦函数 ArcCos[x] 反余弦函数
ArcTan[x] 反正切函数 ArcCot[x] 反余切函数
Exp[x] 表示ex Sqrt[x] 表示x
Log[x] 表示lnx(一般以a为底的对数函数用Log[a,x]表示)
Mathematica系统函数的书写规则很严格,务必注意以下几点:
(A) 函数名首字符用大写、后面的字符一般用小写,当函数名分成几段时,每段的首字符应大写,函数名中不能含有空格(但自定义函数的首字符不必大写)。
(B) 参数用方括号括起来,但是不能用圆括号。这是很科学的表示法,事实上常规的数学表示法有问题,比如f(x+y)既可以理解成求函数f当自变量等于x+y时的值,又可以理解为f乘以x+y,Mathematica认为圆括号表示相乘。
(2) 常用函数
下面列出一些经常用到的函数:
Abs[x] 求实数的绝对值或复数的模。
Sign[x] 符号函数
Max[x1,x2, ] 一组数的最大值。
Min[x1,x2, ] 一组数的最小值。
n! 求n的阶乘。
k Binomial[n,k] 求Cn。
(3) 随机函数
Mathematica中产生多种类型随机数的函数,如下所述。
Random[type,range,n] 产生指定类型、范围的、具有n位数字的随机数,其中类型type只能是Integer,Real,Complex,范围range由{min,max}指定(默认值是0,1),位数n的默认值是按机器规定的精度,三个精度都可以缺省。
Random[ ] 产生一个0,1之间的一个实数。
Random[Integer] 只能取0和1。
Random[Real,max] 产生{0,max}范围内的一个实数。
4. 算式
(1) 用字母表示一个算式
一个字母不仅能表示一个变量,还可以表示一个算式,示例如下:
In[1]:=p=x^2 + 2x y + y^2
x=1;
y=2;
p
Out[1]=x2 2xy y2
Out[4]=9
In[5]:=x= . ;
y= . ;
p
Out[7]=x2 2xy y2
说明:上例中In[1]用p表示一个x,y的多项式,当两个变量相乘时中间应该用空格或*号隔开,否则Mathematica将xy当成一个新的变量!2x不必隔开,括号也起分隔的作用。以上连续输入了4个表达式后才输出结果,输入完第1行后按Enter键换行,但是Mathematica不立即输出该行结果,第2、3行表达式后面加分号表示不显示该表达式的输出结果(但是对应的Out[n]仍然存在),第4行键入p表示求p的值,然后按Shift+Enter键通知Mathematica开始计算。第1个输出是第1行输入的结果,p表示一个算式。第2个输出是第4行输入的结果,p的值已经改变为9!使用者如不警惕,经常会忘记这种改变,因而铸成大错。第5、6行输入清除了x,y的值,p的原来值又显示出来。
(2) 变量替换
使用变量替换是求算式的值而不改变算式本身的方法,示例如下:
In[1]:= p = x^2 + 2x y + y^2
Out[1]= x2 2xy y2
In[2]:=p / . x→1
Out[2]= 1 + 2y + y2
In[3]:=p / . {x→1,y→2}
Out[3]=9
In[4]:=p
Out[4]= x2 2xy y2
In[5]:=q=p / . {x→Sin[t],y→Cos[t]};
q
Out[6]= Cos[t]2 + 2Cos[t] Sin[t] + Sin[t] 2
说明:以上In[2]中p / . 表示对p进行替换,x→1表示将算式p中的x用1代入,其中的箭头是由键入负号“-”和大于号“>”拼成的。在In[3]中同时替换x,y,一次进行多项替换时用花括号将替换表达式括起来,各项之间用逗号分开。Out[4]说明p本身并没有改变!
在In[5]中将替换结果赋值给q,Out[6]显示了q的值。使用化简函数,还可以将这个结果化简。
(3) 续行问题
最后讲一下续行问题,如果一个式子太长可以换行后继续书写,这时可以在行尾加“\”后再按Enter键换行。如果不加“\”,直接按Enter键换行,Mathematica将自动识别:当一行的算式不完整时,将认为后一行是续行;如果前一行已经独立构成一个完整的算式,则认为算式已经结束,后一行是另一个算式。在4.0版中,其实不必考虑续行问题,不管式子多长尽管放心键入,Mathematica会自动换行。
5. 表
表是存储多个数、变量或算式等对象的一种数据结构,一个表用一对花括号表示,它的成员(元素)在括号内用逗号隔开,同一个表的成员可以有不同的数据类型,表的成员还可以是一个表(子表)。
例如:
In[1]:={1,2,3}
Out[1]={1,2,3}
In[2]:={1,2x,Sin[x],{2,Cos[x]}}
Out[2]={1,2x,Sin[x],{2,Cos[x]}}
经常要提取或改变一个表中的元素,因而以下函数是常用:
t[[n]] 表示表t的第n个元素。
t[[-n]] 表示表t的倒数第n个元素。
t[[{n1,n2, }]] 表示表t的第n1,n2, 个元素。
t[[i,j]] 表示表t的第i个子表的第j个元素。
Length[t] 表示表t的元素的个数。
例5 观察下面表元素的操作方法和输出结果。
In[1]:=b={{1,2,3},{4,5},6}
Out[1]= {{1,2,3},{4,5},6}
In[2]:=b[[1]]
Out[2]={1,2,3}
In[3]:=b[[1,3]]
Out[3]=3
In[4]:=Part[b,2,2]
Out[4]=5
In[5]:=b[[2,2]]=Sin[x];
b
Out[6]= {{1,2,3},{4,Sin[x]},6}
In[7]:={{1,2,3},{4,5},6}[[2,1]]
Out[7]=4
注意:上例In[4]和In[7]中的表达式,含义仍是提取表中的元素。
说明:b[[2,2]]与b[[2]][[2]]含义相同。对于3层表,可用t[[i,j,k]]或t[[i]][[j]][[k]],依此类推。
可以通过函数提取、添加、删除、替换一个表中的元素得到一个新表,也可以通过函数进行表的运算,从而生成新表。最主要的建表函数是Table,其调用格式如下:
Table[f,{i,imin,imax,stepi},{j,jmin,jmax,stepj}]
用于建立通项为f的表,其中f是i,j的函数,min,max,step规定了初值、终值、步长,min和step的默认值为1。
说明:以上参数设置用于建立一个2层表,实际上表的层数可以任意的,读者应能举一反三,这里不再赘述。
四、 表达式的查阅、保存和文件的调入
1. 表达式的查阅
前面已经提到,如果不清除使用过的变量,它将始终被Mathematica记忆,当使用者忘记时就会导致错误的发生,以下介绍如何查阅已经使用了哪些变量。
操作符?用于某些内容的查询,用法如下:
?变量名 显示一个变量的信息。
?ab* 显示以字母ab打头的全部变量。
?Global`* 显示已经使用的全部变量。
问号还可以用于查阅帮助信息,用法如下:
?函数名 显示函数的帮助信息。
??函数名 显示函数更为详细的帮助信息。
?Ab* 显示以字母Ab打头的所有帮助信息。
例如:
In[1]:=?Sin
Sin[z] is gives the sine of z
In[2]:=??Sin
Sin[z] gives the sine of z
Attributes[Sin]={Listable,NumbericFunction,Protected}
2. 表达式的保存
在退出Mathematica时,总是询问是否将用户窗口的内容保存到一个文件中,一般约定以*.nb型文件保存。但是用户窗口犹如一张草稿纸,其中内容未必都有保存价值,经常需要的是选择部分内容予以保存。以下介绍保存表达式和计算结果的方法。
可以运用Windows的拷贝、粘贴功能,用鼠标选中想要保存的内容,然后单击Edit菜单中的Copy,将其复制到Windows的剪贴板,再利用Edit菜单中的Paste将其复制到另一个新打开的工作区窗口中,最后存盘(为*.nb型文件)。使用这种方法,既可以保存用户键入的
表达式,又可以保存Mathematica输出的计算结果。
Mathematica提供了保存变量的值的操作符,用法如下:
变量名 >> “文件名” 将变量的值保存到指定文件中。
变量名 >>> “文件名” 将变量的值添加到指定文件中。
3. 文件的调入
用户以*.nb型文件保存的内容,可以通过File菜单的Open或Notebooks项查找调入。Mathematica将专门为调入的文件打开一个工作区窗口,显示出保存的内容,可以修改或再次执行其中的语句(调入时并不自动执行)。应该注意,这种Notebooks文件格式特殊,并不是Mathematica的程序文件,Mathematica的程序文件是标准的文本文件(一般扩展名为m)。 调入程序文件使用的操作符如下:
<<“文件名” 将指定的文件调入并立即运行,其中双引号也可以省略。
五、 基本代数运算
代数运算是一切符号运算(简单说来,就是让计算机能像人一样进行带字母的运算,得到的是准确结果)的基础,下面介绍实现各种基本代数运算的Mathematica函数,用于变换数学表达式、解方程和解不等式。其中最重要的是化简函数,在各种符号演算中到处都会用到。
1. 化简计算结果
在Mathematica中,符号运算的结果经常是没有化简的,与人工计算的答案不同。但是Mathematica提供了很强的化简功能,能自动或在人工参与下将结果化简,最终得到形式满意的答案。
常用的化简函数有两个:
Simplify[expr] 使用变换化简表达式。
FullSimplify[expr] 使用更广泛的变换化简表达式。
如果使用前一个函数不满意,再使用后一个函数。
例6 化简表达式(1)cos2x + sin2x,(2)cos2x + 2sinxcosx + sin2x,(3)a2。 解:In[1]:=Simplify[Cos[x]^2 + Sin[x]^2]
Out[1]=1
In[2]:=Simplify[Cos[x]^2 + 2Sin[x] Cos[x] + Sin[x]^2]
Out[2]=(Cos[x] + Sin[x])2
In[3]:=FullSimplify[Cos[x]^2 + 2Sin[x] Cos[x] + Sin[x]^2]
Out[3]=1 + Sin[2x]
In[4]:=Simplify[a^2]
Out[4]=a2
In[5]:=Simplify[a^2,a>0]
Out[5]=a
说明:从上例中的Out[2]和Out[3]可以看到这两个函数的差异,后一个功能更强。从Out[4]
看到根式并没有化简,因为Mathematica不知道a是什么类型的数,不化简反倒是正确的。从In[5]中可以看出,这两个函数允许加上含有条件的第二个可选参数,使化简得以进行。
2. 常用的因式分解函数
(1) 因式分解
用于因式分解的函数是:
Factor[expr] 用于和式的因式分解,也可以分解分式的分子、分母(还可以先通分再分解)。
x2 4xx2 3x 4 例7 分解因式:(1)x –1,(2)Sinx-Sinx,(3)2。 x xx2 143
解:In[1]:=Factor[x^4 - 1]
Out[1]=( -1 + x )( 1 + x )( 1 + x2)
In[2]:=Factor[Sin[x] - Sin[x]^3]
Out[2]= - ( -1 + Sin[x] )Sin[x](1 + Sin[x])
x2 4xx2 3x 4 In[3]:=Factor[2] x xx2 1
Out[3]=2( 2 x)(2 x) ( 1 x)(1 x)
(2) 合并同类项
合并同类项的函数是Collect,其调用格式如下:
Collect[expr,x] 将表达式expr中的x的同次幂合并。
Collect[expr,{x,y, }] 将表达式expr按x,y, 的同次幂合并。
(3) 表达式的展开
将表达式展开的函数有:
Expand[expr]
ExpandAll[expr]
这两个函数都可用于乘积的展开,也可以展开分式。后者展开得更为彻底,前者展开分式时只展开分子,而后者将分子、分母都进行展开。
还有两个特殊的展开函数:
ExpandNumerator[expr] 只展开分式的分子。
ExpandDenominator[expr] 只展开分式的分母。
(4) 分式的化简与展开
下列函数分别用于有理式的合并、化简与展开:
Together[expr] 用于通分,把所有的项放在同一个分母上并化简。
Cancel[expr] 用于约去分子、分母的公因式。
Apart[expr] 将有理式分解为最简分式的和。
x2 4xx2 3x 41例8 化简分式:(1)2, (2)。 x xx2 1(a x)(b x)3
x2 4xx2 3x 4 解:In[1]:= r =2; 2x xx 1
Together[r]
2( 4 x2) Out[2]= ( 1 x)(1 x)
In[3]:=Cancel[r]
Out[3]= 4 x4 x 1 x1 x
In[4]:=Apart[r]
Out[4]=2 33 1 x1 x
In[5]:=Apart[
Out[5]=
1,x] (a x)(b x)311 (a b)3(a x)(a b)(b x)311 223(a b)(b x)(a b)(b x)
说明:由上例可以看出,这三个函数对于同一个分式的作用效果不同。函数Apart通常用于求有理式的积分,它的第二个可选参数表明谁是变量,在上例In[5]中的a,b则作为常数。
(5) 输出缩减形式
有时输出结果很长,并不需要了解其中的细节,只需知道它的结构,这时可以使用函数Short简化结果的输出形式,具体用法如下:
Short[expr] 将输出结果缩略成一行显示。
Short[expr,n] 将输出结果缩略成n行显示。
(6) 三角函数式的化简
还有三角函数专用的分解、展开、化简函数:
TrigExpand[expr] 将三角函数式展开。
TrigFactor[expr] 将三角函数式因式分解。
TrigReduce[expr] 用倍角化简三角函数式。
TrigToExp[expr] 将三角函数式转换成指数形式。
ExpToTrig[expr] 前一个函数的逆变换。
Mathematica在求不定积分时,答案经常出现双曲函数,不符合人工解题的习惯,可以使
用TrigToExp转换。
3. 多项式的运算
两个多项式的四则运算使用通常的 + ,- ,* ,/ 运算符,其中乘号可以用空格代替。
例9 进行1 + x与1 - x2的和、差、积、商运算。
解:In[1]:= p1 = 1 + x;
p2 = 1 - x^2;
p1 + p2
Out[3]=2 + x - x2
In[4]:= p1 - p2
Out[4]= x + x2
In[5]:=p1*p2
Out[5]=( 1 + x)(1 - x2 )
In[6]:= p2/p1
1 x2
Out[6]= 1 x
注意:从Out[5]和Out[6]可以看到,乘法和除法其实什么也没做,需要用前面介绍的化简函数将结果化简。
以下介绍四个常用函数:
PolynomialQuotient[p1,p2,x] 求x的多项式p1被p2除的商。
PolynomialRemainder[p1,p2,x] 求x的多项式p1被p2除的余式。
PolynomialGCD[p1,p2, ] 求多个多项式的最大公因式。
PolynomialLCM[p1,p2, ] 求多个多项式的最小公倍式。
4. 解方程
(1) 解符号方程(组)
在Mathematica中“=”号用于给变量赋值,而方程中的等号使用符号“= =”(即两个等号)表示。方程组用花括号括起来,各个方程用逗号分隔。所有未知量也用花括号括起来,未知量之间用逗号分隔。单个方程和未知量不必使用花括号。以下用eqns表示方程组,用vars表示未知量组。
下列函数用于解符号方程(组):
Solve[eqns,vars] 对系数按常规约定求出方程(组)的全部解。
Reduce[eqns,vars] 讨论系数出现的各种可能情况,分别求解。
ax by 0例10 解方程或方程组:(1)ax + b = 0,(2) 。 cx dy 1
解:In[1]:=Solve[a x + b = = 0,x]
b Out[1]= x a
In[2]:=Reduce[a x + b = = 0,x]
Out[2]= a = =0 && b= =0 | | x= = b && a≠0 a
In[3]:=Solve[{a x + b y= =0,c x + d y= =1},{x,y}]
ba Out[3]= x ,y bc ad bc ad
说明:上例首先用这两个解方程的函数解同一个方程,Solve不考虑a=0的情况,而Reduce则进行讨论。然后再用它们解同一个方程组,Solve给出的答案遵循通常的“系数行列式不等于0”的约定,而Reduce给出的答案就令人厌烦了,因此解符号方程(组)时主要使用Solve。应当指出它们不仅能解一般的代数方程,还可以解一些无理方程、三角函数方程和含有指数、对数的方程等(但是在解超越方程时,Mathematica有时会提示答案不是全部解)。如果在方程的系数中使用小数,则改为求近似解。
例11 解下列方程或方程组:
(1)15x6 - 13 x5 - 73x4 - 55x3 - 86x2 +140x – 24 = 0,(2)x 1 x 1 = 0,(3)
x y 1。 x 1 x 1 = a,(4) 22 x y 1
解:In[1]:=Solve[15x6 - 13x5 - 73x4 - 55x3 - 86x2 +140x – 24 = = 0,x]
12 Out[1]={{x 2},{x {x {x 3}, 53
11 {x ( 1 ii7)},{x ( 1 ii7)} 22
In[2]:=Solve[x 1 x 1= =0,x]
Out[2]={ }
In[3]:=Solve[x 1 x 1= =a,x]
4 a4
Out[3]={{x }} 4a2
In[4]:=Solve[{x+y= =1,x^2+y^2= =1},{x,y}]
Out[4]={{x→0,y→1},{x→1,y→0}}
说明:上例中In[2]无解,则输出一个空括号。Mathematica的解集输出优于MATLAB的同类函数输出,有几个解、各个未知量的值都一目了然。
(2) 求近似解
众所周知,很多方程是根本不能求出准确解的,前面介绍的那些函数也无能为力。下列函数专门用于求方程(组)的数值解,其调用格式如下。
NSolve[eqns,vars] 求代数方程(组)的全部数值解。 FindRoot[eqns,{x,x0},{y,y0}, ] 从(x0,y0, )出发找方程(组)的一个解。 例12 求下列方程或方程组的近似解:
x3 y 0 (1)x– 1 = 0, (2) 2。 2x y 1 3
解:In[1]:=Solve[x^3-1.0 = = 0,x]
Out[1]={{x→ - 0.5 - 0.866025ii},{x→ - 0.5 + 0.866025ii},{x→1.}}
In[2]:=NSolve[x^3 - 1 = = 0,x]
Out[2]={{x→ - 0.5 - 0.866025ii},{x→ - 0.5 + 0.866025ii},{x→1.}}
In[3]:=FindRoot[x^3 - 1= = 0,{x,5}]
Out[3]={x→1.}
In[4]:=FindRoot[x^3 - 1= = 0,{x,I}]
Out[4]= {x→ - 0.5 + 0.866025ii}
In[5]:=FindRoot[{x^3 – y = = 0,x^2 + y^2 = = 1},{x,1},{y,1}]
Out[5]={x→0.826031,y→0.563624}
注意:上例中In[1]说明,如果方程中出现小数,则Sovle也求近似解。
还有求多项式根的函数Roots,通常可用Solve代替,这里就不介绍了。
(3) 消去某些变量
最后介绍一个很有用的函数:
Eliminate[eqns,elims] 从一组等式中消去变量(组)elims。
x2 y2 z2 1例13 (1)从方程组 2中消去未知数z, 22 x (y 1) (z 1) 1
x2 y2 z2 1 (2)从方程组 x2 (y 1)2 (z 1)2 1 中消去未知数y、z,
x y 1
x2 y2 z2 1 (3)从方程组 x2 (y 1)2 (z 1)2 1 中消去未知数y、z,解出x。
x y 1
解:In[1]:=Eliminate[{x^2+y^2+z^2= =1,x^2+(y -1)^2 +(z -1)^2= =1},z]
Out[1]=(2 - 2y)y = = x2
In[2]:=Eliminate[{x^2 + y^2 + z^2= =1,x^2 + (y - 1)^2 + (z - 1)^2 = =1, x + y= = 1},{y,z}]
Out[2]= - 2x + 3x2 = = 0
In[3]:=Solve[{x^2 + y^2 + z^2 = =1,x^2 + (y - 1)^2 + (z - 1)^2 = = 1,
x + y = = 1},x,{y,z}]
2 Out[3]={{x→0},{x→}} 3
注意:上例中In[3]表明,Solve[eqns,vars,elims]的功能是消去y,z,求出x的值。同样,函数Reduce也有此用法。
5. 解不等式
Mathematica没有解不等式的内部函数,但是它自带的外部函数有此功能,必须将含有此函数的程序文件调入后才能使用,文件位于Mathematica的标准扩展程序包集中。
调入方法是键入:
<<程序包子集名 `文件名` (文件名不必带扩展名)
也可以调入整个程序包子集:
<<程序包子集名 `
标准扩展程序包集是Mathematica的一个子目录StandardPackages,它的子目录本书称为程序包子集。程序包子集按数学学科分类,如Algebra,Calculus等。每个程序包子集中有多个文件,文件扩展名为m。每个文件中有一个或多个外部函数,这里将这类文件称为程序包(文件)。在标准程序包集的代数程序包子集Algebra中,有解不等式的程序文件InequalitySolve.m,它位于子目录:
D:\ Mathematica\ 4.0\ AddOns\ StandardPackages\ Algebra\
下。其中有函数:
InequalitySolve[不等式(或等式)组,变量组]
用于解不等式(或等式)组。将该函数调入后,如同内部函数一样使用。这个函数功能强大,在表达式中允许使用各种不等号和等号。其中,符号≥可以由基本输入模板中的相应按钮输入,也可以输入“> =”。
习题13.1
1.学会使用基本输入模板输入各种数学符号和特殊字符,例如:
∞,π,α,e,λ,4,25,7,。 5
2.打开并浏览Mathematica的Help窗口。
3.表达式输入后,执行计算按哪些键?
2114.计算: ; 2.5 +; 210000; π的300位近似值。 325
5.计算:sin2; cos1350; arcsin1; tg0.2; 2
200!; ln5.0; log210; e。
6.求30位近似值重解第5题。
7.取很小的正数x直接计算验证:sinx 1。 x
n 1 8.取很大的正整数n直接验证: 1 e,体验这样做的效果很不理想,当遇到计算时间 n
太长时学会中止计算。
9.因式分解:
(1) x(y + z)2 + y(z + x)2 + z(x + y)2 - 4xyz;
(2) (x + 1)2 +(4y + 1)2 + 8xy - 1;
(3) x(y - z)3 + y(z - x)3 + z(x - y)3 。
10. 将下列分式分解成部分分式之和:
x5 x4 8x2 1(1) ; (2) 。 32x x(x 1)(x 1)
11. 解下列方程(组):
x y 1(1) x5 – x3 – 4x2 - 3x – 2 = 0; (2) 2 。 2x y 1
正在阅读:
1数学软件认识试验05-13
有理数乘除法简算06-17
黄氏世系源流(峭山公及其他系综合)11-15
第1次作业03-25
2009全国税收执法资格考试题库-法律10-13
“不忘初心、牢记使命”心得体会02-25
电大本科护理美学考试重点判断题03-18
急诊科工作计划201104-24
优秀英语广告语集锦02-12
一、阅读《美林药品说明书》,完成下列题目04-17
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 试验
- 认识
- 数学
- 软件
- C23种设计模式 第2章 抽象工厂模式(Abstract Factory)
- 施工危险源告知书
- 平凡的感动:磨刀老人独脚撑起一个家
- 简易RLC测量仪毕业设计
- 海量地震数据叠前逆时偏移的多GPU联合并行计算策略
- 冒险岛唤灵斗师技能加点
- 新人教版语文七年级下册文言文专项练习
- 尾巨桉与马占相思木材P-RC APMP工艺制浆性能比较
- 负压称量室验证与确认
- 2010湖岭镇中心小学教科室工作总结
- 硅烷交联电力电缆工艺文件
- 四六级答题方法2
- 2014马年元月出生的宝宝如何起名
- 基于ADS1298和STM32F407的心电采集与显示系统设计_宋勐翔
- 2遥感的物理基础
- 2011年高考文科综合能力测试(四川卷)地理部分(清晰word版)
- 贵州省公需科目大数据培训考试习题及答案100分
- 对生活一年的总结报告
- 常用数据分析与处理方法
- 民航基础设施建设基金征收使用管理暂行办法