Mathematica入门教程含习题与答案
mathematica教程
(2)把有理分式拆成简单分式(部分分式)之和 命令形式:Apart[多项式]
1 x 例3 将有理分式 2 3 拆成简单分式之和. 9 21x 16 x 4 x
2
In[3]:=y=(1-x^2)/(9+21*x+16*x^2+4*x^3)
Apart[y] 5 1 Out[3]= 2 2(3 2 x) 2(3 2 x)
命令形式3: NSolve[方程,变量] 功能:求多项式方程的所有根的近似形式。 命令形式4:NSolve[{方程1,方程2,…,方程n},{变量1, 变量2,…,变量n}] 功能:求多项式方程组所有根的近似形式。 注意:所有命令中第一字母必须大写;方程中等号用 双等号(==)。 例3 求方程组x+3y=0,x2+y2=1的所有近似根。 In[10]:=NSolve[{x+3*y==0,x^2+y^2==1},{x,y}] Out[10]={{x→-0.948683 ,y→0.316228}, {x→0.948683 ,y→-0.316228}}
(3)解方程(组) 命令形式1: Solve[方程,变量] 功能:求多项式方程的所有根,当多项式方程的次 数n4时,给出所有根的准确形式;当n>4时,不一 定能求出所有的根. 例1 求方程 x2-1=0 的根. In[1]:=Solve[x^2-1==0,x] Out[1]={{x→-1},{x→1}} 命令形式2:Solve[{方程1,方程2,…,方程n},{变量 1,变量2,…,变量n}] 功能:求多项式方程的所有根. 例2 解方程组2x+y=4,x+y=3. In[2]:=Solve[{2*x+y==4,x+y==3},{x,y}] Out[2]={{x→1},{y→2}}
Mathematica第一章入门
用计算机给出问题的实例——同时提出问题 完成相应的实验,努力发现与所研究问题相关的 一些数据反映的规律性 对试验的结果作出清楚的描述 基于观察给出猜想 根据试验的对象,通过数学上的分析及可能的数 学证明,给出支持该猜想的论证
考核方式
实验报告以Word或pdf文档的格式提交到课程邮箱: 帐户:fling_yang@ 邮件主题格式 学号后四位_姓名_实验#上机报告 如:1001_张三_实验1上机报告
通用数学软件
通用数学软件:功能完备,包括各种数学、数值计 算、丰富的数学函数、特殊函数、绘图函数、用户 图形界面交互功能,与其他软件和语言的接口及庞 大的外挂函数库机制(工具箱toolbox)。 常见通用数学软件包有Matlab、Mathematica和 Maple 其中Matlab以数值计算见长,Mathematica和 Maple以符号运算、公式推导见长。
执行命令
P2
Mathematica的工作区称为笔记本(notebook), 在其中可以输入命令和输出结果 输入命令后,按Enter键执行 直接按小键盘上的Enter键 主键盘区的Enter键要配合Shift键才是执行命令, 单独按下Enter键只表示回车换行,可输入多条 语句一次执行 notebook中的命令是交互式执行的,可以输入一 句,执行一句。
3
对于准确数,可以计算任意位数的有限精度值,例 如可以求出Pi的任意位的近似值,或2^100000的 值
数学符号的输入
使用输入模板
注释
包含在" (* "和" *) "间的部分被系统认作注释,不影 响计算 例3 12+(*these words will be ignored by the kernel *)3
01第一篇 Mathematica入门
当启动
Mathematica4.1 之后,基本输入模板会显示在屏幕的右边,如果没有,则选择 File 下拉菜
单中的 palette -Basic Input 命令激活它.
3.主菜单
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线0生高不产中仅工资22艺料22高试可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料22荷试,下卷而高总且中体可资配保料置障试时23卷,23调需各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看2工且55作尽22下可2都能护1可地关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编5试求写、卷技重电保术要气护交设设装底备备4置。高调、动管中试电作线资高气,敷料中课并3设试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
(完整word版)Mathematica习题
复习题1、写出求极限11261lim 22+--∞→x x x x 的mathematica 程序和结果。
2、写出求函数2sin()arctan y x x =的导数的mathematica 程序和结果。
3、写出已知2sin )2cos(x x x y -=,写出求)4(y 的mathematica 程序和计算结果。
4、写出求dx e x x⎰3的mathematica 程序和结果。
5、计算定积分dx x x⎰--1145,写出mathematica 的程序和结果。
6、写出绘制函数12/)(23x e x x f x +=- 在区间[-3,3]的图形的mathematica程序。
7、设计一段mathematica 程序,用一个while 循环实现求22151...211+++。
请写出该程序。
8、设有函数⎪⎩⎪⎨⎧≥+<+=0,3sin 0,1)(2x x e x x x f x ,试在mathematica 中定义该函数,并写出绘制该函数在区间[-5,5]上的图形,写出定义函数的程序和绘制图形的程序。
9、编写程序在同一窗口绘制曲线1sin(2x 0.3)y =-;23cos(x 0.5)y =+在[0,2]π区间上的图像。
10、某药店对顾客所购买营养品实行打折销售,标准如下(药品价格用price 来表示):200price < 没有折扣200500price ≤< 3%折扣5001000price ≤< 5%折扣10002500price ≤< 8%折扣25005000price ≤< 10%折扣5000price ≤ 14%折扣输入所售药品的价格,求其实际销售价格。
11、给定非负实数0a ,0b 满足00a b ≠,按递推公式1n n 11(a b )2(n 0,1,2,......)n n a b ++⎧=+⎪=⎨⎪=⎩产生的数列{}n a ,{}n b 称为高斯算术-几何平均数列。
Mathematica使用教程
Mathematica 使用教程一、要点● Mathematica 是一个敏感的软件. 所有的Mathematica 函数都以大写字母开头;● 圆括号( ),花括号{ },方括号[ ]都有特殊用途, 应特别注意;● 句号“.”,分号“;”,逗号“,”感叹号“!”等都有特殊用途, 应特别注意;● 用主键盘区的组合键Shfit+Enter 或数字键盘中的Enter 键执行命令.二、介绍案例1. 输入与输出例1 计算 1+1:在打开的命令窗口中输入1+2+3并按组合键Shfit+Enter 执行上述命令,则屏幕上将显示:In[1] : =1+2+3Out[1] =6这里In[1] : = 表示第一个输入,Out[1]= 表示第一个输出,即计算结果.2. 数学常数Pi 表示圆周率π; E 表示无理数e; I 表示虚数单位i ;Degree 表示π/180; Infinity 表示无穷大.注:Pi,Degree,Infinity 的第一个字母必须大写,其后面的字母必须小写.3. 算术运算Mathematica 中用“+”、“-”、“*”、“/” 和“^”分别表示算术运算中的加、减、乘、除和乘方.例2 计算 π⋅⎪⎭⎫ ⎝⎛⋅+⎪⎭⎫ ⎝⎛⋅--213121494891100.输入 100^(1/4)*(1/9)^(-1/2)+8^(-1/3)*(4/9)^(1/2)*Pi则输出 3103π+这是准确值. 如果要求近似值,再输入N[%]则输出 10.543这里%表示上一次输出的结果,命令N[%]表示对上一次的结果取近似值. 还用 %% 表示上上次输出的结果,用 %6表示Out[6]的输出结果.注:关于乘号*,Mathematica 常用空格来代替. 例如,x y z 则表示x*y*z,而xyz 表示字符串,Mathematica 将它理解为一个变量名. 常数与字符之间的乘号或空格可以省略.4. 代数运算例3 分解因式 232++x x输入 Factor[x^2+3x+2]输出 )x 2)(x 1(++例4 展开因式 )2)(1(x x ++输入 Expand[(1+x)(2+x)]输出 2x x 32++例5 通分 3122+++x x输入 Together[1/(x+3)+2/(x+2)]输出 )x 3)(x 2(x 38+++ 例6 将表达式)3)(2(38x x x +++ 展开成部分分式 输入 Apart[(8+3x)/((2+x)(3+x))]输出 3x 12x 2+++ 例7 化简表达式 )3)(1()2)(1(x x x x +++++输入 Simplify[(1+x)(2+x)+(1+x)(3+x)] 输出 2x 2x 75++三、部分函数1. 内部函数Mathematica 系统内部定义了许多函数,并且常用英文全名作为函数名,所有函数名的第一个字母都必须大写,后面的字母必须小写. 当函数名是由两个单词组成时,每个单词的第一个字母都 必须大写,其余的字母必须小写. Mathematica 函数(命令)的基本格式为函数名[表达式,选项]下面列举了一些常用函数: 算术平方根x Sqrt[x]指数函数x eExp[x] 对数函数x a logLog[a,x] 对数函数x lnLog[x] 三角函数Sin[x], Cos[x], Tan[x], Cot[x], Sec[x], Csc[x] 反三角函数 ArcSin[x], ArcCos[x], ArcTan[x],ArcCot[x], AsrcSec[x], ArcCsc[x]双曲函数 Sinh[x], Cosh[x], Tanh[x],反双曲函数 ArcSinh[x], ArcCosh[x], ArcTanh[x]四舍五入函数 Round[x] (*取最接近x 的整数*)取整函数 Floor[x] (*取不超过x 的最大整数*)取模 Mod[m,n] (*求m/n 的模*)取绝对值函数 Abs[x]n 的阶乘 n!符号函数 Sign[x]取近似值 N[x,n] (*取x 的有n 位有效数字的近似值,当n 缺省时,n 的默认值为6*)例8 求π的有6位和20位有效数字的近似值.输入 N[Pi] 输出 3.14159输入 N[Pi, 20] 输出 3.1415926535897932285注:第一个输入语句也常用另一种形式:输入 Pi//N 输出 3.14159例9 计算函数值(1) 输入 Sin[Pi/3] 输出23(2) 输入 ArcSin[.45] 输出 0.466765(3) 输入 Round[-1.52] 输出 -2例10 计算表达式 )6.0arctan(226sin 2ln 1132+-+-e π 的值输入 1/(1+Log[2])*Sin[Pi/6]-Exp[-2]/(2+2^(2/3))*ArcTan[.6]输出 0.2749212. 自定义函数在Mathematica 系统内,由字母开头的字母数字串都可用作变量名,但要注意其中不能包含空格或标点符号.变量的赋值有两种方式. 立即赋值运算符是“=”,延迟赋值运算符是“: =”. 定义函数使用的符号是延迟赋值运算符“: =”.例11 定义函数 12)(23++=x x x f ,并计算)2(f ,)4(f ,)6(f .输入Clear[f,x]; (*清除对变量f 原先的赋值*)f[x_]:=x^3+2*x^2+1; (*定义函数的表达式*)f[2] (*求)2(f 的值*)f[x]/.{x->4} (*求)4(f 的值,另一种方法*)x=6; (*给变量x 立即赋值6*)f[x] (*求)6(f 的值,又一种方法*)输出1797289注:本例1、2、5行的结尾有“;”,它表示这些语句的输出结果不在屏幕上显示.四、解方程在Mathematica 系统内,方程中的等号用符号“==”表示. 最基本的求解方程的命令为Solve[eqns, vars]它表示对系数按常规约定求出方程(组)的全部解,其中eqns 表示方程(组),vars 表示所求未知变量.例12 解方程0232=++x x输入 Solve[x^2+3x+2==0, x]输出 }}1x {},2x {{-→-→例13 解方程组 ⎩⎨⎧=+=+10dy cx by ax 输入 Solve[{a x + b y == 0,c x + d y ==1}, {x,y}]输出 ⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+-→-→ad bc a y ,ad bc b x 例14 解无理方程a x x =++-11输入 Solve[Sqrt[x-1]+ Sqrt[x+1] == a, x]输出 ⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧+→24a 4a 4x很多方程是根本不能求出准确解的,此时应转而求其近似解. 求方程的近似解的方法有两种,一种是在方程组的系数中使用小数,这样所求的解即为方程的近似解;另一种是利用下列专门用于求方程(组)数值解的命令:NSolve[eqns, vars] (*求代数方程(组)的全部数值解*)FindRoot[eqns, {x, x0}, {y, y0}Λ,]后一个命令表示从点),,(00Λy x 出发找方程(组)的一个近似解,这时常常需要利用图像法先大致确定所求根的范围,是大致在什么点的附近.例15 求方程013=-x 的近似解输入 NSolve[x^3-1== 0, x]输出 {{→x -0.5-0.866025ii},{→x -0.5+0.866025ii},{→x 1.}}输入 FindRoot[x^3-1==0,{x, .5}]输出 {→x 1.}下面再介绍一个很有用的命令:Eliminate[eqns, elims] (*从一组等式中消去变量(组)elims*)例16从方程组 ⎪⎩⎪⎨⎧=+=-+-+=++11)1()1(1222222y x z y x z y x 消去未知数y 、z .输入Eliminate[{x^2+y^2+z^2 ==1,x^2+(y-1)^2 + (z-1)^2 ==1, x + y== 1},{y, z}]输出 0x 3x 22==+-注:上面这个输入语句为多行语句,它可以像上面例子中那样在行尾处有逗号的地方将行与行隔开, 来迫使Mathematica 从前一行继续到下一行在执行该语句. 有时候多行语句的意义不太明 确,通常发生在其中有一行本身就是可执行的语句的情形,此时可在该行尾放一个继续的记号“\”, 来迫使Mathematica 继续到下一行再执行该语句.五、保存与退出Mathematica 很容易保存Notebook 中显示的内容,打开位于窗口第一行的File 菜单,点击Save后得到保存文件时的对话框,按要求操作后即可把所要的内容存为 *.nb 文件. 如果只想保存全部 输入的命令,而不想保存全部输出结果,则可以打开下拉式菜单Kernel,选中Delete All Output,然后 再执行保存命令. 而退出Mathematica 与退出Word 的操作是一样的.六、查询与帮助查询某个函数(命令)的基本功能,键入“?函数名”,想要了解更多一些,键入“??函数名”,例如,输入?Plot则输出Plot[f,{x,xmin,xmax}] generates a plot of f as a functionof x from xmin to xmax. Plot[{f1,f2,…},{x,xmin,xmax}] plots several functions fi它告诉了我们关于绘图命令“Plot ”的基本使用方法.例17 在区间]1,1[-上作出抛物线2x y =的图形.输入 Plot[x^2,{x,-1,1}]则输出-1-0.50.510.20.40.60.81例18 π.输入 Plot[{Sin[x],Cos[x]},{x,0,2Pi}]则输出123456-1-0.50.51??Plot则Mathematica 会输出关于这个命令的选项的详细说明,请读者试之.此外,Mathematica 的Help 菜单中提供了大量的帮助信息,其中Help 菜单中的第一项HelpBrowser(帮助游览器)是常用的查询工具,读者若想了解更多的使用信息,则应自己通过Help 菜单去学习.编辑本段Mathematica 基本运算a+mathematica 数学实验(第2版)b+c 加a-b 减a b c 或a*b*c 乘a/b 除-a 负号a^b 次方Mathematica 数字的形式256 整数2.56 实数11/35 分数2+6I 复数常用的数学常数Pi 圆周率,π=3.141592654…E 尤拉常数,e=2.71828182…Degree 角度转换弧度的常数,Pi/180I 虚数,其值为√-1Infinity 无限大指定之前计算结果的方法% 前一个运算结果%% 前二个运算结果%%…%(n个%) 前n个运算结果%n 或Out[n] 前n个运算结果复数的运算指令a+bI 复数Conjugate[a+bI] 共轭复数Re[z], Im[z] 复数z的实数/虚数部分Abs[z] 复数z的大小或模数(Modulus)Arg[z] 复数z的幅角(Argument)Mathematica 输出的控制指令expr1; expr2; expr3 做数个运算,但只印出最後一个运算的结果expr1; expr2; expr3; 做数个运算,但都不印出结果expr; 做运算,但不印出结果编辑本段常用数学函数Sin[x],Cos[x],Tan[x],Cot[x],Sec[x],Csc[x] 三角函数,其引数的单位为弪度Sinh[x],Cosh[x],Tanh[x],… 双曲函数ArcSin[x],ArcCos[x],ArcTan[x] 反三角函数ArcCot[x],ArcSec[x],ArcCsc[x]Arc Sinh[x],ArcCosh[x],ArcTanh[x],… 反双曲函数Sqrt[x] 根号Exp[x] 指数Log[x] 自然对数Log[a,x] 以a为底的对数Abs[x] 绝对值Round[x] 最接近x的整数Floor[x] 小於或等於x的最大整数Ceiling[x] 大於或等於x的最小整数Mod[a,b] a/b所得的馀数n! 阶乘Random[] 0至1之间的随机数(最新版本已经不用这个函数,改为使用RandomReal[])Max[a,b,c,...],Min[a,b,c,…] a,b,c,…的极大/极小值编辑本段数之设定x=a 将变数x的值设为ax=y=b 将变数x和y的值均设为bx=. 或Clear[x] 除去变数x所存的值变数使用的一些法则xy 中间没有空格,视为变数xyx y x乘上y3x 3乘上xx3 变数x3x^2y 为x^2 y次方运算子比乘法的运算子有较高的处理顺序编辑本段四个常用处理代数的指令Expand[expr] 将expr展开Factor[expr] 将expr因式分解Simplify[expr] 将expr化简成精简的式子FullSimplify[expr] Mathematica 会尝试更多的化简公式,将expr化成更精简的式子编辑本段多项式/分式转换的函数ExpandAll[expr] 把算是全部展开Together[expr] 将expr各项通分在并成一项Apart[expr] 把分式拆开成数项分式的和Apart[expr,var] 视var以外的变数为常数,将expr拆成数项的和Cancel[expr] 把分子和分母共同的因子消去编辑本段分母/分子的运算Denominator[expr] 取出expr的分母Numerator[expr] 取出expr的分子ExpandDenominator[expr] 展开expr的分母ExpandNumerator[expr] 展开expr的分子编辑本段多项式的另二种转换函数Collect[expr,x] 将expr表示成x的多项式,如Collect[expr,{x,y,…}] 将expr分别表示成x,y,…的多项式FactorTerms[expr] 将expr的数值因子提出,如4x+2=2(2x+1)FactorTerms[expr,x] 将expr中把所有不包含x项的因子提出FactorTerms[expr,{x,y,…}] 将expr中把所有不包含{x,y,...}项的因子提出编辑本段三角函数、双曲函数和指数的运算TrigExpand[expr] 将三角函数展开TrigFactor[expr] 将三角函数所组成的数学式因式分解TrigReduce[expr] 将相乘或次方的三角函数化成一次方的基本三角函数之组合ExpToTrig[expr] 将指数函数化成三角函数或双曲函数TrigToExp[expr] 将三角函数或双曲函数化成指数函数复数、次方乘积之展开ComplexExpand[expr] 假设所有的变数都是实数来对expr展开ComplexExpand[expr,{x,y,…}] 假设x,y,..等变数均为复数来对expr展开PowerExpand[expr] 将多项式项次、系数与最高次方之取得Coefficient[expr,form] 於expr中form的系数Exponent[expr,form] 於expr中form的最高次方Part[expr,n] 或expr[[n]] 在expr项中第n个项代换运算子expr/.x->value 将expr里所有的x均代换成valueexpr/.{x->value1,y->value2,…} 执行数个不同变数的代换expr/.{{x->value1},{x->value2},…} 将expr代入不同的x值expr//.{x->value1,y->value2,…} 重复代换到expr不再改变为止求解方程式的根Solve[lhs==rhs,x] 解方程式lhs==rhs,求xNsolve[lhs==rhs,x] 解方程式lhs==rhs的数值解Solve[{lhs1==rhs1,lhs2==rhs2,…},{x,y,…}] 解联立方程式,求x,y,…NSolve[{lhs1==rhs1,lhs2==rhs2,…},{x,y,…}] 解联立方程式的数值解FindRoot[lhs==rhs,{x,x0}] 由初始点x0求lhs==rhs的根Mathematica 的四种括号(term) 圆括号,括号内的term先计算f[x] 方括号,内放函数的引数{x,y,z} 大括号或串列括号,内放串列的元素p[[i ]] 或Part[p,i] 双方括号,p的第i项元素p[[i,j]] 或Part[p,i,j] p的第i项第j个元素缩短Mathematica输出的指令expr//Short 显示一行的计算结果Short[expr,n] 显示n行的计算结果Command; 执行command,但不列出结果查询Mathematica的物件?Command 查询Command的语法及说明??Command 查询Command的语法和属性及选择项?Aaaa* 查询所有开头为Aaaa的物件函数的定义、查询与清除f[x_]= expr 立即定义函数f[x]f[x_]:= expr 延迟定义函数f[x]f[x_,y_,…] 函数f有两个以上的引数?f 查询函数f的定义Clear[f] 或f=. 清除f的定义Remove[f] 将f自系统中清除掉含有预设值的Patterna_+b_. b的预设值为0,即若b从缺,则b以0代替x_ y_ y的预设值为1x_^y_ y的预设值为1条件式的自订函数lhs:=rhs/;condition 当condition成立时,lhs才会定义成rhsIf指令If[test,then,else] 若test为真,则回应then,否则回应elseIf[test,then,else,unknow] 同上,若test无法判定真或假时,则回应unknow 极限Limit[expr,x->c] 当x趋近c时,求expr的极限Limit[expr,x->c,Direction->1]Limit[expr,x->c,Direction->-1]微分D[f,x] 函数f对x作微分D[f,x1,x2,…] 函数f对x1,x2,…作微分D[f,{x,n}] 函数f对x微分n次D[f,x,NonConstants->{y,z,…}] 函数f对x作微分,将y,z,…视为x的函数全微分Dt[f] 全微分dfDt[f,x] 全微分Dt[f,x1,x2,…] 全微分Dt[f,x,Constants->{c1,c2,…}] 全微分,视c1,c2,…为常数不定积分Integrate[f,x] 不定积分∫f dx定积分Integrate[f,{x,xmin,xmax}] 定积分Integrate[f,{x,xmin,xmax},{y,ymin,ymax}] 定积分数列之和与积Sum[f,{i,imin,imax}] 求和Sum[f,{i,imin,imax,di}] 求数列和,引数i以di递增Sum[f,{i,imin,imax},{j,jmin,jmax}]Product[f,{i,imin,imax}] 求积Product[f,{i,imin,imax,di}] 求数列之积,引数i以di递增Product[f,{i,imin,imax},{j,jmin,jmax}]函数之泰勒展开式Series[expr,{x,x0,n}] 对expr於x0点作泰勒级数展开至(x-x0)n项Series[expr,{x,x0,m},{y,y0,n}] 对x0和y0展开关系运算子a==b 等於a>b 大於a>=b 大於等於a<b 小於a<=b 小於等於a!=b 不等於逻辑运算子!p notp||q||… orp&&q&&… andXor[p,q,…] exclusive orLogicalExpand[expr] 将逻辑表示式展开基本二维绘图指令Plot[f,{x,xmin,xmax}]画出f在xmin到xmax之间的图形Plot[{f1,f2,…},{x,xmin,xmax}]同时画出数个函数图形Plot[f,{x,xmin,xmax},option->value]指定特殊的绘图选项,画出函数f的图形Plot[]几种常用选项的指令选项预设值说明AspectRatio 1/GoldenRatio 图形高和宽之比例,高/宽Axes True 是否把坐标轴画出AxesLabel Automatic 为坐标轴贴上标记,若设定为AxesLabel->{?ylabel?},则为y轴之标记。
mathematica教程9
第10讲向量代数与线性代数实验内容:1.向量代数的基本运算;2.线性代数基础.实验目的:1.掌握用Mathematica计算矢量的点积,叉积与混合积;2.用Module,求向量的模及方向角;3.理解向量的叉积与混积的几何意义;4.用Mathematica计算行列式的值;5.会求矩阵的逆,特征值,特征向量.10.1向量代数的基本运算\Clear[a,u,v,w];u={u1,u2,u3};v={v1,v2,v3};w={w1,w2,w3};u+vu-va*u (*数乘*)u*vu/vu^2Dot[u,v] (*点积*)u.va=Cross[u,v] (*叉积*)Dot[a,w] (*混合积*){u1+v1,u2+v2,u3+v3}{u1-v1,u2-v2,u3-v3}{a u1,a u2,a u3}{u1 v1,u2 v2,u3 v3}u1 v1+u2 v2+u3 v3u1 v1+u2 v2+u3 v3{u2 v3-u3 v2,u3 v1-u1 v3,u1 v2-u2 v1}(u2 v3-u3 v2) w1+(u3 v1-u1 v3) w2+(u1 v2-u2 v1) w310.2求向量的模及方向角Clear[u,m,t,Mo,Fx];(*定义“模”及方向角*);Mo[u_]:=Module[{m},m=Sqrt[Apply[Plus,u^2]]//N];Fx[u_]:=Module[{t},t=ArcCos[u/Mo[u]]*180/Pi//N];u={4,3};Print[u,"的模是",Mo[u]]Print[u,"的方向角是",Fx[u]]{4,3} 的模是 5.{4,3} 的方向角是 {36.8699,53.1301}u={1,1,1};Print[u,"的模是",Mo[u]]Print[u,"的方向角是",Fx[u]]{1,1,1} 的模是 1.73205{1,1,1} 的方向角是 {54.7356,54.7356,54.7356}u={0,0,1};v={1,0,0};Print[u,v,"的夹角是",ArcCos[u.v/(Mo[u] Mo[v])]*180/Pi,"度"]{0,0,1} {1,0,0} 的夹角是 90 度10.3向量的叉积与混积的几何意义o={0,0,0};a={2,0,0};b={1,1,0};c={0,1,1};tb1={o,a,a+b,b};tb2={o,b,c+b,c};tb3={o,a,a+c,c};tb4={c,a+c,a+b+c,b+c};tb5={a,a+b,a+c+b,a+c};tb6={b,a+b,a+b+c,b+c};tu1=Graphics3D[{Hue[.7],Polygon[tb1],Hue[.9],Line[{{0,0,0},{0,0,2},{0,.2,1.5}}]}];Print["叉积的几何意义"];Show[tu1,Boxed False];tu2=Graphics3D[{Hue[.7],Polygon[tb1],Hue[.4],Polygon[tb2],Hue[.2],Polygon[tb3],Hue[.6],Polygon[tb4],H ue[.5],Polygon[tb5],Hue[.3],Polygon[tb6]}];Print["混积的几何意义"];Show[tu2,Boxed False];叉积的几何意义混积的几何意义10.4线性代数基础u={1,2,3};v={1,3,1};w={2,4,4};a={u,v,w}a[[1]] (*取表中的元素*)a[[1,2]]Det[a] (*求行列式的值*)Det[{v,u,w}] (*交换行列式的行*)Det[{w,v,u}]Transpose[a] (*行列式转置*)Inverse[a] (*求矩阵的逆*)Eigenvalues[a]//N (*求矩阵的特征值*)Eigenvectors[a]//N (*求矩阵的特征向量*) i k j j j j j 123131244y {z z z zz{1,2,3} 2 i k j j j j j 112234314y {z z z zz-222{6.95166 +0. , -0.2258+0. ,1.27414 +0. } i k j j j j j j 0.643851+6.54587µ10-17Â0.41599+1.47045µ10-18 1.-3.92869+0.Â0.907897+0.Â1.1.28484+0.Â-1.32389+0. 1.y {z z z z z z。
软件mathematica第一章
In[7]:=N[1/7,5]
In[8]:= N[Pi,20]
Out[7]= 0.14286
Out[8]=3.14932385
4)复数
在Mathematica里每一个复数表示为:=x+Iy,其中x与y 为实数,I为虚数单位。
5)数学常数
Pi 表示圆周率π E 表示自然对数的底e=2.718286… Degree 表示角度1度 Infinity 表示无穷大∞ i表示虚数单位i
对于已经赋值的变量,当你 不再使用而且想要清除掉时 ,可随时用:‘=.’清除掉
3.变量的替换
在数学计算中,经常需要将数学式子中的某些变量替换 为另外一些变量,例如将多项式P3=5-4x+3x2+x3中的变量x 替换为t+1,有P3=5-4(t+1)+3(t+1)2+(t+1)3
In[22]:= P3=5-4 x+3 x^2+x^3 P3/.x->t+1
3)线性代数:进行行列式的计算、矩阵的各种运算(加法 、乘法、求逆矩阵等)、解线性方程组、求特征值和特征 向量、进行矩阵分解。 4)解方程组:解各类方程组(包括微分方程组)。
2. 数值计算功能:可以做任意位数的整数或分子分母为任 意大整数的有理数的精确计算,做具有任意位精度的数值 (实、复数)计算。Mathematica具有众多的数值计算函 数,能满足线性代数、插值与拟合、数值积分、微分方程 数值解、求极值、线性规划及概率统计等方面的常用计算 需求。
Out[1]= {1,3,5,7,9,11,13} 例2 In[2]:= Join[t1,t2]
Out[2]= {1,3,5,7,2,6,10,1,3,5,7,9,11,13} 例3 In[4]:= Union[t1,t2]
Mathematica软件使用入门
Mathematica软件使用入门目录第一章基本知识与基本操作 (3)1.1 Mathematica的基本语法特征 (3)1.2 Mathematica的启动、基本操作 (5)1.3 操作小技巧 (7)1.4 数值计算 (8)1.5 赋值与替换 (9)1.6 自定义函数 (10)1.7 方程与方程组解 (11)1.8 解不等式与不等式组 (12)1.9 由递推式求数列的通项公式 (14)1.10 作函数图像 (15)页脚内容1第二章运用Mathematica实现高等数学中的基本运算 (17)2.1 求极限运算 (17)2.2 求导数与微分 (20)2.3 求不定积分 (28)2.4 求定积分 (29)第三章实验练习题 (32)Mathematica是当今世界上最为流行的计算机代数系统之一.Mathematica系统是美国物理学家Stephen.Wolfram领导的一个小组开发的,后来他们成立了Wolfram研究公司.1987年推出了系统的1.0版;现在的最新版本是8.0版.页脚内容2Mathematica可以做:符号计算和数值计算问题,如:能做多项式的计算、因式分解和展开等;做各种有理式计算,求多项式、有理式方程和超越方程的精确解和近似解;做向量、矩阵的各种计算;求极限、导数、积分,做幂级数展开,求解某些微分方程等;做任意位数的整数或分子分母为任意大整数的有理数的精确计算,做具有任意位精度的数值(实、复数值)的计算.可以很方便地画出用各种方式表示的一元和二元函数的图形,通过图形,可以立即形象地掌握函数的某些特性,而这些特性一般是很难从函数的符号表达式中看清楚.第一章基本知识与基本操作1.1 Mathematica的基本语法特征使用Mathematica,一定要牢牢记住:Mathematica中大写小写是有区别的,如Name、name、NAME等是不同的变量名或函数名;系统所提供的功能大部分以系统函数的形式给出,内部函数一般写全称,而且一定是以大写英文字母开头,如Sin[x],Cos[z]等;页脚内容3页脚内容4乘法即可以用*,又可以用空格表示,如 2 3=2*3=6 , 2 Sin[x]=2* Sin[x]乘幂可以用“^”表示,如x^0.5 表示: Tan[x]^y 表示:自定义的变量可以取几乎任意的名称,长度不限,但不可以数字开头.当你赋予变量任何一个值,除非你: 明显地改变该值或 使用Clear[变量名] 或 使用“变量名=.”取消该值,否则它将始终保持原值不变.一定要注意四种括号的用法:( ): 表示项的结合顺序,如: (x+(y^x+1/(2x))); [ ]: 表示函数,如:Log[x], Sin[x];{ }: 表示一个“表”(即是一组数字、或任意表达式、或函数等的一个有序集合),如:{2x,Sin[12 Pi],A ,1}, {1+A,y*x ,1,2};[[ ]]: 双方括号表示“表”或“表达式”的下标,如: a[[2,3]]表示:23a ; {3,5,7}[[2]]=5.Mathematica 的语句书写十分方便,一个语句可以分为多行写,同一行可以写多个语句(但要以分号间隔).当语句以分号结束时,语句计算后不做输出(输出语句除外),否则将输出计算的结果.0.5xyTan[x]Mathematica命令中的标点符号必须是英文的.1.2 Mathematica的启动、基本操作1.2.1 启动“Mathematica”:在windows操作系统中安装了Mathematica后,与其他的常用软件一样,可从“开始”→“程序”→“Mathematica5”Mathematica的主窗口并出现第一个notebook窗口(Untitled-1):1.2.2 简单使用:例1.1 计算+33的值①在“Untitled-1”窗口中输入:329/412+3^3②按下“Shift+Enter”(或数字键盘上的Enter键),就得到计算结果:页脚内容5其中“In[1]:=”是Mathematica自动加上的,表示第一个输入;“Out[1]:=”表示第一个输出.一般地:In[n]:= 表示第n个输入Out[n]:=表示第n个输出.注意:“In[n]:=”自动加上的,不能人工输入!1.2.3 保存结果:保存方法同一般的Windows软件:“文件”→“保存”“另存为”窗口→在“查找范围”内找到目标文件夹→输入文件名(比如输入“1”)→“”.Mathematica 4或Mathematica 5的文件的后缀是“nb”,当输入“1”时,即产生文件“1.nb”.1.2.4打开文件1.nb启动Mathematica →“文件”→“打开”打开”窗口:→在“查找范围”内找到文件“1.nb”→“”即可.页脚内容61.2.5 退出Mathematica:与一般应用软件一样,单击右上方的“”按钮(或用菜单:“文件”→“退出”).1.3 操作小技巧1.3.1Ctrl+K的用途如果只知道命令的首写字母,可在输入该首写字母(要大写),再按下“Ctrl+K”组合键,则所有以该字母为首的命令都列出来,只要用鼠标双击命令名就输入了该命令.1.3.2使用前面已有的结果举例如下:例1.2 做如下操作:①输入:Integrate[x^2*(11-Sin[x]),{x,-1,1}]按:“Shift+Enter”;②输入:%+1,按:“Shift+Enter”;③输入:%+1,按:“Shift+Enter”;④输入:%1+1,按:“Shift+Enter”;Integrate[f,x]是求:()f x dxIntegrate[f,{x,xmin,xmax}]是求:页脚内容7⑤输入:%3+1,按:“Shift+Enter”,计算结果如下:可见,“%”表示前一个计算结果;“%n”表示第n个计算结果.1.3.3 删除行:见下图示1.4 数值计算请看下例:只要选定且删1.5 赋值与替换X=. 或Clear[x] 清除赋给x的值expr/.{x->xval,y->yval} 用xval、yval分别替换expr中的x、y.例1.3输入:x=3;y=4;w=x+y 计算清除变量的定义和值输入:Clear[x,y];计算输入:z=(x+y)^2 计算将(x+y)^2赋给z页脚内容9页脚内容10输入:z/.x->5 计算输入:Clear[x,y]; 计算 输入:u=x+y 计算 输入:u/.{x->5,y->6} 计算 计算结果如下:1.6 自定义函数用户可以自行定义函数,一个函数一旦被定义好之后就可以象系的内部函数一样使用. 例1.4 如要定义函数 f(x)=x 2+3x-2变量替换:变量替换:分别用5、6代替表达式u 中的“:=”是定义符.左边f 是函数名,方括号内x 是自变量,其页脚内容11只要键入: f[x_]:=x^2+3x-2即可.又如要定义分段函数2+1 < 0()= 2sin 0x x g x x x ⎧⎨≥⎩可键入:g[x_]:= Which[x<0,x^2+1,x>=0,2Sin[x]] 或g[x_]:=If[x<0,x^2+1,2Sin[x]] 请见以下计算结果:1.7 方程与方程组解 例1.5 ① 解方程:0652=+-x x输入:Solve[x^2-5x+6==0,x]Solve 是解方程或方程组的函数.其格式为:Solve[eqns,vars] 其中方程用exp==0的形式(其中页脚内容12即可.② 解方程组输入:Solve[{x+y==1,3x^2-y^2==0},{x,y}] 即可(结果见下图).1.8 解不等式与不等式组 例1.6 ① 解不等式组2213x y x y +=⎧⎨-=⎩加载解不等式的程序包,这是必须的,可谓是固定的格式, “< ”为键盘上的小于号, “`”为数字键1的左侧的 Algebra —— 代数类页脚内容13⎪⎩⎪⎨⎧>-<--0101222x x x输入: <<Algebra`InequalitySolve` InequalitySolve[{x^2-5x-6<0,x^2-1>0}, x] 即可. ② 解不等式3)3(12>--x x输入: <<Algebra`InequalitySolve` InequalitySolve[Abs[x-1](x^2-3) > 3, x] 即可(结果见下图)注: Mathematica 系统有内部函数.还有一些系统扩展的功能但不是作为内部函数的、以文件的形式存页脚内容14储在磁盘上的文件,要使用它们,必须用一定的方式来调用这些文件,这些文件我们称之为程序包. 调用方式之一如上所述: <<Algebra`InequalitySolve` 或用:Needs["Algebra`InequalitySolve`"] 1.9 由递推式求数列的通项公式例1.7 设 求数列的通项公式 只要输入:<<DiscreteMath`RSolve`RSolve[{a[n]==n *a[n-1], a[1]==1}, a[n], n] 即可(结果见下图)11,1,nn a na a -==1.10 作函数图像例1.8在同一坐标系中作出2-1y x 和y=sinx在[-2,2]内的图像.输入:Plot[{x^2-1,Sin[x]},{x,-2,2}]结果见下图例1.9作出sinxcosy的三维图形输入:Plot3D[Sin[x]*Cos[y],{x,-2Pi,2Pi},{y,-2Pi,2Pi},PlotPoints->100]即可(结果见下图)增加取样点提高光滑度页脚内容15页脚内容16页脚内容17第二章 运用Mathematica 实现高等数学中的基本运算极限、导数和积分是高等数学中的主要概念和基本运算,如果你在科研中遇到较复杂的求极限、求导数或求积分问题,Mathematica 可以帮你快速解决这些问题。
(完整版)Mathematica入门教程含习题与答案
Mathematica入门教程第1篇第1章MATHEMATICA概述 (3)1.1 M ATHEMATICA的启动与运行 (3)1.2 表达式的输入 (4)1.3 M ATHEMATICA的联机帮助系统 (6)第2章MATHEMATICA的基本量 (8)2.1 数据类型和常数 (8)2.2 变量 (10)2.3 函数 (11)2.4 表 (14)2.5 表达式 (17)2.6 常用的符号 (19)2.7 练习题 (19)第2篇第3章微积分的基本操作 (20)3.1 极限 (20)3.2 微分 (20)3.3 计算积分 (22)3.4 无穷级数 (24)3.5 练习题 (24)第4章微分方程的求解 (26)4.1 微分方程解 (26)4.2 微分方程的数值解 (26)4.3 练习题 (27)第3篇第5章MATHEMATICA的基本运算 (28)5.1 多项式的表示形式 (28)5.2 方程及其根的表示 (29)5.3 求和与求积 (32)5.4 练习题 (33)第6章函数作图 (35)6.1 基本的二维图形 (35)6.2 二维图形元素 (40)6.3 基本三维图形 (42)6.4 练习题 (46)第4篇第7章MATHEMATICA函数大全 (48)7.1 运算符和一些特殊符号,系统常数 (48)7.2 代数计算 (49)7.3 解方程 (50)7.4 微积分 (50)7.5 多项式函数 (51)7.6 随机函数 (52)7.7 数值函数 (52)7.8 表相关函数 (53)7.9 绘图函数 (54)7.10 流程控制 (57)第8章MATHEMATICA程序设计 (59)8.1 模块和块中的变量 (59)8.2 条件结构 (61)8.3 循环结构 (63)8.4 流程控制 (65)8.5 练习题 (67)--------------习题与答案在68页-------------------第1章Mathematica概述1.1 Mathematica的启动与运行Mathematica是美国Wolfram研究公司生产的一种数学分析型的软件,以符号计算见长,也具有高精度的数值计算功能和强大的图形功能。
Mathematica简易教程
Page 21
使用条件运算符,基本格式为:f[x_]:=expr/;condition,当condition条件满足 时才把expr赋给f(x)。
Page 22
当然,使用If命令也可以定义上面的函数,If语句的格式为If[条件,值1,值 2],如果条件成立取“值1”,否则取“值2”,用If语句定义如下:
mathematicapage目录第一章mathematica简介第二章mathematica的基本量第三章mathematica的基本运算第四章函数作图第五章微积分的基本操作page第一章mathematica简介mathematica由美国物理学家stephenwolfram领导开发的他们组建wolfram研究公司mathematica是一个计算机代数系统把符号运算数值计算与图形显示集一体可以完成上述三项功能更重要的是它把这些功能融合在一个系统里使它们成为一个整体
3.2.4 解条件方程
在作方程计算时,可以把一个方程看做你要处理的主要方程,而把其 他方程作为必须满足的辅助条件,你就会发现这样处理很方便。 在Mathematica中,我们通常是首先命名辅助条件组,然后用名字把辅 助条件包含在你要用函数Solve[]求解的方程组中。
Page 40
3.3 求和与求积
Mathematica简介与入门
目录
第一章 Mathematica简介 第二章 Mathematica的基本量
第三章 Mathematica的基本运算
第四章 函数作图 第五章 微积分的基本操作
Page 2
第一章 Mathematica简介
Mathematica由美国物理学家Stephen Wolfram领导开发的,他们组建Wolfram 研究公司 Mathematica是一个计算机代数系统,把 符号运算、数值计算与图形显示集一体, 可以完成上述三项功能,更重要的是它把 这些功能融合在一个系统里,使它们成为 一个整体.此外,Mathematica还是一个 易于扩充的系统,即实际上提供了功能强 大的程序设计语言,可以定义用户需要的 各种函数,完成用户需要的各种工作,系 统本身还提供了一大批用这个语言写出的 专门程序或软件包 Mathematica的发布标志着现代科技计算 的开始。Mathematica是世界上通用计算 系统中最强大的系统。自从1988发布以来, 它已经对如何在科技和其它领域运用计算 机产生了深刻的影响
Mathematica软件使用入门
Mathematica软件使用入门目录第一章基本知识与基本操作 (3)1.1 Mathematica的基本语法特征 (3)1.2 Mathematica的启动、基本操作 (4)1.3 操作小技巧 (7)1.4 数值计算 (8)1.5 赋值与替换 (9)1.6 自定义函数 (10)1.7 方程与方程组解 (11)1.8 解不等式与不等式组 (12)1.9 由递推式求数列的通项公式 (13)1.10 作函数图像 (14)第二章运用Mathematica实现高等数学中的基本运算 (16)2.1 求极限运算 (16)2.2 求导数与微分 (18)2.3 求不定积分 (25)2.4 求定积分 (25)第三章实验练习题 (28)Mathematica是当今世界上最为流行的计算机代数系统之一.Mathematica系统是美国物理学家Stephen.Wolfram领导的一个小组开发的,后来他们成立了Wolfram研究公司.1987年推出了系统的1.0版;现在的最新版本是8.0版.Mathematica可以做:●符号计算和数值计算问题,如:能做多项式的计算、因式分解和展开等;●做各种有理式计算,求多项式、有理式方程和超越方程的精确解和近似解;●做向量、矩阵的各种计算;●求极限、导数、积分,做幂级数展开,求解某些微分方程等;●做任意位数的整数或分子分母为任意大整数的有理数的精确计算,做具有任意位精度的数值(实、复数值)的计算.●可以很方便地画出用各种方式表示的一元和二元函数的图形,通过图形,可以立即形象地掌握函数的某些特性,而这些特性一般是很难从函数的符号表达式中看清楚.第一章 基本知识与基本操作1.1 Mathematica 的基本语法特征使用Mathematica ,一定要牢牢记住:● Mathematica 中大写小写是有区别的,如Name 、name 、NAME 等是不同的变量名或函数名;● 系统所提供的功能大部分以系统函数的形式给出, 内部函数一般写全称, 而且一定是以大写英文字母开头, 如Sin[x], Cos[z]等;● 乘法即可以用*,又可以用空格表示,如2 3=2*3=6 , 2 Sin[x]=2* Sin[x] ● 乘幂可以用“^”表示,如x^0.5 表示: Tan[x]^y 表示: ● 自定义的变量可以取几乎任意的名称,长度不限,但不可以数字开头. ● 当你赋予变量任何一个值,除非你:明显地改变该值或 使用Clear[变量名] 或 使用“变量名=.”取消该值,否则它将始终保持原值不变.● 一定要注意四种括号的用法:0.5x yTan[x]( ):表示项的结合顺序,如: (x+(y^x+1/(2x)));[ ]:表示函数,如:Log[x], Sin[x];{ }:表示一个“表”(即是一组数字、或任意表达式、或函数等的一个有序集合),如:{2x,Sin[12 Pi],A,1}, {1+A,y*x,1,2};[[ ]]:双方括号表示“表”或“表达式”的下标,如:a; {3,5,7}[[2]]=5.a[[2,3]]表示:23●Mathematica的语句书写十分方便,一个语句可以分为多行写,同一行可以写多个语句(但要以分号间隔).●当语句以分号结束时,语句计算后不做输出(输出语句除外),否则将输出计算的结果.●Mathematica命令中的标点符号必须是英文的.1.2 Mathematica的启动、基本操作1.2.1 启动“Mathematica”:在windows操作系统中安装了Mathematica后,与其他的常用软件一样,可从“开始”→“程序”→“Mathematica5” Mathematica的主窗口并出现第一个notebook窗口(Untitled-1):1.2.2 简单使用:例1.1 计算+33的值①在“Untitled-1”窗口中输入:329/412+3^3②按下“Shift+Enter”(或数字键盘上的Enter键),就得到计算结果:其中“In[1]:=”是Mathematica自动加上的,表示第一个输入;“Out[1]:=”表示第一个输出.一般地:In[n]:= 表示第n个输入Out[n]:=表示第n个输出.注意:“In[n]:=”自动加上的,不能人工输入!1.2.3 保存结果:保存方法同一般的Windows软件:“文件”→“保存”⇒“另存为”窗口→在“查找范围”内找到目标文件夹→输入文件名(比如输入“1”)→“”.Mathematica 4或Mathematica 5的文件的后缀是“nb”,当输入“1”时,即产生文件“1.nb”.1.2.4打开文件1.nb启动Mathematica →“文件”→“打开”⇒打开”窗口:→在“查找范围”内找到文件“1.nb”→“”即可.1.2.5 退出Mathematica:与一般应用软件一样,单击右上方的“”按钮(或用菜单:“文件”→“退出”).1.3 操作小技巧1.3.1Ctrl+K的用途如果只知道命令的首写字母,可在输入该首写字母(要大写),再按下“Ctrl+K”组合键,则所有以该字母为首的命令都列出来,只要用鼠标双1.3.2使用前面已有的结果举例如下:例1.2 做如下操作:①输入:Integrate[x^2*(11-Sin[x]),{x,-1,1}]按:“Shift+Enter”;②输入:%+1,按:“Shift+Enter”;③输入:%+1,按:“Shift+Enter”;④输入:%1+1,按:“Shift+Enter”;⑤输入:%3+1,按:“Shift+Enter”,计算结果如下:可见,“%”表示前一个计算结果;“%n ”表示第n 个计算结果. 1.3.3 删除行:见下图示1.4 数值计算请看下例:1.5 赋值与替换X=. 或Clear[x] 清除赋给x 的值expr/.{x->xval,y->yval} 用xval 、yval 分别替换expr 中的x 、y . 例1.3 输入:x=3;y=4;w=x+y 输入:Clear[x,y]; 计算输入:z=(x+y)^2 计算输入:z/.x->5 计算输入:Clear[x,y]; 计算输入:u=x+y 计算输入:u/.{x->5,y->6} 计算 计算结果如下:1.6 自定义函数用户可以自行定义函数,一个函数一旦被定义好之后就可以象系的内部函数一样使用.例1.4 如要定义函数f(x)=x 2+3x-2只要键入:即可.又如要定义分段函数2+1 < 0()= 2sin 0x x g x x x ⎧⎨≥⎩可键入:g[x_]:= Which[x<0,x^2+1,x>=0,2Sin[x]]或g[x_]:=If[x<0,x^2+1,2Sin[x]]请见以下计算结果:1.7 方程与方程组解例1.5 ① 解方程:0652=+-x x输入:Solve[x^2-5x+6==0,x]即可.② 解方程组 输入:即可(结果见下图).22131x y x y +=⎧⎨-=⎩1.8例1.6 ① ⎪⎩⎪⎨⎧>---01222x x x 输入即可.② 解不等式)3(12>--x x 输入:即可(结果见下图)注: Mathematica系统有内部函数.还有一些系统扩展的功能但不是作为内部函数的、以文件的形式存储在磁盘上的文件,要使用它们,必须用一定的方式来调用这些文件,这些文件我们称之为程序包. 调用方式之一如上所述:或用:Needs["Algebra`InequalitySolve`"] 1.9 由递推式求数列的通项公式例1.7 设求数列的通项公式只要输入:11,1,n na na a-==1.10 作函数图像例1.8在同一坐标系中作出2-1y x 和y=sinx在[-2,2]内的图像.输入: Plot[{x^2-1,Sin[x]},{x,-2,2}] 结果见下图例1.9作出sinxcosy的三维图形输入:Plot3D[Sin[x]*Cos[y],{x,-2Pi,2Pi},{y,-即可(结果见下图)第二章 运用Mathematica 实现高等数学中的基本运算极限、导数和积分是高等数学中的主要概念和基本运算,如果你在科研中遇到较复杂的求极限、求导数或求积分问题,Mathematica 可以帮你快速解决这些问题。
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位的整数:运行2^100得1267650600228229401496703205376.运行1/2+1/3得5 6 .当两个整数相除而又不能整除时,系统就用有理数来表示.实数既可以是精确值,也可以是用浮点数表示,Mathematica实数的有效位数可取任意位数,是一种具有任意精确度的近似实数,当然在计算的时候也可以控制实数的精度. 实数有两种表示方法:一种是小数形式表示,另外一种是用指数形式表示. 如:运行0.239998得0.239998.运行0.12*10^11得1.2×10实数也可以与整数、有理数进行混合运算,结果还是一个实数.运行2+1/4+0.5得2.75.在Mathematica中,复数是由实部和虚部组成,实部和虚部可以用整数、有理数、实数表示,用I表示虚数单位如:运行3+0.7I得3+0.7 .2.不同类型数的转换在Mathematica的不同应用中,通常对数字的类型要求是不同的. 例如在公式推导中的数字常用整数或有理数表示,而在数值计算中的数字常用实数表示. 在一般情况下在输出行Out[n]中,系统根据输入行ln[n]的数字类型对计算结果做出相应的处理. 如果有一些特殊的要求,就要进行数据类型转换.在Mathematica中提供以下几个函数达到转换数据类型的目的:表1-1举例如下:运行N[5/3]得1.66667,运行N[5/3,20]得1.66666666666666666667(怎么会多一个6呢?)1.6666666666666666667.注:在Mathematica4.0版本中,当016n≤≤时,系统自动以6位有效数字输出计算结果,在更高版本中不受此限制.Rationalize[x]给出x的有理数近似值,如运行Rationalize[0.48]得1225. Mathematica尽量保持计算的精确性,例如运行Rationalize[Pi]得π,运行Rationalize[Sqrt[2]] Rationalize[x,dx]给出x的误差小于dx的有理数近似值,如运行Rationalize[Pi,1]得3;运行Rationalize[Pi,0.1]得227;运行Rationalize[Pi,0.01]得227. 继续计算得π的此后7个不同精度级的有理数依次为:20133335535575948100798103993,,,,,,64106113113241753208533102.用同样的方法算得的前8个各种精度的近似值分别为317419957713933363196011,,,,,,,,2122970408985237813860.数学常数Mathematica中定义了一些常见的数学常数,这些数学常数都是精确数.表1-2黄金分割数应为:(11-+≈0.6180339887. 数学常数可用在公式推导和数值计算中,2在数值计算中表示精确值. 如:运行Pi^2得2π,运行N[Pi^2]得9.8696.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得12x +.运行f/.x->1得32.运行f/.x->4得3.如果表达式中有多个变量也可以同时替换,例如有两个变量时格式为: expr/.{x->xval,y->yval},例如:运行(x+y)*(x-y)^2/.{x->3,y->1-a}得2(4)(2)a a -+.1.2.3 内建函数在Mathematica 的Notebook 界面下,可以用交互方式完成各种运算,如绘制函数图象,求极限、解方程等,也可以用它编写象C 语言那样的结构化程序. 在Mathematica 系统中定义了许多功能强大的函数,我们称之为内建函数(built-in function), 直接调用这些函数可以达到事半功倍的效果. 这些函数分为两类,第一类是数学意义上的函数,如:绝对值函数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: Possible spelling error: new symbol name "plot" is similar to existing symbol "Plot". More …同时原样输出原命令,表示“可能有拼写错误,新符号…plot‟很象已经存在的符号…Plot‟”,由于系统作图命令“Plot”第一个字母必须大写,错误出在”plot ”中首字母没有大写. 再输入Plot[Sin[x],{x,-10,10},系统又提示“Syntax::bktmcp: Expression "Plot[Sin[x],{x,-10,10}" has no closing "]".”表示缺少右方括号,并且在命令中将不配对的括号用红色显示.一个表达式只有准确无误地输入后运行才能得出正确结果. 学会看系统出错信息能帮助我们较快找出错误,提高工作效率. 完成各种计算后,点击File->Exit 退出,如果文件未存盘,系统提示用户存盘,文件名以“.nb”作为后缀,称为Notebook 文件. 以后想使用本次保存的结果时可以通过File->Open 菜单读入,也可以直接双击该文件图标,系统自动调用Mathematica 将它打开.建议:最好在操作中途保存文件,第一次保存时,点击File->save 出现“另存为”窗口,选定保存位置并输入文件名后单击“保存”按钮即可,以后保存直接击Ctrl+S 即可.1.2.4 表达式的输入Mathematica 提供了多种输入数学表达式的方法. 除了用键盘输入外,还可以使用工具栏或者快捷方式输入运算符、矩阵或数学表达式.1.一维格式输入形如x/(2+3x)+y*(x-w)的表达式称为一维格式,除特殊字符外,所有数学表达式均可用这种格式输入,其优点之一是只用键盘就能完成输入,优点之二是适合在编程中使用,优点之三是可以在Mathematica 与Word 之间相互复制命令表达式. 在利用该软件处理数学问题时,建议采用一维格式. 这种格式的缺点是有些数学表达式不直观.2.二维格式输入形如23x y xx w++-的表达式称为二维格式,如果为了特殊需要可以使用二维格式输入.方法一:先按一维格式输入:x/(2+3x)+y/(x-w),在变量x,y ,w 未赋值的情况下运行的结果就是二维格式;方法二:可以使用快捷方式输入二维格式. 下面列出了用快捷方式输入二维格式的几种常见形式,如表1-3所示.表1-3例1.1 如输入数学表达式4x++(1)(,x,+,1,),Ctrl+^,4,->,+,a,Ctrl+_,1,->,Ctrl+/,Ctrl+2,2,x,+,y,->,->.也可以用基本输入工具栏输入二维格式:从FILE菜单中激活Plaettes->BasicInput工具栏,对于常用的特殊字符(如下图),只要单击这些字符按钮即可输入,使用工具栏可输入更复杂的数学表达式.3.特殊字符输入MathemMatica还提供了用以输入各种特殊符号的工具栏. 若要输入其它的特殊字符或运算符号,必须使用从File菜单中选取palettes,再选Complete Characters工具栏,如右图,单击对应的符号后即可输入.1.2.5数值的输出形式在数值的输出中, 可以使用转换函数进行不同数据类型和精度的转换. 另外, 对一些特殊要求的格式还可以使用如下的表达式表示形式函数,如表1-4所示.表1-4例 1.2 数值的形式转换运行A=N[Pi^30,30]得8.2128933040274958158650358543414⨯.10运行NumberForm[A,10]得NumberForm=8.2128933041410⨯.运行ScientificForm[A]的结果与此相同,但下面的命令输出幂值可被3整除的实数:运行EngineeringForm[A]得EngineeringForm=821.2893304027495815865035854341210⨯.§1.3函数1.3.1系统函数在Mathmatic中定义了大量的数学函数可以直接调用,这些函数其名称一般表达了一定的意义,可以帮助我们理解. 几个常用的函数如表1-5所示.表1-5Mathematica 中的函数与数学上的函数有些不同的地方,Mathematica 中函数是一个具有独立功能的程序模块,可以直接被调用. 同时每一函数也可以包括一个或多个参数,也可以没有参数. 参数的的数据类型也比较复杂. 更加详细的说明可以参看系统帮助,了解各个函数的功能和使用方法是学习Mathematica 软件的基础.1.3.2 自定义函数的定义1.函数的立即定义立即定义函数的语法是“f[x_]=expr ”,其中f 为函数名,x 为自变量,expr 为表达式. 在执行时会把expr 中的x 都换为f 的自变量x. 函数的自变量具有局部性,只对所在的函数起作用. 函数执行结束后变量的值也就没有了,不会改变其它全局定义的同名变量的值.例1.3 定义函数f(x)=xsinx+x 2,求函数值f(3),绘制其图形. 运行Clear[x];f[x_]=Sin[x]+x^2得x2运行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]得t 2y.4.使用条件运算符或If 命令定义函数 例1.5 定义分段函数:21,0(),(1)&&(0)sin ,1x x f x x x x x x -≥⎧⎪=>-<⎨⎪≤-⎩.这时,要根据x 的不同值给出不同的表达式. 一种办法是使用条件运算符,基本格式为f[x_]:=expr/;condition,当condition条件满足时才把expr赋给f.“/;condition”的详细用法见8.2.2.通过观察得出的图形可以验证下列函数定义的正确性:运行f[x_]:=x-1/;x>=0f[x_]:=x^2/;(x>-1)&&(x<0)f[x_]:=Sin[x]/;x<=-1Plot[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.2.1小节.1.3.3函数的调用格式无论系统自带的函数还是用户采用延迟方式定义的函数,其调用方式相同.方法一(函数名前放):f[expr],如运行N[Pi]得3.14159;运行Sqrt[2]方法二(函数名后放):expr//f,如运行2//Sqrt;运行Pi/2//Sin得1. 两种调用方法中,前者更符合数学习惯,而且能更方便地改变参数.。
Mathematic入门教程(整理版)
(1)简介数学系给本科生开设一门课: "符号计算系统", 主要简单讲授mathematica(以下简称math)软件的使用及其编程,赶兴趣的同学可以找本math书以求更深入的了解.我们平日用到编程语言时, 大家都知道编程中用到的整型, 实型, 甚至双精度数, 都只是一个近似的数, 其精度有限, 有效数字有限, 在很多时候达不到实际需要的要求. 符号计算与数值计算的区别就在于符号计算以准确值记录计算的每一步的结果, 如果需要时, 可以将精确表示按需要计算成任意位数的小数表示出来(只要机器内存足够大).最常见的符号计算系统有maple, mathematica, redues等, 这些软件各有侧重, 比如,maple内存管理及速度比math好, 但是图形方面不如math; redues没找到, 没用过, 未明; 而用得较多的matlab编程环境特好, 和C语言接口极其简单, 遗憾的是它不是符号计算, 只是数值计算. 所以, 就实用而全面来说, math是一个很好用的软件.math软件不仅能够进行一般的+-*/及科学函数如Sin, Log 等计算, 而且能进行因式分解, 求导, 积分, 幂级数展开, 求特征值等符号计算, 并且, math有较强的图元作图, 函数作图, 三维作图及动画功能.(2)mathematica入门mathematica自发布以来, 目前比较常见的有math 1.2 for DOS, math 2.2 for Windows, math 3.0 for win95, math 3.0 for UNIX.DOS下的math的好处就是系统小, 对机器要求低, 在386机器4M内存下就能运行得很好(机器再低点也是可以用的, 比如说286/2M). 在DOS下直接键入math<回车>即可进入math系统, 出现的提示符In[1]:=, 这时就可以进行计算了, 键入math函数, 回车即可进行运算. 如果输入的Quit, 则退出math. 这里要注意的是, math区分大小写的, 一般math 的函数均以大写字母开始的.windows下的math对机器要求就要高一些了, math3.0更是庞大, 安装完毕有100M之多(2.2大约十多兆). 同windows下的其他软件一样, math可以双击图标运行, 在File菜单下有退出这一项. windows下的math有其优越性, 就是可以在windows下随心所欲地拷贝粘贴图形. math3.0更是能输入和显示诸如希腊字母, 积分符号, 指数等数学符号. DOS的math与windows下的一个区别是DOS的以回车结束一句输入, 而windows的以+<回车>结束一句输入. DOS下的提示符显示为In[数字]:=, 而windows下在结束输入后才显示出In[数字]:=及Out[数字]:=字样. (Out为输出提示符) 下面试试几个例子:(In[数字]:=为提示符, 不用键入)In[1]:= 2^100 计算2的100次方In[2]:= s={{3,7,9},{7,4,3},{1,3,8}} 定义矩阵sIn[3]:= Eigenvalues[s] 计算s的特征值In[4]:= Plot[Sin[x],{x,0,Pi}] 在0,Pi间画SinIn[5]:= Plot[Cos[x],{x,0,Pi}] CosIn[6]:= Plot3D[Sin[x]Sin[y],{x,0,1},{y,0,2}] 三维作图以In[6]为例说明: math的函数都以大写字母开头的单词为函数名, Plot3D, Plot, Eigenvalues, Sin等, 常数也是如此, 如Pi. 函数名后的参数用[]括起, 逗号隔开.math的输出可以作为函数的输入对象, 你可以再试一个: In[7]:=Show[%%,%%%] 这里一个%代表上一个输出, 两个代表上两个... 也可以直接用Out[n]代表第n个输出.这里需要补充的是!command 执行DOS命令?name 关于name(函数等)的信息(可以使用通配符)??name 关于name的额外信息(3)基本计算1. 算术运算符+加-减*乘/除^指数(乘也可用空格)N[expr]或expr //N 计算expr的数值(6位有效数字)N[expr, n] n表示小数的位数2. 数学函数Sqrt[x] x开方Exp[x] e的x方Log[x] x的自然对数Log[b,x] 以b为底, x的对数Sin[x], Cos[x], Tan[x], ArcSin[x], ArcCos[x] 三角函数Abs[x] |x|Round[x] 离x最近的整数Floor[x] 不超过x的最大整数Quotient[n,m] n/m的整数部分Mod[n,m] n/m的余数Random[] 0,1间随机数Max[x,y,...] Min[x,y,...] 最大数和最小数3. 常数Pi Pi=3.141592653589793...E e=2.71828...Degree Pi/180I i=Sqrt[-1]Infinity 无穷大Catalan Catalan常数.=0.915966ComplexInfinity 复无穷DirectedInfinity 有向的无穷EulerGamma 欧拉常数gamma=0.5772216GoldenRatio 黄金分割(Sqrt[5]-1)/2Indeterminate 不定值4. 逻辑运算符==, !=, >, >=, <, <=, !, &&, ||Xor 异或Implies 隐含If[条件,式1,式2] 如果条件成立, 值式1; 否则得式25. 变量a) 变量名以字母(一般小写)开头; 字母数字组成.(如x2为变量名; 而2x, 2*x, 2 x, x*2, x 2均是x乘以2).b) 赋值x=value; x=y=value; x=.(清除x值)c) 代换expr /. x->value 将式中x代换为valueexpr /. {x->xval, y->yval}下面就让我们以几个例子来结束本节:(大家还是注意, DOS下的Math, 只要输入In[num]:=后的指令后按回车, 而windows下则是按+回车.) 大家看看都有什么输出.In[1]:= 2.7+5.23In[2]:= 1/3+2/7In[3]:= 1/3+2/7 //NIn[4]:= N[Pi,100]曾经有人问我, 你是怎么算出Pi的1000位而没有错误的, 其实很简单, 大家只要把上式的100改为1000即可.In[5]:= Sin[Pi/2]+Exp[2]+Round[1.2]In[6]:= 10<7In[7]:= x=5;如果在输入之后加上一个";", 则只运算不输出.IN[8]:= y=0(所以In[7]和8完全可以合成一条x=5;y=0, 假如我不需要x=5的输出) In[9]:= x>yIn[10]:= t=1+m^2In[11]:= t /. m->2In[12]:= t /. m->5aIn[13]:= t /. m->Pi //N(4)代数变换上一节我们已经学习了Math里的基本运算及逻辑运算, 常用数学函数, 几个常见的常数, 以及变量的使用. 这一节, 我们来学学基本代数变换: Apart, Cancel, Coefficient, Collect, Denominator, Expand, ExpandAll, Exponent, Factor, Numerator, Short, Simplify, Together.Expand[expr] 多项式expr按项展开Factor[expr] 因子形式Simplify[expr] 最简形式In[1]:= Expand[(1+x)^2]In[2]:= Factor[%]我们以前说过的哦, %是上一个输出, %%是上上个, %%%是上上上个, ..., %n是第n个输出(即Out[n])In[3]:= Simplify[%%]In[4]:= Integrate[x^2/(x^4-1),x] 这是积分运算, 详情后叙In[5]:= D[%,x] 求导In[6]:= Simplify[%]ExpandAll[expr] 所有项均展开Together[expr] 通分Apart[expr] 分离成具有最简分母的各项Cancel[expr] 约去分子,分母的公因子Collect[expr] 合并In[1]:= e=(x-1)^2 (2+x)/((1+x)(x-3)^2)In[2]:= Expand[e]In[3]:= ExpandAll[e]In[4]:= Together[e]In[5]:= Apart[%]In[6]:= Factor[%]Coefficient[expr, form] 表达式中form项的系数Exponent[expr, form] form的最高幂次Numerator[expr] 取分子Denominator[expr] 取分母expr //Short 以简短形式输出In[1]:= e=Expand[(1+3x+4y^2)^2]In[2]:= Coefficient[e, x]In[3]:= Exponent[e, y]In[4]:= q=(1+x)/(2(2-y))In[5]:= Denominator[%]In[6]:= Expand[(x+5y+10)^4]In[7]:= %//Short 把上式输出, 中间项省去, 以<<数字>>表示省去的项数.最后, 我们以例子来看看用符号名做客体的标志的好处In[1]:= 12metersIn[2]:= %+5.3metersIn[3]:= %/(25seconds)In[4]:= %/.meters->3.78084feet 一下子就把米制变为英尺了.(5)微积分运算(2-1)学到上一节, 大家会发现怎么还停留在中学的计算中呢, 这一节, 大家就会看到微分D, Dt; 积分Integrate, NIntegrage; 和与积Sum, Product, NSum, NProduct. 下一节我们介绍解方程Solve, Eliminate, Reduce, NRoot, FindRoot, FindMinimum; 幂级数Series, Normal; 极限Limit; 特殊函数Fourier, InverseFourier, ...微分D[f, x] f对x求导D[f, x_1, x_2, ...] f对x_1, x_2, ...求导D[f, {x, n}] f对x求n次导Dt[f] 全微分dfDt[f, x] 全微商df/dxIn[1]:= D[x^n,x]In[2]:= D[f[x],x]In[3]:= D[2x f[x^2],x]In[4]:= D[x^n, {x, 3}]In[5]:= D[x^2 y^3, x, y]In[6]:= Dt[x^n]In[7]:= Dt[x y, x]积分Integrate[f,x] f对x积分Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}, ...] 定积分NIntegrate[f, {x, xmin, xmax}, {y, ymin, ymax}, ...]计算积分的数值解In[1]:= Integrate[Sin[Sin[x]],x] 嘻嘻, 无法计算, 原样输出In[2]:= Integrate[Log[x], {x,0,6}] 啊, 广义积分也一样算In[3]:= Integrate[x^2+y^2, {x,0,1}, {y,0,1}]In[4]:= In[3]//N 如果你的上一条输入不是In[3], 注意调整这一条的输入哦In[5]:= Integrate[Sin[Sin[x]], {x,0,1}] 怎么还没法计算啊In[6]:= N[%] 或NIntegrate[Sin[Sin[x]], {x,0,1}] 呵,终于可以计算了.和与积Sum[f, {i, imin, imax}, {j, jmin, jmax}, ...]f对i, j, ...分别从imin到imax,jmin到jmax,...求和Sum[f, {i, imin, imax, di}] 求和的步长为diProduct[f, {i, imin, imax}, {j, jmin, jmax}, ...] 求积NSum 数值解NProduct 数值解In[1]:= Sum[x^i/i, {i,1,4}]In[2]:= Sum[x^i/i, {i,1,5,2}]In[3]:= Sum[a/i^3, {i,1,10}]In[4]:= N[%] 或NSum[a/i^3, {i,1,10}]In[5]:= Sum[1/i^3, {i,1,Infinity}] 可能原样输出, 也可能输出Zeta[3](依math的版本不同而异)In[6]:= N[%]In[7]:= Sum[x^i*y^j, {i,1,3}, {j,1,i}]注: 如果想要求带符号上下限的Sum, 在math3.0中, 直接使用Sum函数即可: In[8]:= Sum[1/Sin[i], {i,1,n}]而如果在旧版本的math, 则可能需要调入包(package) "gospersu.m", 调入格式一般为In[8]:= <<"盘符:\\math路径\\packages\\algebra\\gospersu.m"(不同安装目录可能出现不一样)然后使用函数GosperSum[](6)微积分运算(2-2)上一节, 我们一起学习了微分D, Dt; 积分Integrate, NIntegrage;和与积Sum, Product, NSum, NProduct. 这一节我们将介绍解方程Solve, Eliminate, Reduce, NRoot, FindRoot, FindMinimum; 幂级数Series, Normal; 极限Limit; 特殊函数Fourier, InverseFourier, ...最后, 我们说明一下math的函数的定义, 别名的使用, 以及不同输出格式解方程Solve[{lhs1==rhs1, lhs2==rhs2,...}, {x,y,...}]解关于x,y,...的方程组{lhs1==rhs1, lhs2==rhs2,...}Eliminate[{lhs1==rhs1, lhs2==rhs2,...}, {x,y,...}]在联立方程中消去x,y,...Reduce[{lhs1==rhs1, lhs2==rhs2,...}, {x,y,...}]给出一组化简后的方程, 包括可能的解NRoot[poly==0, x] 给出多项式的根的数值逼近FindRoot[lhs==rhs, {x, x0}] 从x0出发, 求方程的数值解FindMinimum[f, {x,x0}] 在x0附近找f的极小值In[1]:= Solve[x^2+2x-7==0, x]In[2]:= Solve[2-4x+x^5==0, x] 呵呵~~~ 输出结果你会发现和没解一样In[3]:= N[%] 啊, 要数值解啊, 不早说. 这不是么. In[4]:= Solve[{a*x+y==0, 2x+(1-a)y==1},{x,a}]In[5]:= Eliminate[{3x+2y+z==3, 2x-2y-2z==5,x+y-7z==9}, {x,z}]In[6]:= Reduce[a*x+b==0, x] 哇, 好COOL. a==0, 怎么怎么; a!=0, ... In[7]:= FindRoot[Cos[x]==x,{x,1}]In[8]:= FindMinimum[x Sin[x], {x,2Pi}]幂级数Series[expr, {x, x0, n}] 求expr在x0的n阶幂级数Normal[series] 按标准形式In[1]:= Series[(1+x)^n, {x,0,3}] 最后还有近似量级呢(大喔O[x]^4)In[2]:= Normal[%]In[3]:= %^2 (1+%) 把大喔量级不要了, 多项式当然可以这么运算极限Limit[expr, x->x0] expr中x趋于x0In[1]:= t=Sin[x]/xIn[2]:= t/.x->0 错了吧. 0不能当分母的In[3]:= Limit[t,x->0] 求极限总可以了吧特殊函数Fourier[] 傅利叶变换InverseFourier[] 反傅利叶变换In[1]:= {1,1,1,1,-1,-1,-1,-1}In[2]:= Fourier[%]In[3]:= InverseFourier[%]RungeKutta[], ... 等函数定义函数如下In[1]:= f[x_]:=x^2+1 math中定义函数:变量后跟_, 然后用:=In[2]:= f[x_, y_]:=x+y 以上两个定义同时存在并不矛盾, 当f仅使用一个参数, 自动用一式; 为两个参数, 则用二式In[3]:= f[3]In[4]:= f[3,2]定义别名In[1]:= para:=ParametricPlot 用:=来定义别名In[2]:= para[{Cos[t],t}, {t,0,Pi}]In[3]:= Alas[para] 查看para是什么的别名(7)矩阵/表的运算矩阵的定义Table, Array, IdentityMatrix, DiagonalMatrix; 输出输入TalbeForm, ColumnForm, MatrixForm, list(其他输出TeXForm, FortranForm, CForm); 及运算: 数乘, 矩阵乘法, Inverse, Transpose, Det, MatrixPower, Eigenvalues, Eigenvectors, 矩阵定义使用的一点说明.矩阵的定义Table[f, {imax}] 包含imax个f的元素(f是规则)Table[f, {i, imin, imax, istep}, {j, ...}, ...]istep=1可省, imin=1也等于1可再省Array[a, n] 建立向量a[1], a[2], ..., a[n]Array[a, {m, n}] 建mxn矩阵aArray[a, {m1, m2, ..., mn}] n维张量IdentityMatrix[n] 生成n维单位矩阵DiagonalMatrix[list] list元素为对角元In[1]:= Table[x, {4}]In[2]:= Table[i^2, {i, 1, 4}]In[3]:= x^%-1 看看表在运算符作用后的结果In[4]:= D[%, x] 求导也可以In[5]:= % /. x->3 代入值看看In[6]:= Array[a, {3, 2}] 看个2维的(3x2)矩阵In[7]:= DiagonalMatrix[{1,2,3}] 生成对角元是1,2,3的方阵矩阵的输出/输入TableForm[list] 以表列格式显示一个表ColumnForm[list] 写成一列MatrixForm[list] 按矩阵形式list[[i]] 第i个元素(一维); 第i行元素(二维)list[[i,j]] list的第i行, 第j列元素.In[1]:= a=Table[i+2*j, {i, 1, 3}, {j, 1, 2}]In[2]:= TableForm[%] 看看表格式In[3]:= ColumnForm[%%] 写成一列In[4]:= MatrixForm[%%%} 再看看矩阵形式In[5]:= %[[2]] 把上面的矩阵的第二行(是一维的表了哦)去来In[6]:= %%[[2,1]] 取第二行第一列元素(是一个数)注: In[5],In[6]也可用a[[2]]和a[[2,1]]的典型写法.其他输出格式TeXForm, FortranForm, CFormTeX(数学排版)格式, Fortran语言, C语言格式输出In[1]:= (Sqrt[x^3-1]+Exp[y])/Log[x]In[2]:= TeXForm[%] 注意TeX中T和X是大写, e是小写In[3]:= CForm[%]矩阵的数学运算cm 数乘(c标量, m是Table或Array定义的矩阵)a.b 矩阵相乘(注意矩阵乘法的规则)Inverse[m] 逆矩阵(当然要对方阵来说了)Transpose[m] 转置Det[m] m(方阵)的行列式MatrixPower[m,n] m(方阵)的n次幂Eigenvalues[m] m(方阵)的特征值Eigenvectors[m] m(方阵)的特征向量Eigenvalues[N[m]], Eigenvectors[N[m]] 数值解In[1]:= a=Table[i+2*j, {i, 1, 3}, {j, 1, 2}]In[2]:= 5a 看看乘积In[3]:= b=Table[3*i-2^j, {i, 1, 3}, {j, 1, 3}]In[4]:= b.a 矩阵乘法(注意,此例a.b没有意义)In[4]:= Transpose[%] 转置In[5]:= Inverse[b] 求一下矩阵的逆(天哪, 是方阵还不行, 还要行列式不为0) In[6]:= Det[b] 果然行列式为0In[7]:= c=b+{{1,0,0},{0,0,0},{0,0,0}}In[8]:= Inverse[c] 终于可以求逆了In[9]:= MatrixPower[b,3] b的3次方In[10]:= Eigenvalues[b] 特征值In[11]:= Eigenvectors[b] 特征向量一点说明: 矩阵可以先使用, 再定义; 局部定义和整体定义的顺序也自由. 如:In[1]:= d[1,1]=w; d[1,2]=e; d[2,1]=21; d[2,2]=22;In[2]:= Array[d,{3,3}] 你就会发现, 定义过的有值了, 没定义的还没有值.(8)表的运算.2表的结构VertorQ, MatrixQ, MemberQ, FreeQ, Length, TensorRank, Dimensions, Count, Position; 取表元First, Last, list[[]], Take, Rest, Drop, Select; 插入元素Prepend, Append, Insert, Join; 表的集合Union, Intersection, Complement; 表的重排Sort, Union, Reverse, RotateLeft, RotateRight, Transpose, Flatten, Partition, Permutations, Apply计算表的有关结构VectorQ[list] 检验list是否为向量结构MatrixQ[list] 检验list是否为矩阵结构MemberQ[list, form] 检验form是否为list的元素FreeQ[list, form] 检验form是否不是list的元素Length[list] list中元素的数目TensorRank[list] list的深度(看成张量的秩)Dimensions[list] list作为向量或矩阵的维数Count[list, form] form在list中出现的次数Position[list, form] form在list中的位置In[1]:= t={{1,2},3} t是一个表In[2]:= VectorQ[t] 不是向量In[3]:= MemberQ[t,3] 3是它的元素In[4]:= MemberQ[t,2] 2不是它的元素In[5]:= Length[t] t的长度是2In[6]:= TensorRank[t] t的深度是1In[7]:= Dimensions[t] 作为向量,是2维: {1,2}和3In[8]:= Position[t,3] 3在表t中的位置是{{2}}在表中取部分元素First[list] list的首元素Last[list] list的最后一个元素list[[n]] list的第n个元素list[[-n]] list的倒数第n个元素(以后二者合写为n/-n)list[[n1,n2,...,nm]] 相当list[[n1]][[n2]]...[[nm]]list[[{n1,n2,...,nm}]] list第n1,n2,...,nm元组成新表list[[{i1,i2,...},{j1,j2,...}]]list的i1,i2...行,j1,j2,...列Take[list, n/-n] 取list的前/后n个元素Rest[list] 去掉首元的listDrop[list, n/-n] 去掉前/后n个元素的listSelect[list, crit] 从list中选出满足crit的元素In[1]:= t={{2,1},{1}};In[2]:= VectorQ[t] 函数名最后字母为Q,其值为True/FalseIn[3]:= aa={{a,b,c,d},{e,f,g,h},{i,j,k,l}};In[4]:= aa[[1]] 看看以下几个, 体会一下取元素/子表In[5]:= aa[[1]][[2]]In[6]:= aa[[1,2]]In[7]:= aa[[{1,2}]]In[8]:= aa[[{1},{2}]]In[9]:= Select[{a,23,12,0,3.5},EvenQ] 看看Select怎么用这里EvenQ[expr]判断expr是否偶数; OddQ[.]奇数?; NumberQ[.]数?;IntegerQ[.]整数?; PrimeQ[.]素数? AtomQ[.]简单表达式?...表中插入元素Prepend[list, elem] 表头加elem(PrependTo函数修改list) Append[list, elem] 在表尾加elem(AppendTo修改list)Insert[list, elem, n/-n] 在正/倒数第n个位置插入elemJoin[list1, list2, ...] 连接list1, list2, ...In[1]:= Prepend[{a,b,c},x] 在{a,b,c}前加x元素In[2]:= Insert[{a,b,c},x,2] 在{a,b,c}的第2个位置插入xIn[3]:= Join[{1,2,3},{xy},{m,{2,3},3}] 看看Join集合函数Union[list1, list2, ...] 去掉重复元并排序后的JoinIntersection[list1, list2, ...] 取各list的公共元Complement[t, list1, list2, ...] 在t中, 不在各list中的元素In[4]:= Union[{1,2,3},{xy},{m,{2,3},3}] 看看UnionIn[5]:= Complement[{a,b,c,d,e},{a,d},{e,f}] 看看Complement 表的重排Sort[list] 将list排序Union[list] 去掉重复元Reverse[list] 倒序RotateLeft[list, n/-n] 将list向左/右转n个元素(n=1可省) RotateRight[list, n/-n] 将list向右/左转n个元素(n=1可省) Transpose[list] 交换表的最上面两层Transpose[list, n] 交换表的顶层与第n层Flatten[list] 将list所有层变为一层Flatten[list, n] 将list的最上面n层变为一层Partition[list, n] 将list分成由n元组成的块(多余舍去) Partition[list, n, d] 各块中有偏移dPermutations[list] 给出list一切可能的排列Apply[Plus, list] 求和list[[i]]Apply[Times, list] 求积list[[i]]In[1]:= RotateLeft[{a,b,c,d,e},2] 得到{c,d,e,a,b}In[2]:= Flatten[{{a,b},c,{c,d}}] 得到{a,b,c,c,d}In[3]:= Table[i^2+j^2+k^2,{i,2},{j,2},{k,2}]In[4]:= Flatten[%,1] 展开一层In[5]:= Apply[Plus,%] 求和得到{24,36}In[6]:= Partition[{a,b,c,d,e,f,g},3,1] 看看Partition(9)二维图形二维函数作图Plot, 选项; 图的重现Show, Options, SetOptions, InputForm, Head; 参数绘图ParametricPlot; 线宽Thickness, 线型Dashing. 二维图形函数作图Plot[f[x],{x,xmin,xmax}] 在{xmin,xmax}间画出f[x]的图形Plot[{f1[x],f2[x],...},{x,xmin,xmax}] 画出fi[x]Plot[Release[f],{x,xmin,xmax}] 有时f的表达式很复杂,直接用Plot计算量大,可能得不出结果,可以先求f的值,再画Plot选项设置(格式: 选项->值)PlotRange Automatic {ymin,ymax}或{{xmin,xmax},{ymin,ymax}}AxesLabel轴标None {"x轴标","y轴标"}Frame框False TrueAxesOrigin原点Automatic {x,y}Axes轴Automatic None不画Ticks刻度Automatic None或{{xticks(,...)},{yticks(,...)}}GridLines网格None All或{{xlines...},{ylines}}AspectRatio 1/GodenRatio 正实数(高/宽)PlotPoints 15 Plot的作图精度In[1]:= Plot[Sin[x^2], {x,0,3}]In[2]:= Plot[Sin[x^2], {x,0,3}, PlotRange->{0,1.2}]In[3]:= Plot[Sin[x^2], {x,0,3}, AxesLabel->{"x","Sin[x^2]"}]In[4]:= Plot[Sin[x^2], {x,0,3}, Axes->None]In[5]:= Plot[Sin[x^2], {x,0,3}, PlotPoints->40]图形的重现Show[p] 重画图pShow[p1,p2,...] 把p1,p2,...重画在一起Show[p,option->value] 改变选项重画p(选项大多同上)(没有PlotPoits选项)Options[p] 显示图p的选项InputForm[p] 显示图p的有关存储信息SetOptions[函数名,option->value] 改变函数选项默认值Head[p] p的类型,如果p是图,则值为Graphics In[1]:= t1=Plot[BesselJ[1,x],{x,1,20}]In[2]:= t2=Plot[Sin[x],{x,0,15}]In[3]:= Show[t1,%]In[4]:= Show[%,Axes->None]In[5]:= Show[%,Frame->True]In[6]:= Options[%]In[7]:= InputForm[t2]参数绘图ParametricPlot[{fx,fy},{t,tmin,tmax}]ParametricPlot[{{fx,fy},{gx,gy},...},{t,tmin,tmax}]{fx,fy}的几种特殊情形{r[t]Cos[t],r[t]Sin[t]} 极坐标{Re[f],Im[f]} 复函数的相角图{Log[f],Log[g]} log-log图注意: 有时需要把AspectRatio->1才能更好地显示y/x比例, 如画圆. In[1]:= ParametricPlot[{Sin[t],Sin[2t]},{t,0,2Pi}]In[2]:= ParametricPlot[{Sin[t],Cos[t]},{t,0,2Pi}]In[3]:= Show[%,AspectRatio->Automatic]AspectRatio是1或Automatic是y/x的比例才是1选项,改变线宽和线型(虚线):在Plot的选项里使用PlotStyle->Thickness[0到1的值] 在math3.0下,使用0.005足矣PlotStyle->Dashing[{画,空}]在Show中,在Graphics[Thickness[.]]或Graphics[Dashing[.]]之后的线宽或线型依此改变.In[1]:= Plot[Sin[x^2],{x,0,3},PlotStyle->Thickness[0.01]]In[2]:= Plot[Sin[x^2],{x,0,3},PlotStyle->Dashing[{0.01,0.01}]]In[3]:= t1=Plot[Sin[(3x)^2],{x,-1,1}]In[4]:= t2=ParametricPlot[{Sin[t],Sin[2t]},{t,0,2Pi}]In[5]:= Show[t1,Graphics[Dashing[{0.01,0.01}]],t2]In[6]:= Show[t1,Graphics[Thickness[0.01]],t2](10)三维图形三维函数作图Plot3D, 选项; 参数作图ParametricPlot3D; 等值线图ContourPlot; 密度图DensityPlot; 数据绘图ListPlot,ListPlot3D.三维作图函数作图Plot3D[f[x,y],{x,xmin,xmax},{y,ymin,ymax}]在{xmin,xmax}间画出f[x]的Surface图形Show[p] 重画图p,用法同二维Show[Gaphics3D[p]] 将图p(可能是SurfaceGraphics)转为Graphics3D,并重画三维作图选项PlotRange Automatic {zmin,zmax}或{{xmin,xmax},{y...},{z...}} Axes轴Automatic NoneAxesLabel None {"x轴标","y轴标","z轴标"}Ticks Automatic 刻度PlotLabel图标None 图的标记Boxed盒子True FalseBoxRatios {1,1,0.4} {x,y,z}HiddenSurface True False是否隐去曲面被挡部分Shading True False是否涂阴影(颜色)Mesh True False是否在曲面上画网格LightSources 三个光源设光源{{x,y,z},RGBColor[r,g,b]} FaceGrids None All或坐标网格ViewPoint视点{1.3,-2.4,2.} {x,y,z}{0,-2,0}正前方; {0,-2,2}前上方; {0,-2,-2}前下方;{2,-2,0}正右角; {0,0,2}正上方; ...PlotPoints 15 作图精度(PlotPoints为Plot3D,ParametricPlot3D,ContourPlot等plot函数选项)In[1]:= Plot3D[Sin[x]y^2,{x,-3,4},{y,-2,2}]In[2]:= Plot3D[Sin[x]y^2,{x,-3,4},{y,-2,2},PlotPoints->30]In[2]:= Show[%, Mesh->False,Boxed->False,Axes->None]参数绘图ParametricPlot3D[{fx,fy,fz},{u,umin,umax},{v,vmin,vmax}] 等值线图ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}]选项Contours 10 从zmin到zmax等值线条数密度图DensityPlot[f,{x,xmin,xmax},{y,ymin,ymax}]In[1]:= ParametricPlot3D[{Cos[5t],Sin[3t],Sin[t]},{t,0,2Pi}]In[2]:= ParametricPlot3D[{u,u+v,v^2},{u,0,2},{v,-1,1}]In[3]:= ContourPlot[Sin[x]Cos[y],{x,-2,2},{y,-2,2}]In[4]:= Show[%,Contours->30]In[5]:= DensityPlot[Sin[x]Cos[y],{x,-2,2},{y,-2,2}]数据绘图ListPlot[{y1,y2,...}] 画(1,y1),(2,y2),...ListPlot[{{x1,y1},{x2,y2},...}]ListPlot[...,PlotJoined->True] 连线ListPlot3D[array]In[1]:= t=Table[i^2,{i,10}]In[2]:= ListPlot[t]In[3]:= ListPlot[t,PlotJoined->True]In[4]:= tt=Table[Mod[y,x],{x,20},{y,20}]In[5]:= ListPlot3D[%,ViewPoint->{1.5,-0.5,1}](11)基本图元作图二维基本图元Point, Line, Rectangle, Polygon, Circle, Disk, Text, Graphics[]; 三维基本图元Point, Line, Polygon, Cuboid, Text, Graphics3D[]; 一些PlotStyle: Thickness, Dashing, PointSize, GrayLevel, RGBColor.基本图元绘图二维基本图元Point[{x,y}] 点(x,y)Line[{{x1,y1},{x2,y2},...}] 连线Rectangle[{xmin,ymin},{xmax,ymax}] 矩形Polygon[{{x1,y1},{x2,y2},...}] 多边形Circle[{x,y},r] 圆:圆心(x,y),半径rDisk[{x,y},r] 圆盘:圆心(x,y),半径rCircle[{x,y},{rx,ry},{a1,a2}] 椭圆:圆心(x,y),长短轴rx,ry,起始角a1,终止角a2Disk[{x,y},{rx,ry},{a1,a2}] 椭圆盘Text[expr,{x,y}] 文本输出在(x,y)Text[expr,{x,y},{x1,y1}] 文本输出{x1,y1}为{-1,0},{1,0},{0,1},{0,-1}, 则文本输出以(x,y)为左端点, 右端点, 上端点, 下端点; 其他-1到1的数为相对位移In[1]:= s1=Line[Table[{n,(-1)^n},{n,6}]]In[2]:= Show[Graphics[s1]]In[3]:= g1=Show[%, Axes->Automatic]In[4]:= Show[g1,Graphics[Text["f(x)",{4.5,0.8}]]]In[5]:= s2={Rectangle[{1,-1},{2,-0.6}],Polygon[ {{1,0},{3,1},{4,0.5},{5,1}}]}In[6]:= Show[g1,Graphics[s2]]In[7]:= Show[Graphics[Table[Circle[{3n,0},n/4],{n,4}]], AspectRatio->Automatic]In[8]:=Show[Graphics[Disk[{1,1},{1,2},{10Degree,325Degree}]], AspectRatio->Automatic] 三维图元Point[{x,y,z}] 点(x,y,z)Line[{{x1,y1,z1},{x2,y2,z2},...}] 连线Polygon[{{x1,y1,z1},{x2,y2,z2},...}] 多边形Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}] 立方体Text[expr,{x,y,z}] 文本输出一些PlotStyleThickness[r] 线宽Dashing[{r1,r2,...}] 虚线{实虚实虚...}PointSize[r] 点的大小GrayLevel[r] 灰度0<=r<=1RGBColor[r,g,b] RGB颜色([0,1]间)[1,0,0]红; [0,1,0]绿; [0,0,1]蓝; [1,1,0]黄In[1]:= Plot[Sin[x^2],{x,0,3},PlotStyle->RGBColor[1,0,0]]In[2]:= Show[%,Graphics[PointSize[0.05]],Graphics[Point[{2,1}]]]In[3]:= Show[Graphics3D[RGBColor[1,0,0]],Graphics3D[ Line[{{0,0,0},{1,2,3},{3,2,1}}]]](12)表达式与纯函数表达式形式FullForm, TreeForm, Head; 表达式的书写形式@, //, ~f~; 表达式的项expr[[n]]; 表达式操作Apply(@@), Nest, Map(/@), MapAll(//@), MapAt; 纯函数&, #, ##.表达式形式FullForm[expr] 给出表达式的完全形式TreeForm[expr] 给出表达式的完全形式Head[expr] 给出表达式的头部In[1]:= FullForm[x+y+z] x+y+z的FullForm是Plus[x,y,z]In[2]:= FullForm[1+(x y)^2+(y+z)^3]In[3]:= TreeForm[%]In[4]:= Head[%]In[5]:= Head[215]In[6]:= Head[21.5]In[7]:= Head[Plot[Sin[x],{x,0,1}]]表达式的四种书写形式f[x,y] 标准形式f@x f[x]的前缀形式x//f f[x]的后缀形式x~f~y f[x,y]的中间形式In[1]:= Pi^2//N 相当于N[Pi^2](//级别低)In[2]:= N@Pi^2In[3]:= {a,b,c}~Join~{c,d}表达式的项expr[[n]] expr的第n项expr[[-n]] expr倒数第n项expr[[n1,n2,...]] 树结构索引的expr的项expr[[n]]=expr2 项赋值Position[expr,form] 寻找expr中form的位置In[1]:= t=1+(3+x)^2+z;In[2]:= t[[2]] 得(3+x)^2(类似于取List的元素)In[3]:= t[[2,1]] 再取子表得到Power函数的(3+x)In[4]:= t[[4]] 出错,不存在In[5]:= t[[3]]=y*z 试试直接赋值In[6]:= t 看看t变成什么了表达式的操作Apply[f,list] 对list施加函数f (@@)Nest[f,x,n] 将f对x作用n次Map[f,expr] 将f作用于expr的第一层(/@) Map[f,expr,n] 将f作用于expr直到第n层MapAll[f,expr] 将f作用于expr的所有项(//@)MapAt[f,expr,{polist}] 将f作用于expr的polist位置上In[1]:= Apply[f,{a,b,c}] 得到f[a,b,c](同f@@{a,b,c})In[2]:= Nest[f,x,3] 得f[f[f[x]]]In[3]:= u=x+(x+2)^2/xIn[4]:= Map[f,u] 同f/@uIn[5]:= Map[f,u,2]In[6]:= MapAll[f,u] 同f//@uIn[7]:= MapAt[f,u,Position[u,x]] 所有x都换成f[x]纯函数& Function纯函数# 纯函数的第一个变量#n 纯函数的第n个变量##n 从第n个起的变量序列## ##1Function[x,expr] 有一个变量的纯函数Function[{x1,x2,...},expr] 列表参数的纯函数In[1]:= Map[#^2&, {a,b,c}] 甚至#^2& /@ {a,b,c} 即将函数#^2作用于{a,b,c}得到{a^2,b^2,c^2}In[2]:= (#1^2+#2^#3)&[x,y,3] 即x^2+y^3In[3]:= g[##,##]&[x,y] 得g[x,y,x,y](13)转化规则与参数转换规则f[x]=, f[x_]=, Clear; 模式与匹配; 赋值=和:=; /; , -> , :> , /. , //. , Replace, /: ; 参数的含义_, __, ___, _head, _:xdef.转换规则f[x]=expr 定义f在x的值f[x_]:=expr 定义f[x](区别=与:=)Clear[f]或f[x_]=. 清除f的定义Remove[f] 彻底清除变量或函数fIn[1]:= f[x]=x^2 定义f在x为x^2In[2]:= f[2]+f[x] f[2]未定义,所以得到f[2]+x^2In[3]:= g[x_]=x^2 定义g[x](这里x没有值,:=与=一样) In[4]:= g[2]+g[x] 得到4+x^2 (注意看f和g的区别)In[5]:= f[3]=10 再定义一个f[3]In[6]:= ?f 看看f模式与匹配f[n_], f[m_,n_], f[n_,n_]In[1]:= f[m_,n_]:=m+nIn[2]:= f[n_,n_]:=3*nIn[3]:= f[n_]:=2*nIn[4]:= f[2,2]+f[6,8] f[2,2]用的是f[n,n]而不是f[m,n]In[5]:= f[2]+f[6,8] f[2]用单参数规则,f[6,8]用双参数规则赋值= 立即赋值:= 到使用时再赋值In[1]:= y=2In[2]:= h[y_]=y^3 即时赋值In[3]:= h[1] =8In[4]:= h2[y_]:=y^3 使用时再赋值,这里只定义规则In[5]:= h2[1] =1 (注意h2与h的区别)In[6]:= ?hIn[7]:= ?h2 分别看看就知道了In[8]:= 3! 下面再熟练一下=和:=的区别In[9]:= f[x_]:=%+2xIn[10]:= 1+y^2In[11]:= g[x_]:=%+2xIn[12]:= 2+zIn[13]:= f[a]+g[a]In[14]:= f[a]*g[a]/; (表达式/;条件) 满足条件使用表达式-> (lhs -> rhs) 在定义时,lhs用rhs代替:> (lhs :> rhs) 在使用时,lhs用rhs代替/. (expr /. rule) 对expr所有项使用规则一次//. (expr //. rule) 对expr所有项使用规则直到结果不变化Replace[expr,rule] 对整体expr使用规则一次/: (g/:lhs:=rhs) 定义一个转换规则,与g相关联In[1]:= f[x_]:=1 /; -1<=x<=1 当-1<=x<=1时, f[x]=1In[2]:= f[x_]:=-1 其他时候f[x]=-1In[3]:= f[2]In[4]:= f[0.5] 分段函数耶In[5]:= Plot[f[x],{x,-2,2}] 画图看看, 不错不错In[6]:= x+y /. x->2 得到2+y(:>和->的区别类似于:=与=) In[7]:= Clear[f]In[8]:= f[5] /. {f[1]->1,f[x_]->x*f[x-1]}In[9]:= f[5] //. {f[1]->1,f[x_]->x*f[x-1]}In[10]:= ss /: math[ss]=96In[11]:= ss /: phys[ss]=95In[12]:= ?ss参数x_ 单个表达式xx__ 一个或多个表达式序列xx___ 0个或多个表达式序列xx_h (或x__h) Head是h的表达式(序列)x_:xdef 可省参数的缺省值In[1]:= nt[t_,lt__]:=t*ltIn[2]:= c={1,2,3,4}In[3]:= nt[3,c] 这里就使用c是列表参数In[4]:= li[x_,xi_,xj__]:=(x-xj)/(xi-xj)In[5]:= li[x,xi,{1,2}] 再看个例子In[6]:= h[x_Real]:=x^2 定义h,当x是Real时In[7]:= h[4.5] h[4.5]的值为20.25In[8]:= h[a] a的Head不是Real,未定义,得h[a]In[9]:= fac[0]=1 以下看看函数facIn[10]:= fac[n_Integer?Positive]:=n*fac[n-1]In[11]:= fac[5] 120(注意上面条件用?间隔)In[12]:= h2[x_?NumberQ]:=x^3 看看这个条件的使用In[13]:= f[x_,y_:1,z_:2]:=g[x,y,z]In[14]:= f[a1,b1,c1] 都有参数则按参数代入In[15]:= f[a1,b1] 少一个参数,使用缺省值In[16]:= f[a1] 只有一个参数,两个参数使用缺省(14)mathematica过程编程一般过程, Block; 循环Do, While, For, Nest, FixedPoint; 条件If, Which, Switch; 转向Return, Break, Continue, Goto, Label.一般过程Command; Command; ... 一串命令Block[{x,y,...},procedure] x,y,...为局部参数Block[{x=x0,y=y0,...},proc] 局部参数赋初值In[1]:= g[x_]:= Block[{u},u=(1+x)^2;u=Expand[u]]In[2]:= g[a+b] 看看g[a+b]=?In[3]:= u 而这时u不发生改变循环结构Do[expr,{i,imin,imax,istep}]计算expr,i从imin到imax,步长istepDo[expr,{i,imin,imax}] istep=1Do[expr,{i,imax}] imin=1,istep=1Do[expr,{n}] 计算expr n次Do[expr, {i...}, {j...}...] 多重循环(前面的外重循环)While[test,expr] 当test成立, 计算exprFor[start,test,increment,body]相当于C语言for(start;test;increment) body Nest[f,expr,n] f对expr作用n次FixedPoint[f,expr] 重复使用f,直到expr不再变化用于循环的表达式i++, i--, ++i, --i, i+=di, i-=di, i*=di, i/=di,{x,y}={y,x} x,y值交换In[1]:= Do[Print[i^2],{i,4}] 循环Print[i^2]In[2]:= t=x;Do[t=1/(1+k*t),{k,2,4}];tIn[3]:= Do[Print[{i,j}],{i,4},{j,i-1}]In[4]:= Nest[Function[t,1/(1+t)],x,3] 注意虚函数的使用In[5]:= FixedPoint[Function[t,Print[t];Floor[t/2]],67]In[6]:= n=17;While[(n=Floor[n/2])!=0,Print[n]]In[7]:= For[i=1,i<4,i++,Print[i]]In[8]:= For[i=1;t=x,i^2<10,i++,t=t^2+i;Print[t]]大家注意练习上面例子, 考虑并看看运行结果, 熟练Math的循环语句的使用.条件语句If[test,expr] if (test) exprIf[test,expr1,expr2] if (test) expr1 else expr2If[test,expr1,expr2,expr3] 无法判断时得值expr3Which[test1,value1,test2,value2,...True,value]test1为真,得value1;否则判断test2...;若全不满足,得Null Switch[expr,form1,value1,form2,value2,...]expr的值为form1,得value1; 为form2,得value2,...In[1]:= f[x_]:=If[x>0,1,-1]In[2]:= Plot[f[x],{x,-2,2}] 还是画图形象In[3]:= g[x_]:=Which[x>1,x+2,x<-5,x-2]In[4]:= g[0] 没有输出In[5]:= Print[g[0]] 看到了,是NullIn[6]:= g[-6]In[7]:= g[2] 这两个g值都有意义In[8]:= h[x_]:=Switch[Mod[x,3],0,a,1,b,2,c]In[9]:= h[4] 也可以看看h[5],h[6]等值转向控制Return[] 返回,当前函数值NullReturn[expr] 返回expr的值Break[] 和Continue[] 这两函数只用于For,While.(Do不使用)Goto[标志]和Label[标志](15)程序包程序包的结构, 上下文, 程序注释, 输出, 输入程序包的结构BeginPackage["self`"] 激活或建立self上下文f::ussage="...." f的用法说明Begin["`Private`"] 开始包的私有上下文....f[args]=.......End[] 结束自身的上下文EndPackage[] 结束包,将self`放在全局上下文路径的最前面如果第一句为BeginPackage["self`","f1`","f2`"], 则在定义包self时, 同时打开f1.m, f2.m, 调入f1`, f2`.名字和上下文上下文表示为字符串`name 在当前上下文或搜索路径中最先找到的符号context`name 在指定上下文中的符号`name 在当前上下文中的符号Unique[ss] 生成以ss开头的没用过的符号Clear[s] 清除s的值Remove[s] 清除符号sRemove["context`*"] 清除context上下文中的所有符号这里要提一下两个系统变量: $Context和$ContextPath, 前者为当前上下文, 后者为当前上下文路径. 关于上下文, 大家看看以下例子, 体会一下.In[1]:= $Context 当前上下文是Global`In[2]:= z=6 定义z=6In[3]:= Begin["new1`"] 开始new1上下文IN[4]:= new1`z=9 new1上下文中的z=9In[5]:= $Context 当前上下文是new1`In[6]:= z 看看z=9In[7]:= ?*`z 看看有几个z,其中有z和Global`zIn[8]:= EndAdd[] 结束new1`,并将new1`放在路径最前面In[9]:= $ContextPath 看看路径In[10]:= ?*`z 看看有几个z,其中有z和new1`zIn[11]:= z 看看现在z的值是Global的z值了In[12]:= $Context 当前上下文In[13]:= Remove[z] 清除变量zIn[14]:= z Global的z清除了,这时显示的z=9In[15]:= Remove[z] 再Remove就清除new1中的z了程序注释f::ussage="text..." 关于一个函数的说明(* 注释内容*) 出现在程序包的任何地方如If[x>y,(* then *)x,(* else *) y]和If[x>y,x,y]是一样的.输出Print[expr1,expr2,...] 在屏幕上输出expr1,expr2,...StringForm[string,expr1,expr2,...] 将string中成对的``依次用expr1,expr2,...代替. 若string中是`n`, n为整数, 则用第n个expr代替.如StringForm["`` is not ``.",x+1,y]输出x+1 is not y.Message[s::tag] 输出tagOff[s::tag] / On[s::tag] 屏蔽/打开tag信息In[1]:= f::"overflow"="Factorial argument `1` too large."In[2]:= f[x_]:=If[x>10,Message[f::"overflow",x];Infinity,x!]In[3]:= f[20] 输出错误信息In[4]:= Off[f::"overflow"] 屏蔽overflow信息In[5]:= f[20]表达式输出到文件expr >> file 把表达式的值写入新文件fileexpr >>> file 把表达式的值追加到file中!!file 显示文件输入Input[] 键盘输入完整表达式作为Input的返回值Input[提示] 显示提示,接受输入InputString[] 输入字符串Read[文件名,类型描述] 按类型描述读入文件,参看帮助。
Mathematic简单教程
Mathematic简单教程§1 初等代数1.有理式的运算1.多项式的展开(常用命令见表1.1)In[1]:= f=Expand[(x+y+3)^2]Out[1]:= 9+6x+x^2+6y+2xy+y^2In[2]:= Factor[f]Out[2]:= (3+x+y)^2In[3]:= Exponent[f,x]Out[3]:= 2In[4]:= Coefficient[f,x]Out[4]:= 6+2y2.有理式的运算(常用命令见表1.2)In[5]:= Factor[(x^3+2x+1)/(x^3+x^2+x+1)]Out[5]:= (1+2x+x^3)/(1+x)(1+x^2)In[6]:= Apart[%]In[6]:= 1-1/(1+x)+1/(1+x^2)3.多项式的代数运算(常用命令见表1.3)In[7]:=PolynomialQuotient[1+x^2,x+1,x]Out[7]:=-1+xIn[8]: =PolynomialGCD[x^2+2X+1,x^3+1,x^5+1]Out[8]:=1+x1.2 方程求解In[1]:=Solve[a*x+b==0,x]Out[1]={{x->-b/a}}In[2]:=Reduce[a*x+b==0,x]Out[2]= b==0&&a==0\\a≠0&&x==-b/aIn[3]: = FindRoot[Sin[x]==0,{x,3}]Out[3]= {x->3.14159}In[4]:= FindRoot[Sin[x]==0,{x,{6,6.5}}]Out[4]= {x->6.28319}In[5]:= FindRoot[{2^x+y^2==4,x^2+Sin[y]==1},{x,0},{y,0}]2微积分In[1]: = Limit[Sin[x]/x,x->0]Out[1]=1In[2]:=DI[Sin[n*x],x]Out[2]=nCos[nx]微积分的常用命令如表1.5所示,下面是一些例子。
Mathematics数学-附答案(1)
Mathematics数学-附答案(1)MathematicsAnswer all questions1.Given that 2x+y= 16 and In (2x–y) = ? In 5, find the value of x and of y, leaving youranswers in surd form. [8]X=(4+√5)/3 Y=(8-√5)/32.Given that A = {x:-5 < 2x-3 ≤ 15}, B = {x: -4 ≤ x + 1 < 7} andA UB = {x: a ≤ x -1≤ b}, find the value of a and of b. [5]a=-6 b=83.Functions f, g and h are defined byf:x→ 2 + xg:x→ -|x-1|h:x→ -x2 + 2(a)Find the values of gh(-2) and f-1gh(-2).-3and-1 [4](b)Find in similar form, gf, fg and gh. gf=-|x+1| fg=2-|x-1| gh=-|-x2+1|[3](c)Find the values of x such that fg(x) = -1 x=4 or x=-2[3](d)Show that hg(x) = 1 + 2x- x2. ∵hg(x)=h(-|x-1|)=-(-|x-1|)2+2=-(x-1)2+2=-x2+2x+1 [4]4.Three points have coordinates A(5, -3), B(-2,1) and C(a , 5).(a)Find, in terms of a, the coordinates of M, which is the midpoint of BC. [4]The midpoint of BC is ((a-2)/2,3)(b)Find the value of a for which AM is perpendicular to ABa=132/7. [6]5.Find the fifth and sixth terms of binomial expansion of ( 2- ? x2)9. Hence find thecoefficient of x10 in ( 2- ? x2 )9 (3x2+5 ) . 5th:(-19/3)9 6th:( -10) 9[8]6.Find the coordinates of the points of intersection of the line x + y = 3 and the curvex2– 2x +2y2= 3. [6] x=3, y=0 or x=3/5,y=12/57.Find the range of values of k for which the equation x2– 6x + k2– 7 = 0 has real roots. 36-4×1×(k2-7)≥0 the result is -4≤k≤4 [6] 8.Find all the angles between 0° and 360° inclusive which satisfysinxsec2x– 2tan x = 0 x=60°[6] 9. A body moves in a straight line so that its displacement, S m, from a point O at time tsec, is given by S = 5 + 15t2– 5t3.Find(a)The time when the body is instantaneously at rest, [4](b)The acceleration when t = 4, Answer:75[3](c)The total distance moved by the body in 9 seconds, [6](d)The average speed of the moving body. [4]10.A semicircle of centre O and radius 10 cm has diameter AB. The chord AQ is10 cm and the ratio of arc AP to arc AQ is 2 : 3.(a)Show that ∠AOP is 2?9 π radians.∵AO=QO=AQ=10 cm ∴∠AOQ=60° and∵the ratio of arc AP to arc AQ is2 : 3. ∴∠AOP=40°(40°/360°)×2л=2л/9[6](b)Calculate the area of segment AQP. the area of segment AQP is (50л/3)-25√3 [4]11.If x2– 2x– 3 is a factor of the expression x4+ px3+ qx– 81, find the value of p and of q. With these of p and q, factorize the expression completely. [10] 数学回答以下所有问题1.已知2x+y和ln(2x-y)= ? In 5 求x和y的值,保留根号。
Mathematica简易教程(练习解答).docx
Mathemat i ca 简易教程习题及解答2.7练习题1、定义函数/(龙)=* +缶+COS3 ,求当X = 1,3.1, 5时,/(①)的值,再求/(^2)0ln[5]:= f [-x_] : = -x A 2 + 1 / (-x + 1) + Cos [-x]f [{1, 3.1, Pi / 2, x A 2}] // TraditionalForm0 ut[6]//T ra ditionalFc rm=+cos(l), 8.85477, 求当^ = -100,1.5,2,3,100时,丁(⑦)的值(要 求具有40位有效数值)。
ln[11]:= f :=E A J ^/;-K <0£ [乞] :=Log [^] / ; 0 < -x Ef [乞] :=Sqrt [-x] / ; -x > EN[f [{- -100, 1・5, 2, 3, 100}] , 40]Out[1<= {10 000.8 52217 9 6213 66738330918375038 4 9332 43,2 ・72074,3・ 91713 64 967 8 619094 63357 65103832571143567,8 ・2 60007503399554 54272 8 4272 052 687 38 697 606,10 000.8722198 6238 66939 35092 037 52 39 518 32 63}3、造一个九九乘法表,只要求以表格形式显示乘积结果。
Out[21]//TableFcrm=1 2 3 4 5 6 74 6 8 10 12 14 169 12 15 18 21 24 2716 20 24 28 32 3625 30 35 40 4536 42 48 5449 56 6364 7281 + COSl .V^ | :ln[21]:= Table [i ♦ j , {i, 1, 9}, (jz ±, 9}] / / TableForm X < 00 < T < e x > e1、求极限。
用Mathematica求偏导数与多元函数的极值练习参考解答
用Mathematica求偏导数与多元函数的极值练习参考解答§10 用Mathematica 求偏导数与多元函数的极值练习参考解答1 求下列函数的偏导数。
(1) 221y x z +=(2) xy e z = (3) zx x z x y u -+= (4) z xy u )(= 2 求下列函数的偏导数或导数。
(1) 设x e y xy arctg z ==),(,求dxdz 。
(2) 设),ln(xy x z =求y x z 23??,23xyz ?? (3) 设,23,,ln 2v u y v u x y x z -===求u z ??,vz ??。
(4) 设),(z y y x f u =,求z u ??,yu ??,x u ??。
(5) 设),,(yx xy y x f z +=,求xy xx x z z z ,,。
3 求下列方程所确定的隐函数的导数。
(1) 043322=-+y x y x ,求dx dy 。
(2) 02=+--z xy e z e ,求x z ??,yz ??。
(3) ),,(xyz z y x f z ++=求x z ??,y x ??,yz ??。
(4) ax y x a z y x =+=++222222,,求dx dy ,dx dz 。
4 求函数61065),(22++-+=y x y x y x f 的极值。
5 求函数22y x z -=,在}4|),{(22≤+y x y x 范围内的最大最小值。
练习参考解答1 求下列函数的偏导数。
(1) 221y x z += (2) xy e z = (3) zx x z x y u -+= (4) z xy u )(= 解 (1) In[1]:= D[1/Sqrt[x^2+y^2,x] In[2]:= D[1/Sqrt[x^2+y^2,y] Out[1]= 2/322)(y x x +- Out[2]= 2/322)(y x y +- (2) In[3]:= D[E^(x*y),x]In[4]:= D[E^(x*y),x]Out[3]= y e xyOut[4]= x e xy(3) In[5]:= D[y/x+z/x-x/z,x]In[6]:= D[y/x+z/x-x/z,y]In[7]:= D[y/x+z/x-x/z,z] Out[5]= 221z z z x y ---Out[6]= x1 Out[7]= 21zx x + (4) In[8]:= D[(x*y)^z,x]In[9]:= D[(x*y)^z,x]In[10]:= D[(x*y)^z,z]Out[8]= z xy y z +-1)(Out[9]= z xy x z +-1)(Out[10]= ][)(xy Log xy z2 求下列函数的偏导数或导数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Mathematica入门教程第1篇第1章MATHEMATICA概述 (3)1.1 M ATHEMATICA的启动与运行 (3)1.2 表达式的输入 (4)1.3 M ATHEMATICA的联机帮助系统 (6)第2章MATHEMATICA的基本量 (8)2.1 数据类型和常数 (8)2.2 变量 (10)2.3 函数 (11)2.4 表 (14)2.5 表达式 (17)2.6 常用的符号 (19)2.7 练习题 (19)第2篇第3章微积分的基本操作 (20)3.1 极限 (20)3.2 微分 (20)3.3 计算积分 (22)3.4 无穷级数 (24)3.5 练习题 (24)第4章微分方程的求解 (26)4.1 微分方程解 (26)4.2 微分方程的数值解 (26)4.3 练习题 (27)第3篇第5章MATHEMATICA的基本运算 (28)5.1 多项式的表示形式 (28)5.2 方程及其根的表示 (29)5.3 求和与求积 (32)5.4 练习题 (33)第6章函数作图 (35)6.1 基本的二维图形 (35)6.2 二维图形元素 (40)6.3 基本三维图形 (42)6.4 练习题 (46)第4篇第7章MATHEMATICA函数大全 (48)7.1 运算符和一些特殊符号,系统常数 (48)7.2 代数计算 (49)7.3 解方程 (50)7.4 微积分 (50)7.5 多项式函数 (51)7.6 随机函数 (52)7.7 数值函数 (52)7.8 表相关函数 (53)7.9 绘图函数 (54)7.10 流程控制 (57)第8章MATHEMATICA程序设计 (59)8.1 模块和块中的变量 (59)8.2 条件结构 (61)8.3 循环结构 (63)8.4 流程控制 (65)8.5 练习题 (67)--------------习题与答案在68页-------------------第1章Mathematica概述1.1 Mathematica的启动与运行Mathematica是美国Wolfram研究公司生产的一种数学分析型的软件,以符号计算见长,也具有高精度的数值计算功能和强大的图形功能。
假设在Windows环境下已安装好Mathematica7.0,启动Windows后,在“开始”菜单的“程序”中单击Wolfram Mathematica,就启动了Mathematica7.0,在屏幕上显示如图的Notebook 窗口,系统暂时取名“未命名-1”,直到用户保存时重新命名为止。
输入1+1,然后按下Shif+Enter键,这时系统开始计算并输出计算结果,并给输入和输出附上次序标识In[1]和Out[1],注意In[1]是计算后才出现的;再输入第二个表达式,要求系统将一个二项式展开,按Shift+Enter输出计算结果后,系统分别将其标识为In[2]和Out[2].如图在Mathematica的Notebook界面下,可以用这种交互方式完成各种运算,如函数作图,求极限、解方程等,也可以用它编写像C那样的结构化程序。
在Mathematica系统中定义了许多功能强大的函数,我们称之为内建函数(built-in function), 直接调用这些函数可以取到事半功倍的效果。
这些函数分为两类,一类是数学意义上的函数,如:绝对值函数Abs[x],正弦函数Sin[x],余弦函数Cos[x],以e为底的对数函数Log[x],以a为底的对数函数Log[a,x]等;第二类是命令意义上的函数,如作函数图形的函数Plot[f[x],{x,xmin,xmax}],解方程函数Solve[eqn,x],求导函数D[f[x],x]等。
Mathematica 严格区分大小写,一般地,内建函数的首写字母必须大写,有时一个函数名是由几个单词构成,则每个单词的首写字母也必须大写,如:求局部极小值函数FindMinimum[f[x],{x,x0]等。
第二点要注意的是,在Mathematica中,函数名和自变量之间的分隔符是用方括号“[ ]”,而不是一般数学书上用的圆括号“()”,初学者很容易犯这类错误。
如果输入了不合语法规则的表达式,系统会显示出错信息,并且不给出计算结果,例如:要画正弦函数在区间[-10,10]上的图形,输入plot[Sin[x],{x,-10,10}],则系统提示“可能有拼写错误,新符号‘plot’ 很像已经存在的符号‘Plot’”,实际上,系统作图命令“Plot”第一个字母必须大写,一般地,系统内建函数首写字母都要大写。
再输入Plot[Sin[x],{x,-10,10} ,系统又提示缺少右方括号,并且将不配对的括号用蓝色显示,如图一个表达式只有准确无误,方能得出正确结果。
学会看系统出错信息能帮助我们较快找出错误,提高工作效率。
完成各种计算后,点击File->Exit退出,如果文件未存盘,系统提示用户存盘,文件名以“.nb”作为后缀,称为Notebook文件。
以后想使用本次保存的结果时可以通过File->Open菜单读入,也可以直接双击它,系统自动调用Mathematica将它打开。
1.2 表达式的输入Mathematica 提供了多种输入数学表达式的方法。
除了用键盘输入外,还可以使用工具面版或者快捷方式健入运算符、矩阵或数学表达式。
1、数学表达式二维格式的输入Mathematic提供了两种格式的数学表达式。
形如x/(2+3x)+y/(x-w)的称为一维格式,形的称为二维格式。
你可以使用快捷方式输入二维格式,也可用基本输入工具栏输入二维格式。
下面列出数学运算数学表达式依次按键分式x Ctrl+/ 2n 次方x Ctrl+^ n开n次方Ctrl+2 x Ctrl+5 n下标x Ctrl+_ 2如果要取消二维格式输入,按下Ctrl+SPACE(空格),例如输入数学表达式(x+1) Ctrl+^ 4 + a Ctrl+_Ctrl+/Ctrl+2 2x+1Ctrl+5 2另外也可从“面板”菜单中激活“数学”工具栏,也可输入,并且使用工具栏可输入更复杂的数学表达式。
2、特殊字符的输入MathemMatica 还提供了用以输入各种特殊符号的工具样。
基本输入工具样包含了常用的特殊字符(上图),只要单击这些字符按钮即可输入。
若要输入其它的特殊字符或运算符号,必须使用从“插入”菜单中选取“特殊字符”工具栏,如上图(右),单击符号后即可输入。
1.3 Mathematica的联机帮助系统用Mathematica的过程中,常常需要了解一个命令的详细用法,或者想知道系统中是否有完成某一计算的命令,联机帮助系统永远是最详细、最方便的资料库。
1、获取函数和命令的帮助在笔记本界面下,用?或?? 可向系统查询运算符、函数和命令的定义和用法,获取简单而直接的帮助信息。
例如,向系统查询作图函数Plot命令的用法?Plot ,系统将给出调用Plot的格式以及Plot命令的功能(如果用两个问号“??”,则信息会更详细一些)。
也可以使用通配符“*”,? Plot* 给出所有以Plot这四个字母开头的命令。
2、帮助菜单任何时候都可以通过按F1键或点击帮助菜单项“参考资料中心”,调出帮助菜单,如图所示。
该文档全面整合的文件中心容纳几千个详细举例、动画、辅导课程和其它资料。
这些都被翻译成中文,帮助您使用 Mathematica。
如果要查找Mathematica中具有某个功能的函数,可以通过帮助菜单中的“函数浏览器”,通过其目录索引可以快速定位到自己要找的帮助信息。
例如:需要查找Mathematica 中有关解方程的命令,单击“数学和算法”——>“方程求解”按钮,在目录中找到有关解方程的节次,点击相应的超链接,有关内容的详细说明就马上调出来了(如图所示)。
如果知道具体的函数名,但不知其详细使用说明,可以在“参考资料中心”的“搜寻”的文本框中键入函数名,按回车键后就显示有关函数的定义、例题和相关联的章节。
例如,要查找函数Plot的用法,只要在文本框中键入Plot,按回车键后显示如图的窗口,再点击“Plot”,则显示Plot函数的详细用法和例题。
3、在线帮助访问网址:/mathematica/guide/Mathematica.html 4、Mathematica4全书第四版中文版/v4-zh/TheMathematicaBook/第2章Mathematica的基本量2.1 数据类型和常数1、数值类型在Mathematic中,基本的数值类型有四种:整数,有理数、实数和复数。
如果你的计算机的内存足够大,Mathemateic可以表示任意长度的精确实数,而不受所用的计算机字长的影响。
整数与整数的计算结果仍是精确的整数或是有理数。
例如:2的100次方是一个31位的整数:在Mathematica中允许使用分数,也就是用有理数表示化简过的分数。
当两个整数相除而又不能整除时,系统就用有理数来表示,即有理数是由两个整数的比来组成。
如:实数是用浮点数表示的,Mathematica实数的有效位可取任意位数,是一种具有任意精确度的近似实数,当然在计算的时候也可以控制实数的精度。
实数有两种表示方法:一种是小数点,另外一种是用指数方法表示的。
如:实数也可以与整数,有理数进行混合运算,结果还是一个实数。
复数是由实部和虚部组成。
实部和虚部可以用整数,实数,有理数表示。
在Mathematica 中,用I 表示虚数单位。
如:2、不同类型数的转换在Mathematica的不同应用中,通常对数字的类型要求是不同的。
例如在公式推导中的数字常用整数或有理数表示,而在数值计算中的数字常用实数表示。
在一般情况下在输出行Out[n]中,系统根据输入行ln[n]的数字类型对计算结果做出相应的处理。
如果有一些特殊的要求,就要进行数据类型转换。
在Mathematica中的提供以下几个函数达到转换的目的:N[x] 将x转换成实数N[x,n] 将x转换成近似实数,精度为nRationalize[x] 给出x的有理数近似值Rationalize[x,dx] 给出x的有理数近似值,误差小于dx 举例第二个输出是把上面计算的结果变为10位精度的数字。
%表示上一输出结果。
3、数学常数Mathematica 中定义了一些常见的数学常数,这些数学常数都是精确数。
Pi 表示圆周率π=3.14159……E 指数常数,e=2.71828…….Degree(°)π/180 给出一度的弧度I 虚数单位,Infinity 无穷大-Infinity 负的无穷大-GoldenRatio 黄金比1.61803数学常数可用在公式推导和数值计算中。
在数值计算中表示精确值。