数学实验课程教学的实践与认识
[pic]
编著:李开友
四川机电职业技术学院基础系
|数学实验课程教学的实践与认识 |
| |
| 看到“数学实验”几个字人们会问:做数学题不是靠一张纸、一支笔就行了吗,怎么像物理、化学一样要做实验了呢?对了,这是计算|
|机技术和数学软件引入教学后出现的新事物,是数学教学体系、内容和方法改革的一项尝试。几年前,设置数学实验课的构想一出现,立|
|即在数学教育界引起反响。1995年在原国家教委组织实施的“高等教育面向21世纪教学内容和课程体系改革”计划中,“理科非数学类专业 |
|高等数学课程体系和内容改革”项目的总体构想报告,就把“数学实验”列为高校非数学类专业的数学基础课之一,一些学校积极创造条件 |
|准备付诸实施。通过实践,课程的指导思想更加明确,课程的内容设计基本确定,也取得了一些经验,并为教材建设奠定了基础。 |
|数学教育在整个人才培养过程中的重要性是人所共知、不言而喻的,从小学到大学十几年,数学一直是一门主课,课程中讲的、练的、考|
|的主要是计算方法、公式推导、定义叙述、定理证明,不妨统称为“算数学”。对于将来要以数学为工具解决各种实际问题的学生来说,当|
|然需要准确、快捷的计算和严密的逻辑推理,即要学好“算数学”,但是在计算、推理之前首先要用数学语言描述那个问题,建立数学模型|
|,之后还要进行分析、修正,也就是要会“用数学”。传统的数学教学体系和内容侧重于前者,只是在讲到每一部分的应用时举几个例子,|
|这对于后者的训练,特别是综合应用的训练,是远远不够的。近十几年来许多学校相继设置的数学建模课程,和最近几年蓬勃开展的全国|
|大学生数学建模竞赛,是培养学生“用数学”能力的有益尝试,受到学生们的热烈欢迎和教育界的充分肯定。开设数学实验课可以说是在总|
|结“用数学”的基础上,为进一步提高学生“用数学”能力而进行的又一数学教改试验。 |
|长期以来,内容多、负担重、枯燥乏味、学生学习积极性不高,一直困扰着大学数学教育,与此形成鲜明对照的是受大环境支配的计算机|
|热。由同学自己动手,用他们熟悉的、喜欢“玩”的计算机解决几个经过简化的实际问题,让学生亲身感受到用所学的数学解决实际问题的|
|酸甜苦辣。“做然后知不足”,在培养学生独立解决问题的同时,激发他们进一步学好数学的愿望,促成数学教学的良性循环,开设数学实|
|验课是朝着这个方向前进的一种努力。 |
|为了适应当前数学教学改革的需要,从培养21世纪创新人才出发,在讲课及实验课时的基础上我们编写了本“数学实验指导书”。这本书包|
|括以下主要部分:数值计算;微分学;积分学;图形描绘;代数方程和微分方程;级数。更多的实验以后逐步补充。 |
Mathematica软件包
计算机发展到今天,数学起着举足轻重的作用。随着计算机的发展,它也能够帮助人们处理和解决许多数学问题。在众多数学软件中,大致可分为两类。一类是数值计算型软件,如:Matlab、Xmath、MLAB等,这一类软件具有非常强的计算能力和可视化功能,运行效率很高;另一类软件为符号运算型软件,如:Mathematica、Maple等,他们以处理符号运算强而出名,可以得到解析符号解和任意精度解,数值计算功能相对较弱。Mathematica便是符号运算中的佼佼者。
第一节 Mathematica快速入门
Mathematica是由美国物理学家Stephen Wolfram领导的一个小组开发进行量子力学研究的,软件开发成功促使Stephen Wolfram与1987年创建Wolfram研究公司,并推出了Mathematica1.0。在1996和1998年,该公司推出了2.2和3.0版本,较之以前的版本有较大改动。目前我们常用的就是这两个版本。Mathematica系统是用C语言开发的,因此可以方便的移植到各种计算机系统上。
Mathematica是一个功能强大的数学软件包。它将符号演算、数值计算和绘图功能有机结合在一起,能进行多项式的因式分解、展开;一般和微分方程的求根;幂级数的展开;复数、向量、矩阵、极限和微积分的各种运算等。可以按需要计算成任意位数的小数表示出来(只要机器内存足够大)。并且有较强的二维函数作图、三维函数作图及动画功能.适合于从事实际工作的工程技术人员和科学工作者使用,正日益成为高等数学计算的一个不可缺少的工具。
本书以Mathematica2.2为例。
一、算术运算
(一) 激活Mathematica主工作窗口,有两种方法:
(1)选择:开始—程序—Mathematica菜单条—Mathematica 2.2子菜单;
(2)用鼠标双击Windows桌面上的Mathematica快捷图标。(如图1)
图 1
激活Mathematica主工作窗口后输入命令;键入SHIFT+ENTER(或工具栏中的[pic])来执行输入的命令语句,在执行语句后,会加上提示符:
In[数字]:=
Out[数字]=。
注:In[数字]:=为输入提示符, Out[数字]=为输出提示符,为计算机执行语句后自动生成,不用键入。
Mathematica系统区分大小写,A和a的含义是不同的。它的函数都以大写字母开头的单词为函数名, Plot3D, Plot, Eigenvalues, Cos等, 常数也是如此, 如Pi. 函数名后的参数用[]括起, 逗号隔开.
用鼠标点击File菜单,选中子菜单Exit,则可退出该软件。此时出现对话框(如图2),若前面的输入和计算结果需要存储则选择:是(Y)。则存储为文件名为Ne-wnb-1.ma的文件,供下次使用时调用;否则选择:否(N);如果不想退出,选择:取消。
如果你要将结果存储为一个你喜爱的名字,如“积分.ma”。可通过点击File菜单,选中子菜单Save As/Export…,在窗口的File Name栏中输入相应的文件名:“积分.ma”,点击OK按钮即可。
(二) Mathematica的基本计算
1. 算术运算符
+ - * / ^ 加、减、乘、除、乘方(乘也可用空格或在不相混淆的前提下省去不写) 上述运算的优先顺序与通常的数学运算完全一致。
expr 计算expr的值,其中expr为表达式。
N[expr] 计算expr的近似值,有效位一般为6位
Expr//N 与N[expr]等价
N[expr, n] 计算expr的近似值,有效位为n位
2. 数学函数
Sqrt[x] x开平方
Exp[x] e的x次方 ex
Log[x] x的自然对数 lnx
Log[b,x] 以b为底, x的对数
Abs[x] |x|(x为复数时指模)
Round[x] 离x最近的整数
Ceiling[x] 大于等于x的最小整数
x+Iy 复数x+iy
Re[z] 复数z的实部
Im[z] 复数z的虚部
Arg[z] 复数z的辐角
Quotient[n,m] n/m的整数部分
Mod[n,m] n/m的余数
Random[] 0,1间随机数
Max[x,y,...],Min[x,y,...] 最大数和最小数
Sin[x],Cos[x],Tan[x],Cot[x], Sec[x],Csc[x],
ArcSin[x],ArcCos[x],ArcTan[x], ArcCot[x],ArcSec[x] ArcCsc[x]
3. 常数
Pi Pi=3.141592653589793...
E e=2.71828...
Degree Pi/180
I i=Sqrt[-1]
Infinity 无穷大
DirectedInfinity 有向的无穷
例1 求表达式[pic]的值
输入:-3^2*((4/7 + 2)*5 - 8)^(1/4)
输出: [pic] (没有输出结果)
输入: -3^2*((4/7+2)*5-8)^0.25
输出: -13.361 (*仅仅是把1/4改为0.25就会输出计算结果*)
输入: -3^2*((4./7+2)*5-8)^(1/4)
输出: -13.361
注意: 如果表达式中含有小数,则会输出近似值,否则输出准确值。“(*” 和 “*)”之间为注释内容,不参加运算。
例2 求表达式 [pic]的值
输入: 17^(1/3)*5*Pi+(4/9)^0
输出 [pic]
输入 N[17^(1/3)*5*Pi+(4/9)^0,20]
输出 41.389596777612950615
比较:
输入 N[17^(1/3)*5.0*Pi+(4/9)^0,20]
输出 41.3896
例3 求表达式 [pic]
输入 Sqrt[S输入2.]]
输出 0.953571
二、变量与赋值
在Mathematica中可以用一些字母表示一个数学函数,比如Sin[2]。也可以用一些字母表示某个具体的数字,比如Pi=3.1415……,在一些计算中往往需要保留大量的中间结果,我们就用一些字母表示这些数字。
1.变量
在程序执行过程中,其值不断变化的量称为变量。其标示符应该由字母开头的字母数字串组成,可以包含任意多的字母数字,但不能包含空格和标点符号,比如mn,h2,Math4,ToPo都是合法变量名。在Mathematica中,变量不仅可以表示一个数字,也可表示一个表达式,比如多项式或复杂的算式。
2.变量的赋值
我们可以通过运算符号“=”或“:=”来给一个变量赋值,
一般格式为:
变量=表达式 或 变量1=变量2=表达式
其执行步骤为:先计算等号右侧的表达式的值,再将结果赋给左侧变量。如果使用“:=”进行赋值,并不计算表达式的值,而是将整个表达式赋给变量,直到需要时才被计算。因此,“=”称为立即赋值,“:=”称为延迟赋值。例如:
输入 Math4 = 3*2 + 6.8
输出 12.8
输入 Math4 := 3*2 + 6.8 这一句没有输出
输入 Math4 = 4x + 5x^2 + 2x^3 + 8x^4
输出 4x+5x2+2x3+8x4
输入 s1 = s2 = 3*4 + 4.5
输出 16.5
输入 Math4 /. x -> 2
输出 172
其中“/.x->”为变换规则,他把变量Math4中的x变换为2。只要不进行重新赋值或退出系统,原有的变量就会保留。有时候我们需要清除这些值,以免在以后的计算中发生错误。清除变量Math4,s1如下:
Clear[Math4,s1]
注意:上述输入语句均没有输出。
三、自定义函数
定义一个函数,在Mathematica中可以用以下两种方式:
f[x_]=expr 或 f[x_]:=expr,
其中expr为函数f(x)的表达式。Clear[f]: 清除f的所有定义内容。自定义函数可以像Mathematica系统内部函数一样使用,其书写要按照定义的函数名书写。
例4 已知 [pic],求f(2)。
输入 f[x_] = x^3; f[2]
输出 8
中间的分号表示该语句不输出结果,可以连续输入一些带分号的语句再执行。带分号的语句之间无需换行。
例5 已知[pic]
求f(1.2),f(-2)的值并作图。
输入 f[x_] := (E^x)*Sin[x] /; x [pic],Direction->1] x趋近于 [pic]时expr的极限
Limit[expr,x-> [pic],Direction->-1] x趋近于 [pic]时expr的极限
例1求下列极限:
(1) [pic] (2) [pic] (3) [pic]
(4) [pic] (5) [pic] (6) [pic]
(7) [pic] (8) [pic] (9) [pic]
(10) [pic] (11) [pic] (12) [pic]
解:(1)输入 Limit[(1 - 2x)^(1/x), x -> 0]
输出 [pic]
(2)输入 Limit[Sin[x - Pi/3]/(1 - 2Cos[x]), x -> Pi/3]
输出 [pic]
(3) 输入 Limit[(x^2 - 1)/(2x^2 - x - 1), x -> 0]
输出 1
(4) 输入 Limit[(x^2 - 1)/(2x^2 - x - 1), x -> 1]
输出 [pic]
(5) 输入 Limit[(x^2 - 1)/(2x^2 - x - 1), x -> Infinity] (* Infinity指正无穷大*)
Limit[(x^2 - 1)/(2x^2 - x - 1), x -> -Infinity]
输出 [pic]
[pic]
(6) 输入 Limit[Tan[Pi/4 - x]^Cot[x], x -> 0]
输出 [pic]
(7) 输入 Limit[(Sin[1/x] + Cos[1/x])^x, x -> Infinity]
Limit[(Sin[1/x] + Cos[1/x])^x, x -> -Infinity]
输出 e
e
(8) 输入 Limit[(Cos[x^(1/2)])^(1/x), x -> 0]
输出 [pic]
(9) 输入 Limit[ArcTan[1/(1 - x)], x -> 1, Direction -> 1] (*沿正向靠向于1,即1的左极限*)
输出 [pic]
(10) 输入 Limit[ArcTan[1/(1 - x)], x -> 1, Direction -> -1] (*沿负向靠向于1,即1的右极限*)
输出 - [pic]
(11) 输入 Limit[Log[1 + E^x]/x, x -> -Infinity]
输出 0
(12) 输入 Limit[Log[1 + E^x]/x, x -> Infinity]
输出 1
二、微分
微分学是微积分的重要组成部分,它主要包含导数与微分,其中导数反映出函数相对于自变量的变化快慢的程度,微分则指明当自变量有微小变化时,函数大体上变化多少。从实际中来又紧密联系现实世界的实际是微分的显著特点,对初学微分的同学,在学习方法上,要改变那种偏重解题技巧而忽视数学概念的思想方法的习惯,要知道微积分的精华,并不仅仅是解题的技巧,而是能更多的体会隐藏在各基本概念之后的数学思想,如果数学思想不明确,即使有一定的解题技巧,也不一定得到有价值的科学结论。
Mathematica关于导数和微分的命令如下:
命令格式: D[f, x] f的导数或偏导数 [pic]
D[f, [pic]] f的高阶混合偏导数 [pic]
D[f, {x, n}] f对x求n阶导数或偏导数
以上函数当f为单变量函数时,指f对x的导数。
以下为全微分命令格式:
Dt[f] f的微分或全微分df
Dt[f, x] 函数f对x的导数df/dx
Dt[f, {x, n}] f对x求n阶导数
例2求下列函数的一阶导数
(1)y= [pic] (2)y= [pic]
解:(1)输入 D[2x^3 + 5x^2 + Sin[7], x]
输出 [pic]
(2)输入 D[Log[Cos[x]], x]
输出 -Tan[x]
例3、求下列函数的三阶导数
(1)y=ln cos x (2)y=[pic]
解:(1)输入 D[Log[Cos[x]], {x, 3}]
输出 -2Sec[x]2Tan[x]
(2)输入 D[x^7, {x, 3}]
输出 [pic]
例4、求下列函数在指定点的值
(1) [pic];
(2) [pic].
解:(1)输入 D[Sin[x] - Cos[x], x]
% /. x -> (Pi/6) (*该次输入将两个命令作为一个输入*)
%% /. x -> (Pi/4) (*对上上一个输出中的x用(Pi/4)代替的结果*)
输出 Cos[x] + Sin[x]
[pic] (*对上一个输出中的x用(Pi/6)代替的结果*)
[pic]
(2)输入 D[3/(5 - x) + x^2/5, x] /. x -> 0 (*直接对该次输出中的x用0代替的结果*)
D[3/(5 - x) + x^2/5, x] /. x -> 2
输出 [pic]
[pic]
其中%代表上一个输出,%%代表上上一个输出,%%%依此类推。
例5、求函数 [pic]的两个一阶偏导数和四个两阶偏导数。
输入 f[x_, y_] := x*Sin[x] + Cos[y];
D[f[x, y], x]
输出 x Cos[x] + Sin[x]
输入 D[f[x, y], y]
输出 -Sin[y]
输入 D[f[x, y], {x, 2}]
输出 2 Cos[x] - x Sin[x]
输入 D[f[x, y], {y, 2}]
输出 -Cos[y]
输入 D[f[x, y], x, y]
输出 0
输入 D[f[x, y], y, x]
输出 0
比较:
输入 f[x_, y_] := x*Sin[x] + Cos[y]; Dt[f[x, y], x]
输出 x Cos[x] + Sin[x] - Dt[y, x] Sin[y]
*隐函数与参数方程所确定的函数的导数
如下自定义函数
Dfxy[f[pic], x[pic], y[pic]]:=Solve[D[f, x]= =0, y[pic][x]]
和 Dxyt[y[pic], x[pic], t[pic]]:=D[y, t]/D[x, t]
可用于求隐函数与参数方程所确定的函数的导数。
例如:求隐函数[pic]所确定的函数y=y(x)的导数
Dfxy[f[pic], x[pic], y[pic]]:Solve[D[f, x]= =0, y[pic][x]]
Dfxy[x[pic]2+(y[x][pic]2﹣1, x, y)
输出结果为: [pic]
即 [pic]
再如:求参数方程[pic]所确定的函数y=y(x)的导数
Dxyt[y[pic], x[pic], t[pic]]:=D[y, t]/D[x, t]
Dxyt[aCos[t], b Sin[t], t]
输出结果为: [pic]
即: [pic]
习 题
1.求下列极限(精确到五位小数):
(1) [pic] (2) [pic]
2.求下列函数的导数:
(1) 已知:y=[pic]求[pic]
(2) 已知:y=[pic]求[pic]
(3) 已知y=xarctanx, 求高阶导数[pic]以及它在x=0点的值。
5.求下列隐函数的导数:
(1) [pic] (2) [pic]
6.求下列参数方程所确定的函数的导数:
(1) [pic] (2) [pic]
7、[pic],求[pic]
8、z=ln(x2+y2) 求[pic]
9、求z=yxy的全微分。
第三节 用Mathematica作积分计算
积分学包括不定积分和定积分两大部分,它与微分学有着密切的联系。微积分的基本定理又称牛顿-莱布尼兹(Newton-Leibniz)公式,它揭示了微分与积分之间本质的联系,即微分与积分是互逆的运算,同时揭示了它与不定积分之间的联系,即积分与不定积分都归结为求原函数。积分在几何、物理等方面有着广泛的应用。Mathematica软件包中,积分主要是通过函数Integrate[ ]来完成,它包括不定积分和定积分。本节将通过大量的实例来讲解Mathematica4.0中积分函数的使用及注意事项。
一、不定积分
格式: Integrate[f,x]
函数Integrate[f,x]和D[f,x]为互逆的运算,如果对一个函数f先做积分运算Integrate[f,x]再求导D[f,x],则会得到函数f本身。另外,不定积分的计算结果并不输出常数C,观察如下运算:
输入 Integrate[Cos[x], x]
输出 Sin[x]
输入 D[Sin[x] + c, x]
输出 Cos[x]
Mathematica2.2在做积分运算时作了如下约定:
(1)对于与积分变量无关的变量,Integrate函数总是假定它和积分变量相互独立,计算时把它当作常数对待。例如: [pic]
输入 Integrate[a*Sin[x] + b*Cos[x], x]
输出 -a Cos[x] + b Sin[x]
上述计算中Mathematica2.2把a和b当作常数。
(2)对变量的运算只取一般情况,不考虑特殊值。例如: [pic]的运算结果是[pic],显然在取特殊值n=-1时不成立。比较:
输入 Integrate[x^n, x]
输出 [pic]
输入 Integrate[x^(-1), x]
输出 Log[x]
(3)由于积分相对于微分来说是一个比较困难的过程。微分有一套系统的生成规则,积分没有统一的方式计算。微分运算时,结果与要微分的函数是同一种类型函数,至少是相似的。Mathematica做积分运算时,结果总是很复杂,它尽量保持与要积分的函数是同一类型。比较:
输入 Integrate[Log[x], x]
输出 -x + x Log[x]
输入 Integrate[Log[Log[x]], x]
输出 x Log[Log[x]] - LogIntegral[x]
LogIntegral为内部函数,其定义为: [pic](z>1)。
例1 求下列不定积分:
(1)[pic] (2)[pic] (3)[pic]
(4)[pic] (5)[pic]
(6)[pic]
解:(1)输入 Integrate[(3 - x^2)^3, x]
输出 [pic]
(2)输入 Integrate[x^2/(1 + x^2), x]
输出 x - ArcTan[x]
(3)输入 Integrate[(Cot[x])^2, x]
输出 -x - Cot[x]
(4)输入 Integrate[x/(1 + x^2 + (1 + x^2)^(3/2)), x]
输出 [pic]
(5)输入 Integrate[Sin[x]Cos[x + a], x]
输出 [pic]
(6)输入 Integrate[Log[Sin[x]]/(Sin[x])^2, x]
输出 -x - Cot[x] - Cot[x] Log[Sin[x]]
二、定积分
定积分使用的函数仍然是Integrate,只是多了几个参数而已。以下为定积分函数Integrate的使用格式:
Integrate[f ,{x,xmin,xmax}] ——定积分 [pic]
Integrate[f ,{x,xmin,xmax},{y,ymin,ymax}]
——二重积分 [pic]
*在mathematica4.0版本中,积分Integrate还可以带一定的参数选项,以控制积分的进行:
|选项参数 |缺省值 |意义 |
|PrincipalValue |False |是否求柯西主值 |
|GenerateConditions |True |结果是否显式地给出条件 |
|Assumptions |{ } |是否对参数进行假定 |
看下面的例子:
输入 Integrate[x^n, {x, 0, 1}, GenerateConditions -> False]
输出 [pic]
当设置GenerateConditions -> False时,Mathematica4.0将参数n作为一般的值对待,并不考虑特殊情况。我们可以使用Assumptions选项给积分附加一些条件。对上例我们分别假定n>1 ,n=1和n=-1的情况分别计算:
输入 Integrate[x^n, {x, 0, 1}, Assumptions –> (n > 1)]
输出 [pic]
输入 Integrate[x^n, {x, 0, 1}, Assumptions -> (n = 1)]
Simplify::bass:1 is not a well formed assumption.
Simplify::bass:1 is not a well formed assumption.
输出 [pic]
输入 Integrate[x^n, {x, 0, 1}, Assumptions -> (n = -1)]
Integrate::"idiv":
Integral of [pic]does not converge on{0, 1}.
输出 (Integrate[ [pic], {x, 0, 1}, Assumptions -> -1]
上述输出表明n=1时,虽然可以算出却输入并不是最简的格式;n=-1时,无法计算,原样输出。
例2 求下列定积分
(1)[pic] (2)[pic] (3)[pic]
(4)[pic] (5)[pic]
解:
(1)输入 Integrate[x^2Cos[x], {x, 0, 2*Pi}]
输出 4π
(2)输入 Integrate[ArcCos[x], {x, 0, 1}]
输出 1
(3)输入 Integrate[1/(1 + x^2), {x, -Infinity, Infinity}]
输出 π
(4)输入 Integrate[x + y, {x, 0, 1}, {y, 0, 1}]
输出 1
(8)输入 Integrate[x*y^2, {x, 0, 1}, {y, x^2, x}]
输出 [pic]
二重积分必须先化为二次积分,再输入命令计算。
习 题
1.求下列各式的不定积分:
(1) [pic] (2) [pic]
2.求下列各式的定积分:
(1) [pic] (2) [pic] (3) [pic]
3.计算[pic] 其中D由圆心在原点的单位圆围成。
4、计算[pic]其中D由x=0, y=0, x+y=2围
第四节 .图形函数
Mathematica的图形函数十分丰富,用寥寥几句就可以画出复杂的图形,而且可以通过变量和文件存储和显示图形,具有极大的灵活性。
图形函数中最有代表性的函数为:
Plot[表达式,{变量,下限,上限},可选项],
(其中表达式还可以是一个"表达式表",这样可以在一个图里画多个函数);变量为自变量;上限和下限确定了作图的范围;
一.一元函数作图
Plot[函数f,{x,xmin,xmax},选项]
在区间{x,xmin,xmax}上,按选项的要求画出函数f的图形
例一、(1)作y=xsin[pic]的图形
输入 Plot[x*Sin[1/x],{x,-1,1}]
输出
[pic]
输入 Plot[x Sin[1/x], {x, -0.1, 0.1}]
输出
[pic]
(2)在同一坐标系中作y=sinx和y-cosx的图形
输入 Clear〔x〕
Plot〔﹛Sin〔x〕, Cos〔x〕〕,﹛x, 0, 2Pi﹜〕
输出
[pic]
Plot函数的可选项常用参数的使用格式与作用
Plot函数除了上述使用方式外还有另一种使用方式:
Plot[﹛f1, f2, , fi, ]﹛x, xmin, xmax﹜可选参数]
其中可选参数的格式为:
可选参数名->可选参数值(或可选参数值表)
1.参数AspectRatio
此参数是设置作出的图象的横纵比,默认的横纵比为1:0.618 。将参数AspectRatio的值设置为Automatic可以按实际比例(1:1)作图。比较:
Plot[﹛Sin[x], Cos[x]}, ﹛x, 0, 2*Pi}]
和 Plot[﹛Sin[x], Cos[x]}, ﹛x, 0, 2*Pi﹜, AspectRatio→Automatic]
它们的图象分别如下
[pic]
[pic]
2.参数PlotStyle
参数PlotStyle的值是一个表,应将它的值放在双花括号内,它决定作的图形的划线的宽度、虚实、色彩等。
(1)参数值RGBColor[r, g, b]——决定划线的色彩。
其中r、g、b分别表示红色、绿色、蓝色的强度,其取值范围是[0, 1]之间的数。
例如:用红线作图:
Plot[Sin[x], {x, 0, 2*Pi} , PlotStyle→﹛﹛RGBColor[1, 0, 0]}}]
(2)参数值Thickness[t]——它描述划线的宽度,
其中t是一个实数,其取值范围在[0, 1]之间,这时以整个图的宽度为1。因此t的取值一般应远远小于1。例如:
作图:Plot[Sin[x], {x, 0, 2*Pi}, PlotStyle→{{RGBColor[1, 0, 0], Thickness[0.001]}}]
(3)参数PlotPoints——它确定函数值的单位取点。
当函数值变化比较剧烈时,应取一个比较大的值,以免作出的图形过分偏离函数的实际图形。其格式为:
PlotPoints→n
其中n为单位取点数。比较下面图形:
作图:Plot[Exp[﹣[pic]2/2], {x, ﹣7, 7}]
[pic]
Plot[Exp[﹣[pic]2/2], {x, ﹣7, 7}, PlotPoints→60]
[pic]
4.参数PlotRange
它决定作图时函数值的取什范围。其格式为:
PlotRange→参数值
其参数值为:
(1)Automatic——此为系统默认值,当函数在作图区间存在无穷值点和很侠窄的尖峰,系统会将这一部分切掉;
(2)All——要求画出函数值的全部情况,当发现系统下切掉了重要的尖峰时可以使用该值重画图形。但在无穷值点不应使用该值,否则会跌入无穷循环的陷阱,甚至导致死机;
(3){y1, y2}——要求作出函数值在{y1, y2}范围内的图形。
作图:Plot[Tan[x], {x, ﹣Pi, Pi}]
Plot[Tan[x], {x, ﹣Pi, Pi}, PlotRange->{﹣60, 60}]
5.参数DisplayFunction
它决定图形的显示与否。当它取值为$DisplayFunction时(系统的默认值),图形将在屏幕上显示出来;当它取值为Identity时表示只生成图形表达式,但不显示。其格式为:
DisplayFunction→$DisplayFunction(或Identity)
执行下述语句后,将只计算图形的表达式,而不输出图形。如:
输入
A=Plot[Sin[x], {x, 0, 2*Pi}, DisplayFunction->Identity]
则输出为
-Graphics-
其中-Graphics是上述图形的表达式,它包括与图形有关的数据和性态的描述,可以用函数InputForm[A]或下面的Show[A]把它的内容显示出来。
图形的重新显式与组合显式:Show函数
函数Plot可以在同一坐标系的同一区间作出不同函数的图象,但不时需要在同一坐标系的不同区间作出不同函数的图象,或者在一个坐标系内做一个函数图象时要求函数的各个部分其有不同的性态,这就需要使用Show函数。
我们知道Plot函数的参数DisplayFunction取值为Identity时,可以得到图形的表达式-Graphics-,而不把图形显式出来. Show函数的功能就是把求出的图形表达式作为图象显式出来,其格式为:
Show[图形表达式,图形表达式,…,参数]
使用时可以重新指定作图参数(即:Plot函数的相关参数),使图形按照需要的方式显示出来。例如:用a=Plot[{Sin[x], Cos[x]}, {x, 0, 2*Pi}]可以作出正弦和余弦函数在[0, 2[pic]]上的图象。如果希望用实际的比例显示这个图,那么只要输入:
Show[a, AspectRatio->Automatic]
就不必再计算图形表达式而直接把图形显示出来,以加快图形 绘制的速度。
又如:要在同一坐标系内作出余弦、反余弦函数及直线y=x图象,且余弦函数和直线y=x的图象用黑色虚线作,反余弦函数的图象用红色实线作,阅读下列程序:
Clear[a, b, d, x]
a=Plot[ArcCos[x], {x, ﹣1, 1},PlotStyle->{{RGBColor[1, 0, 0]}},DisplayFunction->Identity,AspectRatio->Automatic]
b=Plot[x, {x, ﹣1/2, 2}, PlotStyle->{Dashing[{0.02, 0.01}]},DisplayFunction->Identity]
d=Plot[Cos[x], {x, 0, Pi}, PlotStyle->{Dashing[{0.02, 0.01}]}, DisplatyFunction->Identity]
Show[a, b, d, DisplayFunction→$DisplayFunction]
[pic]
二.参数方程画图函数
ParametricPlot[{x[t],y[t]},{t,t0,t1},选项]:
其中 ParametricPlot的可选项与Plot函数同。
画一个X轴,Y轴坐标为{x[t],y[t]},参变量t在[t0,t1]中的参数曲线
例二.用ParametricPlot生成[pic]的图形
x[[pic]]:=Sin[t];
y[[pic]]:=Sin[2*t];
ParametricPlot[{x[t],y[t]},{t,0,2*Pi},AspectRatio→Automatic]
[pic]
例如 作出一个椭圆的图形:
Clear[a, b, t, x, y]
a=9;
b=4;
x[[pic]]:=a*Cos[t];
y[[pic]]:=b*Sin[t];
ParametricPlot[{x[t],y[t]},{t,0,2*Pi},AspectRatio→Automatic]
[pic]
再如作等速螺线的图形。
起点在极点的等速螺线的极坐标方程为 [pic]
它在直角坐标系下的参数方程为 [pic]
作图如下:
Clear[a, t, x, y]
x[[pic]]: =t*Cos[t];
y[[pic]]: =t*Sin[t];
ParametricPlot[{x[t], y[t]}, {t, 0, 4*Pi}, PlotPoints→250, AspectRatio→Automatic]
[pic]
三.二元函数作图(空间图形)
Plot3D[f[x,y],{x,x0,x1},{y,y0,y1},选项]
在区域[pic]上,画出空间曲面f[x,y].
例3.用Plot3D生成的Sin[x]*Cos[y]的三维图形
Plot3D[Sin[x Cos[y]], {x, -3, 3}, {y, -3, 3}, PlotPoints -> 40]
[pic]
例4:In[7]:=ParametricPlot3D[{Cos[u](3 + Cos[v]), Sin[u](3 + Cos[v]), Sin[v]}, {u, 0, 2Pi}, {v, 0, 2Pi}, Boxed -> False, Axes -> False]
[pic]
上面的命令使用了两个参数选项,其中Boxed -> False是去掉外面的立体框,Axes -> False是去掉坐标轴。
除Plot,二维参数方程作图的ParametricPlot[{x(t),y(t)},{t,下限,上限},可选项]、三维作图的Plot3D[二维函数表达式,{变量1,下限,上限}, {变量2,下限,上限},可选项}]、三维参数方程作图的ParametricPlot3D[{x(u,v),y(u,v),z(u,v)},{u,下限,上限},{v,下限,上限},可选项]外,还有画二维等高线图ContourPlot[二元表达式,{变量1,下限,上限}, {变量2,下限,上限},可选项}]、画二维密度图的DensityPlot[二元表达式,{变量1,下限,上限}, {变量2,下限,上限},可选项}]等等不一而足。
除使用上述函数作图以外,Mathematica还可以象其他语言一样使用图形元语言作图,如画点函数Point[x,y],画线函数Line[x1,y1,x2,y2],画圆的Circle[x,y,r],画矩形和多边形的Rectangle和Polygon,字符输出的Text[字符串,输出坐标],还有颜色函数RGBColor[red,green,blue]、Hue[],GrayLevel[gray]来描述颜色的亮度、灰度、饱和度,用PointSize[相对尺度]、Thickness[相对尺度]来表示点和线的宽度。总之Mathematica可以精确地调节图形的每一个特征。
习 题
作出下列函数的图象,并写出程序画出草图。
1.用实际尺寸作出函数y=sinx+sin2x在[﹣2[pic]]上的图象。
2.用红色和虚线分别作出下列函数的图象:
y=([pic][pic]+1, x∈[﹣2, 2].
3.作出下列函数的图象:
(1) y=3.2[pic]﹣1.65x+2.67(x∈[﹣5, 5]);
(2) y=[pic]sinx(x∈[0.5, 3]);
(3) y=[pic](x∈[﹣6, 6]).
4、作出下列参数方程的图象:
(1) [pic] (2) [pic] (3) r(t)=2(1﹣cos[pic]).
第五节 方程求解
一、代数方程
用函数Solve可以求代数方程、方程组的精确或数值解,其中包括复值解。其格式为
Solve[{f1= =0, f2= =0, …}, {x1, x2, …}]
其中表{f1= =0, f2= =0, …}中方程的等号必须是双等号,表{x1, x2, …}是方程组中未知量的集合。
例如:(*含有字母系数的方程*)
Clear[a, b, x]
Solve[a*x+b= =0, x] (*复数解*)
Clear[x]
Solve[[pic]2+x+1= =0, x] (*代数解,数值解*)
Clear[a, x]
a=Solve[[pic]=0,x]
N[a] (*方程组*)
Clear[a, b]
a=(1+2*x[pic]
b=(3+2*x+y[pic]
Solve[{a= =0, b= =0}, {x, y}]
我们知道四次以上的多项式方程没有求代数解的一般方法,系统也求不出那些不能分解因式的四次以上的多项式方程的精确解,例如对方程:[pic]系统求不出方程的精确解,这时可直接用函数NSolve求出它的数值解。其格式为
Nsolve[{f1= =0, f2= =0, …}, {x1, x2, …}, n]
其中的n表示要求方程的解精确到小数点以后位。
例如:
Clear[a, x]
a=Nsolve[[pic]=0, x, 20]
说明:
为了说明某一程序或某一命令行的功能和作用,可以在程序的任何位置加以说明,其格式如下:
(*说明字符串*)
其中“说明字符串”可以是字母、数字和中文,语句“(*说明字符串*)”只起到对程序的说明作用,在程序执行时该语句将被忽略,因而该语句的加入对程序的执行结果没有任何影响。
二、一般方程的求解
对于更复杂的方程,用函数Solve或NSolve求不出根。对于这样的方程可利用函数FindRoot求数值根,其格式分别为:
FindRoot[f1= =0, {x, 初值}]
和 FindRoot[f1= =0, {x, 初值1,初值2}],
它们分别用牛顿切线法和弦截法来解方程。
由于函数FindRoot是采用牛顿切线法和弦截法求解的,因此必须找到包含方程的根r的区间[a, b],并且找到根的一个近似值作为初始值。要解决这个问题,可以先作出函数f(x)的图象,从而找出方程f(x)=0的初值。
例如:
Clear[b, y, x]
b=Sin[x]Exp[2x]﹣Cos[x]
Plot[b, {x, ﹣2, 1}]
FindRoot[b= =0, {x, 0.5}]
运行结果为(如图4﹣3)
{x→0.412 804}.
此例用弦解法求解如下
Clear[b, y, x]
b=Sin[x]Exp[2x] ﹣Cos[x]
Plot[b, {x, ﹣2, 1}]
FindRoot[b= =0, {x, 0, 1}]
说明 无论是牛顿切线法还是弦截法,当方程有重根或两个根非常接近或根与曲线的拐点非常接近时,可能会出现问题。此时,可用下述格式:
FindRoot[f1= =0, {x, 初值}, 参数1,参数2]
和 FindRoot[f1= =0, {x, 初值1,初值2},参数1,参数2]
通过加大参数的值加以改善。其中参数1和参数2为
MaxIterations→n和WorkingPrecision→n
它们分别表示指定迭代的次数和求根的精度n。如果还不行,则需改用其他方法。限于篇幅,不再详述。
三、微分方程
微分方程可以用函数DSolve求解,其格式为:
DSolve[{微分方程表达式,初始条件},未知函数名称,未知函数的自变量名称]
例如:
Clear[y, t, a]
Dsolve[[pic][t] ﹣a*t+1= =0, y[t], t]
执行结果:
{{y[t]→﹣t+[pic]+C[1]}}
又如:计算微分方程的初值解
Dsikve[{[pic][t]﹣at+1= =0, y[1]= =2}, y[t], t]
第六节 无穷级数
进行级数求和运算,必须在运算命令前打开mathematica的程序包symbolic.m,格式如下:
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.