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

本文来源:https://www.bwwdw.com/article/y4pe.html

Top