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研究公司生产的一种数学分析型的软件,以符号计算见长,也具有高精度的数值计算功能和强大的图形功能。

60Mathematica数值计算

60Mathematica数值计算

第六章数值计算命令与例题数值问题由一组已知数据来求出一组结果数据,使得这两组数据之间满足预先制定的某种关系的问题,数值计算就是通过对数学问题解有效的近似处理去获得比较满意解的计算方法。

这里只介绍与数值计算中最基本方法的一些命令与例题。

6.1求近似函数在生产和实验中, 人们经常遇到需要通过某个未知(或复杂)的函数f(x)在有限个给定点的函数值:{x i, y i}, i=1,2,…., n, 这里f(x i) = y i 去获得函数f(x)的近似函数ϕ(x), 以便于处理涉及到f(x)的计算或其他处理问题, 这种求近似函数ϕ(x)的方法主要有拟合方法和插值方法。

一般, 曲线拟合是常用的拟合方法, 而插值方法常用的有多项式插值与分段插值方法, 在Mathematica 中它们都有相应的命令来获得相应的近似函数。

6.1.1 曲线拟合曲线拟合主要用来求一元近似函数, 它是根据一组函数值(通常是测量值或试验数据)去寻找描述相应函数关系的一种常用数据逼近方法, 是根据最小二乘原理的意义下获得近似函数的, 此近似函数具有在数据点处的误差平方和最小的特点。

通过拟合得到的函数关系通常称为经验公式, 该函数不必经过任何的数据点, 是实际函数的一种近似函数。

曲线拟合结果的好坏与选用什么类型的函数作为拟和曲线类型有关。

记函数集合:M=Span[ϕ0, ϕ1, ϕ2,…, ϕm]={ ϕ(x)| ϕ(x)= a 0 ϕ0(x)+a1ϕ1(x)+…+a mϕm(x), a i∈R}称集合M为函数ϕ0, ϕ1, ϕ2,…, ϕm张成的空间,m+1个函数ϕ0(x), ϕ1(x), ϕ2(x),…, ϕm(x)称为拟合基函数集合, 它们都是已知的函数。

拟合基函数集合不同对应不同的拟合函数类, 如果要用曲线拟合方法得到经验公式, 通常是先画出所给数据的散点图, 再根据散点图选择合适的拟和函数类型做曲线拟合。

应该注意的是:选择不同的拟合函数类会得到不同的拟合函数,拟合函数的好坏依赖于所选的拟合函数类,如果你知道的曲线类型多, 就容易获得满意的拟合函数。

(完整word版)Mathematica习题

(完整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 是一个敏感的软件. 所有的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求函数极值

利用Mathematica求函数极值
2 1 2
4
x 2 3 y 2 9x (2)求函数 f ( x, y) x 3 y 3 3的最值 解 自定义函数 f[x_,y_]:=x^3-y^3+3*x^2+3*y^2-9*x; 求驻点 Solve[{D[f[x,y],x]==0,D[f[x,y],y]==0}] \输出结果为{{x->-3,y->0},{x->-3,y->2},{x>1,y->0},{x->1,y->2}} 比较各点函数值 f[x,y]/.% \输出结果为 {27,31, -5,-1} 可求得最值为31
边学边做: (一)用命令FindMinimum求极小值: FindMinimum[f[x],{x,x0}] FindMinimum[f[x,y],{x,x0},{y,y0}] (1)先作图,观察之后求函数 f ( x) x 4 在 2 x 2 [-3,3] 内的极值 3x 2 y 3 (2)作图之后求函数 f ( x, y) x 2 y 2 xy 的极值 (二)用求驻点的方法求函数极值 (1)求函数 的极值 4( x 1)
处 有极值,求此极值,并说明是极大值还是极小 值. 3 2 f ( x ) ax bx cx d 在x=-1处有极大 (2)若函数 值为8,在x=2处有极小值为-19,求a,b,c,d. (3)把一根直径为d的圆木锯成截面为矩形的梁, 问矩形截面高h与宽b如何选择时,才能使梁 1 2 W bh 达到最大? 的抗弯截面系数 6 (4)求表面积为a2且体积最大的长方体体积.
f ( x)
(2)求函数
x2 1
f ( x, y) x 3 y 3 3x 2 3 y 2 9x
的最值

mathematica典型例子(非常实用)

mathematica典型例子(非常实用)

printf("\n");
}
puts("The solve is:\n");
for(i=1;i<=n;i++)
//输出方程的解
printf("x[%2d] = %lf\n",i,a[i][n+1]);
}
//======== gauss.txt 中的数据 ==========================
1、 利用Lagrange插值公式
Ln (x)

n k 0
n j0 jk
x xi xk xi
yk
编写出插值多项式程序;
2、 给出插值多项式或分段线性插值多项式的表达式;
3、 对此插值问题用Newton插值多项式其结果如何。Newton插值多项式如下:
Nn (x) f (x0) f [x0, x1](x x0) f [x0, x1, x2 ](x x0 )(x x1) ... f [x0, x1,..., xn](x x0 )(x x1)...(x xn 1),
求五次Lagrange多项式 L5 (x) ,和分段线性插值多项式,计算 f (5.96), f (5.99)
(2)
xi 1
2
3
4
5
6
7
yi 0.368 0.135 0.050 0.018 0.007 0.002 0.001
试构造Lagrange多项式 L6 (x) ,计算 f (1.8) 的值。
二、要求
}
printf("The variable x is not in the region [x0, xn]"); return 0; }

Mathematica的所有画图函数或命令进行总结和分类及部分习题

Mathematica的所有画图函数或命令进行总结和分类及部分习题

一、对Mathematica的所有画图函数或命令进行总结和分类(对它的一些重要可选项进行说明),并画出一些有趣的图形我们首先可以把Mathematica的画图函数做如下分类:有趣的图形:1、2、三、(1) 这是一个兔子繁殖的模型,一对子兔一个月后成为一对成兔,而成年兔每个月能繁殖一对子兔,这样下去,每个月统计一下成年兔的数目,有如下的关系:月份: 1 2 3 4 5 6 7 8 …… Fn : 1 1 2 3 5 8 13 21 …… 不难看出:2121;1;1--+===n n n F F F F F 。

这就是著名的裴波那奇数列。

通过数学软件编程,请问第40年、80年有多少成年兔?你能给出几种求裴波那奇数列通项的方法。

满足21--+=n n n F F F 的数列完全由前两项决定,既由向量),(21F F 决定,能否利用线性代数中的子空间和向量线性表示的理论给出它的通项的一种求法。

(2)雌鸟每年只育一只小雌鸟,次年各自又育一只雌鸟,每鸟只能育十次。

请问第30年、100年有多少雌鸟?你能求出第n 年有多少雌鸟吗(通项)?(设鸟都不死)解:(1)、第40年的成年兔: 第80念得成年兔:求斐波那契数列通项的方法: 方法一、(向量线性表示)已知数列: A 0=a ,A 1=b , F[n+1]=c*F[n]+d*F[n-1] (a=b=c=d1时就是斐波那契数列) 求F[n]的表达式解:这个数列经过整理后可得一个F[n]与F[n-1]的线性组合,即A*F[n]+B*F[n-1]是一个等比数列的形式 令 F[n+1]- k F[n]=p(F[n] - k F[n-1])————————————————————-(1)这样 如果令B[n+1]=F[n+1] – k F[n],则B[n](n=1, to n) 是一个等比数列。

(1)=> F[n+1]= p F[n]+k F[n] –pk F[n-1]和 F[n+1]=c*F[n]+d*F[n-1] 比较,可知有 p+k=c ,pk=-d 这样知道 p 和 k 是 x^2 - cx -d=0 的两个根。

mathematica典型例子(非常实用)

mathematica典型例子(非常实用)

k
f [x0, x1,..., xk ]
f (xi )
k
,
i0 (xi x j )
j0
ji
三、目的和意义 1、 学会常用的插值方法,求函数的近似表达式,以解决其它实际问题; 2、 明确插值多项式和分段插值多项式各自的优缺点; 3、 熟悉插值方法的程序编制; 4、 如果绘出插值函数的曲线,观察其光滑性。
a[label][j]=temp;
}
}
//==========================================
for (j=k+1;j<=n+1;j++) a[k][j]=a[k][j]/a[k][k]; a[k][k]=1.0; i=1; for(i=k+1;i<=n;i++) {
for (j=k+1;j<=n+1;j++) a[i][j]=a[i][j]-a[i][k]*a[k][j];
a[i][k]=0.0; } k++; if(k==n) {
a[k][k+1] /= a[k][k]; a[k][k] = 1.0; break; } }while(1); // 消元结束
// 消元
iputsthesolvechasetxt中的数据113111211141141作业三最小二乘法一问题提出从随机的数据中找出其规律性给出其近似表达式的问题在生产实践和科学实验中大量存在通常利用数据的最小二乘法求得拟合曲线
作业一 函数插值方法
一、问题提出
对于给定的一元函数 y f (x) 的 n 1个节点值 yi f (xi ) 。试用Lagrange公式

数学物理问题的 Mathematica 求解

数学物理问题的 Mathematica 求解
注意现在通解中有 C[1]和 C[2]二个任意函数,由于 Mathematica 不知道参数 a 的性质,因而未
对 a2 进行化简。设 a>0,写成习惯的形式为
u(x,t) = C1(x − at) + C2 (x + at)
按照方程的要求,这两个任意函数都应该存在二阶偏导数。
我们也可以用 DSolve 来求拉普拉斯方程 uxx + uyy = 0 的通解,命令语句为
Table[ Plot [Evaluate[u[x,t]/.First[%]],{t,0,0.3},PlotRange->{0,0.25}],{x,0.1,0.9,0.4}]
输出的结果为
x= 0.25
0.2
0.15
0.1
0.05
0.25 0.2
0.15 0.1
0.05
0.05 0.1 0.15 0.2 0.25 0.3 x=
DSolveB:uH2,0L@t, xD uH0,2L@t, xD, u@0, xD −x2, uH1,0L@0, xD 2 −x2 x>, u@t, xD, 8t, x<F
Mathematica 也是把输入的 uyy = y=0 = 2x
∫ ut
=
a2uxx 虽然存在形式上的通解 u(x, t)
=
1 2a πt

− ( x−s)2
ϕ(s)e 4at ds ,但是用 DSolve 命令
−∞
DSolve[D[u[t,x],t] a^2 D[u[t,x],x,x],u[t,x],{t,x}] 得到的结果为
DSolve@uH1,0L@t, xD a2 uH0,2L@t, xD, u@t, xD, 8t, x<D

Mathematical用法 大全 实用版

Mathematical用法 大全 实用版
In[4]:=a[[2]](a的第2行);In[5]:=Tanspose[a][[2]](a的第2列);
In[6]:=Inverse[a](求a的逆矩阵);In[7]:=Det[a](矩阵的行列式);
In[8]:=Eigenvalues[a](求特征值);In[9]:=Eigenvectors[a](求特征向量);
设置默认工作文件夹:In[1]:=SetDirectory["D:\MODEL"]
读数据文件:先建立数据文件lianxi.txt,其中的数据用空格分隔。
In[1]:=d=ReadList[“lianxi.txt”,Table[Number,{2}]] (读到矩阵d中)
注:可用“File”菜单中的“Save”命令保存所有的输入和输出。
2.解方程:In[1]:=Solve[x^2+3*x = = 2];In[2]:=N[%];
In[3]:=Solve[a*x-b= = 0, x];
In[4]:=NSolve[{x-2*y= =0,x^2-y= =1},{x,y}](解方程组并得到数值解)
3.自定义函数:In[1]:= f [x_ ]:=x^2+2*x;In[2]:=f[5]+7;In[3]:=f[a+b]
In[10]:=RowReduce[a](把a化为阶梯形,可用于求矩阵的秩、判断线性相关性);In[11]:= b ={{5,6,7},{8,9,10}};In[12]:= a.b(矩阵a与b的乘积)
10.解线性方程组:
In[1]:= a ={{3,4,5,6},{6,8,10,12},{4,5,6,7},{5,6,7,8}};(a的秩为2)
11.求和:In[1]:=NSum[Sin[n]/n^3,{n,1,Infinity}](求级数 的和)

30Mathematica基本代数运算l

30Mathematica基本代数运算l

第三章初等代数运算命令与例题3.1多项式运算多项式是我们最熟悉的简单表达式,n 次一元多项式的一般形式为:P n(x) =a 0 +a1x+ a2x 2 +…+a n x n在Mathematica 中, 有关表达式的任何运算都可以应用到多项式中,特别,多项式的加减乘除四则运算只要用Mathematica 中的加减乘除号来连接两个多项式即可, 如:数学形式Mathematica 输入形式多项式相加(3+x 2) + (1-2x5 ) (3+x^2)+(1-2*x^5)多项式相减(3+x 2) - (1-2x5 ) (3+x^2)-(1-2*x^5)多项式相乘(3+x 2)(1-2x5 ) (3+x^2)*(1-2*x^5)多项式相除(3+x 2) ÷ (1-2x5 ) (3+x^2)/(1-2*x^5)上述多项式的运算只有多项式的加减可以计算外,多项式的乘除实际上不进行真正的运算,而只是以乘积或有理分式的形式表出,要想真正产生运算需用Mathematica 提供的多项式展开命令。

Mathematica 提供还提供了多项式因式分解,提取多项式幂次和系数等处理多项式的一些函数,下面列举其中的常用函数及功能:Mathematica 函数形式功能1) Expand[多项式] 把多项式按升幂展开2) Factor[多项式] 对多项式进行因式分解3) Collect[多项式,x] 把多项式按x的同次幂合并形式展开4) Simplify[多项式] 把多项式写成项数最小的形式5) Exponent[多项式, x] 取出多项式中x的最高幂数6) Coefficient[多项式,form] 取出多项式中form的系数7) Part[多项式, n] 取出多项式的第n项8) Length[多项式] 给出多项式的项数9) PolynomialQuotient[p,q, x] 计算p÷q的商,这里p,q是关于x的多项式10) PolynomialRemainder[p,q, x] 计算p÷q的余式,这里p,q是关于x的多项式11) PolynomialGCD[p,q, …] 求多项式p,q,…的最大公因子12) PolynomialGCD[p,q, …] 求多项式p,q,…的最小公倍数注:函数中的多项式可以是多元多项式,通常可以把多项式存放在一个变量中(用赋值语句),这样该变量就代表存入的多项式,使处理多项式更简单。

Mathematica课程作业

Mathematica课程作业

数学实验作业(Mathematica 部分)
学院:农学院 专业:农学 班级:101班 姓名:███ 学号:█ 时间:2013/6/26
在Mathematica 环境下完成下列题目的求解。

1.求表达式5330cos 2的近似数值。

2.定义函数x x f =2)(2,分别求出f(-5),f(4),f(8)的值。

3.学习Limit 函数计算x x 2sin lim 0→。

4.学习Derivative 函数或D 函数计算2
3cos )(x x x f +=的导数。

x
6.在同一坐标系中画出两个函数1,2cos 2-==x y x y 的图形,自变量范围为:-2≤ x ≤ 2,且函数y = cos 2x 为绿色实线, 线粗0.01, 函数12-=x y 为红色虚线,并对坐标轴标注上x 和y ,对图形加标题“函数绘制练
⎰1
8.求dx
9.求)0(
22>-a dx x a a
(在Integrate 中使用参数Assumptions 来假定a>0)
10.计算⎰⎰
dxdy x
y ,其中D 是由xy=2,y=1+x^2,x=2所围成的区域。

11.计算⎰⎰--dxdy y x )1(22,其中D 是单位圆围成的闭区域。

(两种方法)
12.求⎰⎰⎰++dxdydz z y x )(22的三重积分,其中Ω为锥面222z y x =+及平面2=z 所围成的区域。

mathematica命令大全

mathematica命令大全

楼主大中小发表于 2005-11-20 21:55 只看该作者[分享]mathematica命令大全Mathematica函数大全一、运算符及特殊符号Line1; 执行Line,不显示结果Line1,line2 顺次执行Line1,2,并显示结果?name 关于系统变量name的信息??name 关于系统变量name的全部信息!command 执行Dos命令n! N的阶乘!!filename 显示文件内容Expr>> filename 打开文件写Expr>>>filename 打开文件从文件末写() 结合率[] 函数{} 一个表<*Math Fun*> 在c语言中使用math的函数(*Note*) 程序的注释#n 第n个参数## 所有参数rule& 把rule作用于后面的式子% 前一次的输出%% 倒数第二次的输出%n 第n个输出var::note 变量var的注释"Astring " 字符串Context ` 上下文a+b 加a-b 减a*b或a b 乘a/b 除a^b 乘方base^^num 以base为进位的数lhs&&rhs 且lhs||rhs 或!lha 非++,-- 自加1,自减1+=,-=,*=,/= 同C语言>,<,>=,<=,==,!= 逻辑判断(同c)lhs=rhs 立即赋值lhs:=rhs 建立动态赋值lhs:>rhs 建立替换规则lhs->rhs 建立替换规则expr//funname 相当于filename[expr]expr/.rule 将规则rule应用于exprexpr//.rule 将规则rule不断应用于expr知道不变为止param_ 名为param的一个任意表达式(形式变量)param__ 名为param的任意多个任意表达式(形式变量)二、系统常数Pi 3.1415....的无限精度数值E 2.17828...的无限精度数值Catalan 0.915966..卡塔兰常数EulerGamma 0.5772....高斯常数GoldenRatio 1.61803...黄金分割数Degree Pi/180角度弧度换算I 复数单位Infinity 无穷大-Infinity 负无穷大ComplexInfinity 复无穷大Indeterminate 不定式三、代数计算Expand[expr] 展开表达式Factor[expr] 展开表达式Simplify[expr] 化简表达式FullSimplify[expr] 将特殊函数等也进行化简PowerExpand[expr] 展开所有的幂次形式ComplexExpand[expr,{x1,x2...}] 按复数实部虚部展开FunctionExpand[expr] 化简expr中的特殊函数Collect[expr, x] 合并同次项Collect[expr, {x1,x2,...}] 合并x1,x2,...的同次项Together[expr] 通分Apart[expr] 部分分式展开Apart[expr, var] 对var的部分分式展开Cancel[expr] 约分ExpandAll[expr] 展开表达式ExpandAll[expr, patt] 展开表达式FactorTerms[poly] 提出共有的数字因子FactorTerms[poly, x] 提出与x无关的数字因子FactorTerms[poly, {x1,x2...}] 提出与xi无关的数字因子Coefficient[expr, form] 多项式expr中form的系数Coefficient[expr, form, n] 多项式expr中form^n的系数Exponent[expr, form] 表达式expr中form的最高指数Numerator[expr] 表达式expr的分子Denominator[expr] 表达式expr的分母ExpandNumerator[expr] 展开expr的分子部分ExpandDenominator[expr] 展开expr的分母部分ExpandDenominator[expr] 展开expr的分母部分TrigExpand[expr] 展开表达式中的三角函数TrigFactor[expr] 给出表达式中的三角函数因子TrigFactorList[expr] 给出表达式中的三角函数因子的表TrigReduce[expr] 对表达式中的三角函数化简TrigToExp[expr] 三角到指数的转化ExpToTrig[expr] 指数到三角的转化RootReduce[expr]ToRadicals[expr]搜索更多相关主题的帖子: mathematica大全命令name变量TOP沙发大中小发表于 2005-11-20 21:58 只看该作者回复:(ABBYABBIE)[分享]mathematica命令大全四、解方程Solve[eqns, vars] 从方程组eqns中解出vars Solve[eqns, vars, elims] 从方程组eqns中削去变量elims,解出vars DSolve[eqn, y, x] 解微分方程,其中y是x的函数DSolve[{eqn1,eqn2,...},{y1,y2...},x]解微分方程组,其中yi是x的函数DSolve[eqn, y, {x1,x2...}] 解偏微分方程Eliminate[eqns, vars] 把方程组eqns中变量vars约去SolveAlways[eqns, vars] 给出等式成立的所有参数满足的条件Reduce[eqns, vars] 化简并给出所有可能解的条件LogicalExpand[expr] 用&&和||将逻辑表达式展开InverseFunction[f] 求函数f的逆函数Root[f, k] 求多项式函数的第k个根Roots[lhs==rhs, var] 得到多项式方程的所有根五、微积分函数D[f, x] 求f[x]的微分D[f, {x, n}] 求f[x]的n阶微分D[f,x1,x2..] 求f[x]对x1,x2...偏微分Dt[f, x] 求f[x]的全微分df/dxDt[f] 求f[x]的全微分dfDt[f, {x, n}] n阶全微分df^n/dx^nDt[f,x1,x2..] 对x1,x2..的偏微分Integrate[f, x] f[x]对x在的不定积分Integrate[f, {x, xmin, xmax}] f[x]对x在区间(xmin,xmax)的定积分Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}] f[x,y]的二重积分Limit[expr, x->x0] x趋近于x0时expr的极限Residue[expr, {x,x0}] expr在x0处的留数Series[f, {x, x0, n}] 给出f[x]在x0处的幂级数展开Series[f, {x, x0,nx}, {y, y0, ny}]先对y幂级数展开,再对xNormal[expr] 化简并给出最常见的表达式SeriesCoefficient[series, n] 给出级数中第n次项的系数SeriesCoefficient[series, {n1,n2...}]'或Derivative[n1,n2...][f] 一阶导数InverseSeries[s, x] 给出逆函数的级数ComposeSeries[serie1,serie2...] 给出两个基数的组合SeriesData[x,x0,{a0,a1,..},nmin,nmax,den]表示一个在x0处x的幂级数,其中ai为系数O[x]^n n阶小量x^nO[x, x0]^n n阶小量(x-x0)^nDt[f, x] 求f[x]的全微分df/dxDt[f] 求f[x]的全微分dfDt[f, {x, n}] n阶全微分df^n/dx^nDt[f,x1,x2..] 对x1,x2..的偏微分Integrate[f, x] f[x]对x在的不定积分Integrate[f, {x, xmin, xmax}] f[x]对x在区间(xmin,xmax)的定积分Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}] f[x,y]的二重积分Limit[expr, x->x0] x趋近于x0时expr的极限Residue[expr, {x,x0}] expr在x0处的留数Series[f, {x, x0, n}] 给出f[x]在x0处的幂级数展开Series[f, {x, x0,nx}, {y, y0, ny}]先对y幂级数展开,再对xNormal[expr] 化简并给出最常见的表达式SeriesCoefficient[series, n] 给出级数中第n次项的系数SeriesCoefficient[series, {n1,n2...}] '或Derivative[n1,n2...][f] 一阶导数InverseSeries[s, x] 给出逆函数的级数ComposeSeries[serie1,serie2...] 给出两个基数的组合SeriesData[x,x0,{a0,a1,..},nmin,nmax,den]表示一个在x0处x的幂级数,其中aiO[x]^n n阶小量x^nO[x, x0]^n n阶小量(x-x0)^n六、多项式函数Variables[poly] 给出多项式poly中独立变量的列表CoefficientList[poly, var] 给出多项式poly中变量var的系数CoefficientList[poly, {var1,var2...}]给出多项式poly中变量var(i)的系数列?PolynomialMod[poly, m] poly中各系数mod m同余后得到的多项式,m可为整式PolynomialQuotient[p, q, x] 以x为自变量的两个多项式之商式p/qPolynomialRemainder[p, q, x] 以x为自变量的两个多项式之余式PolynomialGCD[poly1,poly2,...] poly(i)的最大公因式PolynomialLCM[poly1,poly2,...] poly(i)的最小公倍式PolynomialReduce[poly, {poly1,poly2,...},{x1,x2...}]得到一个表{{a1,a2,...},b}其中Sum[ai*polyi]+b=polyResultant[poly1,poly2,var] 约去poly1,poly2中的varFactor[poly] 因式分解(在整式范围内)FactorTerms[poly] 提出poly中的数字公因子FactorTerms[poly, {x1,x2...}] 提出poly中与xi无关项的数字公因子FactorList[poly]给出poly各个因子及其指数{{poly1,exp1},{...}...}FactorSquareFreeList[poly]FactorTermsList[poly,{x1,x2...}] 给出各个因式列表,第一项是数字公因子,第二项是与xi无关的因式,其后是与xi有关的因式按升幂的排排?Cyclotomic[n, x] n阶柱函数Decompose[poly, x] 迭代分解,给出{p1,p2,...},其中p1(p2(...))=poly InterpolatingPolynomial[data, var] 在数据data上的插值多项式data可以写为{f1,f2..}相当于{{x1=1,y1=f1}..}data可以写为{{x1,f1,df11,df12,..},{x2,f2,df21..}可以指定数据点上的n阶导数值RootSum[f, form] 得到f[x]=0的所有根,并求得Sum[form[xi]]七、随机函数Random[type,range] 产生type类型且在range范围内的均匀分布随机数type可以为Integer,Real,Complex,不写默认为Realrange为{min,max},不写默认为{0,1}Random[] 0~1上的随机实数SeedRandom[n] 以n为seed产生伪随机数如果采用了 <在2.0版本为 <<"D:\\Math\\PACKAGES\\STATISTI\\Continuo.m"Random[distribution]可以产生各种分布如Random[BetaDistribution[alpha, beta]]stribution[alpha, beta]]Random[NormalDistribution[miu,sigma]]等常用的分布如BetaDistribution,CauchyDistribution,ChiDistribution, NoncentralChiSquareDistribution,ExponentialDistribution,ExtremeValueDistribution,NoncentralFRatioDistribution, GammaDistribution,HalfNormalDistribution, LaplaceDistribution, LogNormalDistribution,LogisticDistribution, RayleighDistribution,NoncentralStudentTDistribution,UniformDistribution, WeibullDistribution八、数值函数N[expr] 表达式的机器精度近似值N[expr, n] 表达式的n位近似值,n为任意正整数NSolve[lhs==rhs, var] 求方程数值解NSolve[eqn, var, n] 求方程数值解,结果精度到n位NDSolve[eqns, y, {x, xmin, xmax}]微分方程数值解NDSolve[eqns, {y1,y2,...}, {x, xmin, xmax}]微分方程组数值解FindRoot[lhs==rhs, {x,x0}] 以x0为初值,寻找方程数值解FindRoot[lhs==rhs, {x, xstart, xmin, xmax}]NSum[f, {i,imin,imax,di}] 数值求和,di为步长NSum[f, {i,imin,imax,di}, {j,..},..] 多维函数求和NProduct[f, {i, imin, imax, di}]函数求积NIntegrate[f, {x, xmin, xmax}] 函数数值积分优化函数:FindMinimum[f, {x,x0}] 以x0为初值,寻找函数最小值FindMinimum[f, {x, xstart, xmin, xmax}]ConstrainedMin[f,{inequ},{x,y,..}]inequ为线性不等式组,f为x,y..之线性函数,得到最小值及此时的x,y..取值ConstrainedMax[f, {inequ}, {x, y,..}]同上LinearProgramming[c,m,b] 解线性组合c.x在m.x>=b&&x>=0约束下的最小值,x,b,c为向量,m为矩阵LatticeReduce[{v1,v2...}] 向量组vi的极小无关组数据处理:Fit[data,funs,vars]用指定函数组对数据进行最小二乘拟和data可以为{{x1,y1,..f1},{x2,y2,..f2}..}多维的情况emp: Fit[{10.22,12,3.2,9.9}, {1, x, x^2,Sin[x]}, x]Interpolation[data]对数据进行差值,data同上,另外还可以为{{x1,{f1,df11,df12}},{x2,{f2,.}..}指定各阶导数InterpolationOrder默认为3次,可修改ListInterpolation[array]对离散数据插值,array可为n维ListInterpolation[array,{{xmin,xmax},{ymin,ymax},..}] FunctionInterpolation[expr,{x,xmin,xmax}, {y,ymin,ymax},..]以对应expr[xi,yi]的为数据进行插值Fourier对复数数据进行付氏变换InverseFourier对复数数据进行付氏逆变换Min[{x1,x2...},{y1,y2,...}]得到每个表中的最小值变换Min[{x1,x2...},{y1,y2,...}]得到每个表中的最小值Max[{x1,x2...},{y1,y2,...}]得到每个表中的最大值Select[list, crit] 将表中使得crit为True的元素选择出来Count[list, pattern] 将表中匹配模式pattern的元素的个数Sort将表中元素按升序排列Sort[list,p] 将表中元素按p[e1,e2]为True的顺序比较list的任两个元素e1,e2,实际上Sort中默认p=Greater集合论:Union[list1,list2..] 表listi的并集并排序Intersection[list1,list2..] 表listi的交集并排序Complement[listall,list1,list2...]从全集listall中对listi的差集九、虚数函数Re[expr] 复数表达式的实部Im[expr] 复数表达式的虚部Abs[expr] 复数表达式的模Arg[expr] 复数表达式的辐角Conjugate[expr] 复数表达式的共轭十、数的头及模式及其他操作复制内容到剪贴板Integer _Integer 整数Real _Real 实数Complex _Complex 复数Rational_Rational 有理数(*注:模式用在函数参数传递中,如MyFun[Para1_Integer,Para2_Real] 规定传入参数的类型,另外也可用来判断If[Head[a]==Real,...]*) IntegerDigits[n,b,len] 数字n以b近制的前len个码元RealDigits[x,b,len] 类上FromDigits[list] IntegerDigits的反函数Rationalize[x,dx] 把实数x有理化成有理数,误差小于dxChop[expr, delta] 将expr中小于delta的部分去掉,dx默认为10^-10 Accuracy[x] 给出x小数部分位数,对于Pi,E等为无限大Precision[x] 给出x有效数字位数,对于Pi,E等为无限大SetAccuracy[expr, n] 设置expr显示时的小数部分位数SetPrecision[expr, n] 设置expr显示时的有效数字位数十一、区间函数Interval[{min, max}] 区间[min, max](* Solve[3x+2==Interval[{-2,5}],xx]*)IntervalMemberQ[interval, x] x在区间内吗?IntervalMemberQ[interval1,interval2] 区间2在区间1内吗?IntervalUnion[intv1,intv2...] 区间的并IntervalIntersection[intv1,intv2...] 区间的交十二、矩阵操作a.b.c 或 Dot[a, b, c] 矩阵、向量、张量的点积Inverse[m] 矩阵的逆Transpose[list] 矩阵的转置Transpose[list,{n1,n2..}]将矩阵list 第k行与第nk列交换Det[m] 矩阵的行列式Eigenvalues[m] 特征值Eigenvectors[m] 特征向量特征值Eigenvectors[m] 特征向量Eigensystem[m] 特征系统,返回{eigvalues,eigvectors}LinearSolve[m, b] 解线性方程组m.x==bNullSpace[m] 矩阵m的零空间,即m.NullSpace[m]==零向量RowReduce[m] m化简为阶梯矩阵Minors[m, k] m的所有k*k阶子矩阵的行列式的值(伴随阵,好像是)MatrixPower[mat, n] 阵mat自乘n次Outer[f,list1,list2..] listi中各个元之间相互组合,并作为f的参数的到的矩矩?Outer[Times,list1,list2]给出矩阵的外积SingularValues[m] m的奇异值,结果为{u,w,v},m=Conjugate[Transpose[u]].DiagonalMatrix[w].vPseudoInverse[m] m的广义逆QRDecomposition[m] QR分解SchurDecomposition[m] Schur分解LUDecomposition[m] LU分解十三、表函数(*“表”,我认为是Mathematica中最灵活的一种数据类型 *) (*实际上表就是表达式,表达式也就是表,所以下面list==expr *)(*一个表中元素的位置可以用于一个表来表示 *)表的生成{e1,e2,...} 一个表,元素可以为任意表达式,无穷嵌套Table[expr,{imax}] 生成一个表,共imax个元素Table[expr,{i, imax}] 生成一个表,共imax个元素expr[i]Table[expr,{i,imin,imax},{j,jmin,jmax},..] 多维表Range[imax] 简单数表{1,2,..,imax}Range[imin, imax, di] 以di为步长的数表Array[f, n] 一维表,元素为f[i] (i从1到n)Array[f,{n1,n2..}] 多维表,元素为f[i,j..] (各自从1到ni)IdentityMatrix[n] n阶单位阵DiagonalMatrix[/i][/i][/u][list][u][i][i] 对角阵元素操作Part[expr, i]或expr[[i]]第i个元expr[[-i]] 倒数第i个元expr[[i,j,..]] 多维表的元expr[[{i1,i2,..}] 返回由第i(n)的元素组成的子表First[expr] 第一个元Last[expr] 最后一个元Head[expr] 函数头,等于expr[[0]]Extract[expr, list] 取出由表list制定位置上expr的元素值Take[list, n] 取出表list前n个元组成的表Take[list,{m,n}] 取出表list从m到n的元素组成的表Drop[list, n] 去掉表list前n个元剩下的表,其他参数同上Rest[expr] 去掉表list第一个元剩下的表Select[list, crit] 把crit作用到每一个list的元上,为True的所有元组成的表表的属性Length[expr] expr第一曾元素的个数Dimensions[expr] 表的维数返回{n1,n2..},expr为一个n1*n2...的阵TensorRank[expr] 秩Depth[expr] expr最大深度Level[expr,n] 给出expr中第n层子表达式的列表Count[list, pattern] 满足模式的list中元的个数MemberQ[list, form] list中是否有匹配form的元FreeQ[expr, form] MemberQ的反函数Position[expr, pattern] 表中匹配模式pattern的元素的位置列表Cases[{e1,e2...},pattern]匹配模式pattern的所有元素ei的表表的操作Append[expr, elem] 返回在表expr的最后追加elem元后的表Prepend[expr, elem] 返回在表expr的最前添加elem元后的表Insert[list, elem, n] 在第n元前插入elemInsert[expr,elem,{i,j,..}]在元素expr[[{i,j,..}]]前插入elemDelete[expr, {i, j,..}] 删除元素expr[[{i,j,..}]]后剩下的表DeleteCases[expr,pattern]删除匹配pattern的所有元后剩下的表ReplacePart[expr,new,n] 将expr的第n元替换为new Sort[/i][/i][/i][/u][list][u][i][i][i] 返回list按顺序排列的表Reverse[expr] 把表expr倒过来RotateLeft[expr, n] 把表expr循环左移n次RotateRight[expr, n] 把表expr循环右移n次Partition[list, n] 把list按每n各元为一个子表分割后再组成的大表Flatten[/i][/i][/i][/u][list][u][i][i][i] 抹平所有子表后得到的一维大表Flatten[list,n] 抹平到第n层Split[/i][/i][/i][/u][list][u][i][i][i] 把相同的元组成一个子表,再合成的大表FlattenAt[list, n] 把list[[n]]处的子表抹平FlattenAt[list, n] 把list[[n]]处的子表抹平Permutations[/i][/i][/i][/u][list][u][i][i][i] 由list的元素组成的所有全排列的列表Order[expr1,expr2] 如果expr1在expr2之前返回1,如果expr1在expr2之后返回-1,如果expr1与expr2全等返回0Signature[/i][/i][/i][/u][list][u][i][i][i] 把list通过两两交换得到标准顺序所需的交换次数(排列数)以上函数均为仅返回所需表而不改变原表AppendTo[list,elem] 相当于list=Append[list,elem];PrependTo[list,elem] 相当于list=Prepend[list,elem];十四、绘图函数二维作图Plot[f,{x,xmin,xmax}] 一维函数f[x]在区间[xmin,xmax]上的函数曲?Plot[{f1,f2..},{x,xmin,xmax}] 在一张图上画几条曲线ListPlot[{y1,y2,..}] 绘出由离散点对(n,yn)组成的图ListPlot[{{x1,y1},{x2,y2},..}] 绘出由离散点对(xn,yn)组成的图ParametricPlot[{fx,fy},{t,tmin,tmax}] 由参数方程在参数变化范围内的曲线ParametricPlot[{{fx,fy},{gx,gy},...},{t,tmin,tmax}]在一张图上画多条参数曲线选项:PlotRange->{0,1} 作图显示的值域范围AspectRatio->1/GoldenRatio生成图形的纵横比PlotLabel ->label 标题文字Axes ->{False,True} 分别制定是否画x,y轴AxesLabel->{xlabel,ylabel}x,y轴上的说明文字Ticks->None,Automatic,fun用什么方式画轴的刻度AxesOrigin ->{x,y} 坐标轴原点位置AxesStyle->{{xstyle}, {ystyle}}设置轴线的线性颜色等属性Frame ->True,False 是否画边框FrameLabel ->{xmlabel,ymlabel,xplabel,yplabel}边框四边上的文字FrameTicks同Ticks 边框上是否画刻度GridLines 同Ticks 图上是否画栅格线FrameStyle ->{{xmstyle},{ymstyle}设置边框线的线性颜色等属性ListPlot[data,PlotJoined->True] 把离散点按顺序连线PlotSytle->{{style1},{style2},..}曲线的线性颜色等属性PlotPoints->15 曲线取样点,越大越细致三维作图Plot3D[f,{x,xmin,xmax}, {y,ymin,ymax}]二维函数f[x,y]的空间曲面Plot3D[{f,s}, {x,xmin,xmax}, {y,ymin,ymax}]同上,曲面的染色由s[x,y]值决定ListPlot3D[array] 二维数据阵array的立体高度图ListPlot3D[array,shades]同上,曲面的染色由shades[数据]值决定ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax}]二元数方程在参数变化范围内的曲线二元数方程在参数变化范围内的曲线ParametricPlot3D[{{fx,fy,fz},{gx,gy,gz},...},{t,tmin,tmax}]多条空间参数曲线选项:ViewPoint ->{x,y,z} 三维视点,默认为{1.3,-2.4,2}Boxed -> True,False 是否画三维长方体边框BoxRatios->{sx,sy,sz} 三轴比例BoxStyle 三维长方体边框线性颜色等属性Lighting ->True 是否染色LightSources->{s1,s2..} si为某一个光源si={{dx,dy,dz},color}color为灯色,向dx,dy,dz方向照射AmbientLight->颜色函数慢散射光的光源Mesh->True,False 是否画曲面上与x,y轴平行的截面的截线MeshStyle 截线线性颜色等属性MeshRange->{{xmin,xmax}, {ymin,ymax}}网格范围ClipFill->Automatic,None,color,{bottom,top}指定图形顶部、底部超界后所画的颜色Shading ->False,True 是否染色HiddenSurface->True,False 略去被遮住不显示部分的信息等高线ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}]二维函数f[x,y]在指定区间上的等高线图ListContourPlot[array] 根据二维数组array数值画等高线选项:Contours->n 画n条等高线Contours->{z1,z2,..} 在zi处画等高线ContourShading -> False 是否用深浅染色ContourLines -> True 是否画等高线ContourStyle -> {{style1},{style2},..}等高线线性颜色等属性FrameTicks 同上密度图DensityPlot[f,{x,xmin,xmax},{y,ymin,ymax}]二维函数f[x,y]在指定区间上的密度图ListDensityPlot[array] 同上图形显示Show[graphics,options] 显示一组图形对象,options为选项设置Show[g1,g2...] 在一个图上叠加显示一组图形对象GraphicsArray[{g1,g2,...}]在一个图上分块显示一组图形对象SelectionAnimate[notebook,t]把选中的notebook中的图画循环放映选项:(此处选项适用于全部图形函数)Background->颜色函数指定绘图的背景颜色RotateLabel -> True 竖着写文字TextStyle 此后输出文字的字体,颜色大小等ColorFunction->Hue等把其作用于某点的函数值上决定某点的颜色RenderAll->False 是否对遮挡部分也染色MaxBend 曲线、曲面最大弯曲度图元函数Graphics[prim, options]prim为下面各种函数组成的表,表示一个二维图形对象Graphics3D[prim, options]prim为下面各种函数组成的表,表示一个三维图形对象SurfaceGraphics[array, shades]表示一个由array和shade决定的曲面对象ContourGraphics[array]表示一个由array决定的等高线图对象DensityGraphics[array]表示一个由array决定的密度图对象以上定义图形对象,可以进行对变量赋值,合并显示等操作,也可以存盘Point[p] p={x,y}或{x,y,z},在指定位置画点Line[{p1,p2,..}]经由pi点连线Rectangle[{xmin, ymin}, {xmax, ymax}] 画矩形Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]由对角线指定的长方体Polygon[{p1,p2,..}] 封闭多边形Circle[{x,y},r] 画圆Circle[{x,y},{rx,ry}] 画椭圆,rx,ry为半长短轴Circle[{x,y},r,{a1,a2}] 从角度a1~a2的圆弧Disk[{x, y}, r] 填充的园、衷病⒃弧等参数同上Raster[array,ColorFunction->f] 颜色栅格Text[expr,coords] 在坐标coords上输出表达式PostScript["string"] 直接用PostScript图元语言写Scaled[{x,y,..}] 返回点的坐标,且均大于0小于1颜色函数(指定其后绘图的颜色)GrayLevel[level] 灰度level为0~1间的实数RGBColor[red, green, blue] RGB颜色,均为0~1间的实数Hue[h, s, b] 亮度,饱和度等,均为0~1间的实数CMYKColor[cyan, magenta, yellow, black] CMYK颜色其他函数(指定其后绘图的方式)Thickness[r] 设置线宽为rPointSize[d] 设置绘点的大小Dashing[{r1,r2,..}] 虚线一个单元的间隔长度ImageSize->{x, y} 显示图形大小(像素为单位)ImageResolution->r 图形解析度r个dpi小(像素为单位)ImageResolution->r 图形解析度r个dpiImageMargins->{{left,right},{bottom,top}}四边的空白ImageRotated->False 是否旋转90度显示回复:(ABBYABBIE)[分享]mathematica命令大全十五、流程控制分支If[condition, t, f] 如果condition为True,执行t段,否则f段If[condition, t, f, u] 同上,即非True又非False,则执行u段Which[test1,block1,test2,block2..] 执行第一为True的testi对应的blocki Switch[expr,form1,block1,form2,block2..]执行第一个expr所匹配的formi所对应的blocki段循环Do[expr,{imax}] 重复执行expr imax次Do[expr,{i,imin,imax}, {j,jmin,jmax},...]多重循环While[test, body] 循环执行body直到test为False For[start,test,incr,body]类似于C语言中的for,注意","与";"的用法相反examp: For[i=1;t =x,i^2<10,i++,t =t+i;Print[t]]异常控制Throw[value] 停止计算,把value返回给最近一个Catch处理Throw[value, tag] 同上,Catch[expr] 计算expr,遇到Throw返回的值则停止Catch[expr, form] 当Throw[value, tag]中Tag匹配form时停止? 其他控制Return[expr] 从函数返回,返回值为exprReturn[ ] 返回值NullBreak[ ] 结束最近的一重循环Continue[ ] 停止本次循环,进行下一次循环Goto[tag] 无条件转向Label[Tag]处Label[tag] 设置一个断点Check[expr,failexpr] 计算expr,如果有出错信息产生,则返回failexpr的值Check[expr,failexpr,s1::t1,s2::t2,...]当特定信息产生时则返回failexpr CheckAbort[expr,failexpr]当产生abort信息时放回failexprInterrupt[ ] 中断运行Abort[ ] 中断运行TimeConstrained[expr,t] 计算expr,当耗时超过t秒时终止MemoryConstrained[expr,b]计算expr,当耗用内存超过b字节时终止运算交互式控制Print[expr1,expr2,...] 顺次输出expri的值examp: Print[ "X=" , X//N , " " ,f[x+1]];Input[ ] 产生一个输入对话框,返回所输入任意表达式Input["prompt"] 同上,prompt为对话框的提示Pause[n] 运行暂停n秒的提示Pause[n] 运行暂停n秒十六、函数编程(*函数编程是Mathematica中很有特色也是最灵活的一部分,它充分体现了 *) (*Mathematica的“一切都是表达式”的特点,如果你想使你的Mathematica程 *)(*序快于高级语言,建议你把本部分搞通*)纯函数Function[body]或body& 一个纯函数,建立了一组对应法则,作用到后面的表达达式?Function[x, body] 单自变量纯函数Function[{x1,x2,...},body]多自变量纯函数#,#n 纯函数的第一、第n个自变量## 纯函数的所有自变量的序列examp: #1^#2& [2,3] 返回第一个参数的第二个参数次方映射Map[f,expr]或f/@expr 将f分别作用到expr第一层的每一个元上得到的列表Map[f,expr,level] 将f分别作用到expr第level层的每一个元上Apply[f,expr]或f@@expr 将expr的“头”换为fApply[f,expr,level] 将expr第level层的“头”换为fMapAll[f,expr]或f//@expr把f作用到expr的每一层的每一个元上MapAt[f,expr,n] 把f作用到expr的第n个元上MapAt[f,expr,{i,j,...}] 把f作用到expr[[{i,j,...}]]元上MapIndexed[f,expr] 类似MapAll,但都附加其映射元素的位置列表Scan[f, expr] 按顺序分别将f作用于expr的每一个元Scan[f,expr,levelspec] 同上,仅作用第level层的元素复合映射Nest[f,expr,n] 返回n重复合函数f[f[...f[expr]...]]NestList[f,expr,n] 返回0重到n重复合函数的列表{expr,f[expr],f[f[exprr]]..} FixedPoint[f, expr] 将f复合作用于expr直到结果不再改变,即找到其不定点FixedPoint[f, expr, n] 最多复合n次,如果不收敛则停止FixedPointList[f, expr] 返回各次复合的结果列表FoldList[f,x,{a,b,..}] 返回{x,f[x,a],f[f[x,a],b],..}Fold[f, x, list] 返回FoldList[f,x,{a,b,..}]的最后一个元ComposeList[{f1,f2,..},x]返回{x,f1[x],f2[f1[x]],..}的复合函数列表Distribute[f[x1,x2,..]] f对加法的分配率Distribute[expr, g] 对g的分配率Identity[expr] expr的全等变换Composition[f1,f2,..] 组成复合纯函数f1[f2[..fn[ ]..]Operate[p,f[x,y]] 返回p[f][x, y]br> Operate[p,f[x,y]] 返回p[f][x, y]Through[p[f1,f2][x]] 返回p[f1[x],f2[x]]Compile[{x1,x2,..},expr]编译一个函数,编译后运行速度可以大大加快Compile[{{x1,t1},{x2,t2}..},expr] 同上,可以制定函数参数类型十七、替换规则lhs->rhs 建立了一个规则,把lhs换为rhs,并求rhs的值lhs:>rhs 同上,只是不立即求rhs的值,知道使用该规则时才求值Replace[expr,rules] 把一组规则应用到expr上,只作用一次expr /. rules 同上expr //.rules 将规则rules不断作用到expr上,直到无法作用为止Dispatch[{lhs1->rhs1,lhs2->rhs2,...}]综合各个规则,产生一组优化的规则组十八、查询函数(*查询函数一般是检验表达式是否满足某些特殊形式,并返回True或False*) (*可以在Mathematica中用“?*Q”查询到 *)ArgumentCountQ MatrixQAtomQ MemberQDigitQ NameQEllipticNomeQ NumberQEvenQ NumericQExactNumberQ OddQFreeQ OptionQHypergeometricPFQ OrderedQInexactNumberQ PartitionsQIntegerQ PolynomialQIntervalMemberQ PrimeQInverseEllipticNomeQ SameQLegendreQ StringMatchQLetterQ StringQLinkConnectedQ SyntaxQLinkReadyQ TrueQListQ UnsameQLowerCaseQ UpperCaseQMachineNumberQ ValueQMatchLocalNameQ VectorQMatchQ十九、字符串函数"text" 一个串,头为_String"s1"<>"s2"<>..或StringJoin["s1","s2",..] 串的连接StringLength["string"] 串长度StringReverse["string"] 串反转StringTake["string", n] 取串的前n个字符的子串,参数同Take[] StringDrop["string", n] 参见Drop,串也就是一个表StringInsert["string","snew",n] 插入,参见Insert[] StringPosition["string", "sub"] 返回子串sub在string中起止字母位置StringReplace["string",{"s1"->"p1",..}] 子串替换StringReplacePart["string", "snew", {m, n}]把string第m~n个字母之间的替换为snewStringToStream["string"] 把串当作一个输入流赋予一个变量Characters["string"] 把串"string"分解为每一个字符的表ToCharacterCode["string"] 把串"string"分解为每一个字符ASCII值的表FromCharacterCode[n] ToCharacterCode的逆函数FromCharacterCode[{n1,n2,..}]ToCharacterCode的逆函数ToUpperCase[string] 把串的大写形式ToLowerCase[string] 把串的小写形式CharacterRange["c1","c2"] 给出ASCII吗在c1到c2之间的字符列表ToString[expr] 把表达式变为串的形式ToExpression[input] 把一个串变为表达式Names["string"] 与?string同,返回与string同名的变量列表。

Mathematica编程语句与例题

Mathematica编程语句与例题

例7: 用函数描述如下结果:任给一个整数x, 显示它被3除的余数。 解: Mathematica自定义函数:


In[19]:=f[x_]:=Switch[Mod[x,3], 0, Print["0 is the remainder on division of" ,x ,"by 3"], 1, Print["1 is the remainder on division of" ,x ,"by 3"], 2, Print["2 is the remainder on division of" ,x ,"by 3"] ] In[20]:= f[126] Out[20]= 0 is the remainder on division of 126 by 3 In[21]:= f[346] Out[21]= 1 is the remainder on division of 346 by 3 In[22]:= f[599] Out[22]= 2 is the remainder on division of 599 by 3
8.1.3 过程
在Mathematica中,一个用分号隔开的表达式序列称为一个复合表达式,它 也称为一个过程。 例如: In[11]:=s=1;u=s+3;u*u Out[11]=16 ★Mathematica的过程可以作为Module模块命令的表达式,如果不关心局部 变量问题,可以把一个过程用小括号括起来构成一个整体,这样可以用由小 括号括起来的过程来定义一个函数。 例如:已知有n个元素的一个数表x={a1,a2,…,an},定义一个计算此类数表最 大数与最小数平方差的函数,用过程来定义可以写为: In[12]:=g[x_]:=(m =Max[x];n = Min[x];m*m - n*n) 如果不用小括号括起来,而是写为 In[13]:=g[x_]:=m =Max[x];n = Min[x];m*m-n*n 则In[13]定义的g[x]实际上是Max[x],不是数表最大数与最小数平方差函数, 应该注意过程加小括号与不加括号的区别。本例题还可以用模块来定义函数: In[14]:=g[x_]:=Module[{m, n}, m =Max[x];n = Min[x];m*m-n*n]

Mathematica初等代数运算命令与例题

Mathematica初等代数运算命令与例题

第三章初等代数运算命令与例题3.1多项式运算多项式是我们最熟悉的简单表达式,n 次一元多项式的一般形式为:P n(x) =a 0 +a1x+ a2x 2 +…+a n x n在Mathematica 中, 有关表达式的任何运算都可以应用到多项式中,特别,多项式的加减乘除四则运算只要用Mathematica 中的加减乘除号来连接两个多项式即可, 如:数学形式Mathematica 输入形式多项式相加(3+x 2) + (1-2x5 ) (3+x^2)+(1-2*x^5)多项式相减(3+x 2) - (1-2x5 ) (3+x^2)-(1-2*x^5)多项式相乘(3+x 2)(1-2x5 ) (3+x^2)*(1-2*x^5)多项式相除(3+x 2) ÷ (1-2x5 ) (3+x^2)/(1-2*x^5)上述多项式的运算只有多项式的加减可以计算外,多项式的乘除实际上不进行真正的运算,而只是以乘积或有理分式的形式表出,要想真正产生运算需用Mathematica 提供的多项式展开命令。

Mathematica 提供还提供了多项式因式分解,提取多项式幂次和系数等处理多项式的一些函数,下面列举其中的常用函数及功能:Mathematica 函数形式功能1) Expand[多项式] 把多项式按升幂展开2) Factor[多项式] 对多项式进行因式分解3) Collect[多项式,x] 把多项式按x的同次幂合并形式展开4) Simplify[多项式] 把多项式写成项数最小的形式5) Exponent[多项式, x] 取出多项式中x的最高幂数6) Coefficient[多项式,form] 取出多项式中form的系数7) Part[多项式, n] 取出多项式的第n项8) Length[多项式] 给出多项式的项数9) PolynomialQuotient[p,q, x] 计算p÷q的商,这里p,q是关于x的多项式10) PolynomialRemainder[p,q, x] 计算p÷q的余式,这里p,q是关于x的多项式11) PolynomialGCD[p,q, …] 求多项式p,q,…的最大公因子12) PolynomialGCD[p,q, …] 求多项式p,q,…的最小公倍数注:函数中的多项式可以是多元多项式,通常可以把多项式存放在一个变量中(用赋值语句),这样该变量就代表存入的多项式,使处理多项式更简单。

Mathematica编程语言基础

Mathematica编程语言基础

f
is assumed to have a numerical value when its arguments are numeric quantities values of
f
f
cannot be changed
attributes of values of
f
cannot be changed
f
Out[13]=

p x_ ? NumberQ :FactorInteger x ; p 20
2, 18 , 3, 8 , 5, 4 , 7, 2 , 11, 1 , 13, 1 , 17, 1 , 19, 1
11
多种选择方案 |

Cases f a , f a, b , f a, a, a , f a ..
f a , f a, a, a
17
逻辑判断符号
的值相等时, 当x与y的值相等时,返回 与 的值相等时 返回true, 否则返回false 否则返回 x!=y或x≠y当x与y的值不相等时 返回true, x!=y或x≠y当x与y的值不相等时,返回true, 的值不相等时, 否则返回false 否则返回 x>y x<y x<=y或x≤y 或 x>=y或x≥y 或
Map ^ 2 &, a b c . & a, b, c
a2 b2 c2
3
a2 b2 c2 Out[410]=
Out[411]=
具有非符号头部的表达式
这是由纯函数所产生的一种结果
In[422]:=
Out[422]= Out[423]= Out[424]=
Out[425]//FullForm=

Mathematica常用指令

Mathematica常用指令

Mathematica常⽤指令表达式:Plot[4 x - 9, {x, 0, 9}]f[x_] = x^3Plot[f[x], {x, 0, 9}]a = Plot[4 x - 9, {x, 0, 9}]b = Plot[x^3, {x, 0, 3}] 两图画在⼀个坐标系Show[a, b]a = Plot[4 x - 9, {x, 0, 9}]b = Plot[x^3, {x, 0, 3}] 两图画在⼀起(⼀排)c = GraphicsArray[{a, b}]Show[c]a = Plot[4 x - 9, {x, 0, 9}]b = Plot[x^3, {x, 0, 3}]c = GraphicsArray[{a}, {b}] 两图画在⼀起(两排)Show[c]⼆维画图:Automatic 默认值DisplayFunction -> Identity 不出现图DisplayFunction -> $DisplayFunction 出现图PlotRange -> All 画出所有点,指定区域点PlotStyle -> {RGBColor[1, 0, 0]} 图像颜⾊PlotStyle -> {Dashing[{0.01}]} 图像成虚线PlotStyle -> {Thickness[0.01]} 图像粗细AxesLabel -> {"x/t", "y/cm"} 坐标标签PlotLabel -> {"s-t"} 图像标签Frame -> True 图像边框Axes -> {True, True} 坐标轴的显⽰AxesOrigin -> {0, -5} 设置坐标原点GridLines -> {{-π, -π/2, 0, π/2, π}, {-1,-0.5,0, 0.5, 1}}给坐标轴分⽹格TextStyle -> {FontSize -> 30} 坐标字体⼤⼩AspectRatio -> Automatic 坐标⽐例⼀致Ticks -> {{0, 1, 2, 3}, {0,10,20}} 在坐标轴上显⽰特定点ParametricPlot[x(t),y(t)},{t,0,6,}] 画参数⽅程三维画图:PlotPoints -> 100 像素Boxed -> False 显⽰边框BoxRatios -> {1,1,2} 三维⽐例Mesh -> False 在曲⾯上不显⽰⽹格ViewPoint -> {0, 0, 1} 图的观察⽅向HiddenSurface -> False 图⽰⽆遮挡解⽅程:Solve[a x + b == c x + d, x]Solve[{2 x + 3 y == 3, 3 x - 5 y == 9}, {x, y}]NSolve[7 x + 3 == 2, 30]或N[Solve[7 x + 3 == 2], 30]Roots[x^2 + 2 x + 1 == 0, x]或NRoots[x^3 + 3 == 0, x] 解⼀元⽅程求解超越⽅程:先画图确定跟的位置,在⽤FindRoot解:Plot[{Sin[x], x^2 - 1}, {x, -π, π}]FindRoot[Sin[x] == x^2 - 1, {x, 1}]Factor[x^2 + 2 x + 1] 分解因式Expand[(x^2 + 2 x + 1)( x^2 - 1)] 展开多项式Collect[x^3y^2z^4 + x^4y^5z^2x^2y^3z^2, y] 按Y升次幂排列PowerExpand[Log[x\^y]] 展开或化简TrigExpand[Sin[3 x]] 按三⾓函数形式展开微分:Limit[(x^5 - 32)/(x^3 - 8), x -> 2] 求极限Limit[32/x, x -> 0, Direction -> 1(-1)] 左(右)极限f'[x] 求导D[f[x], {x, 3}] 以X为变量求3阶导数D[f[x], {x, 3}] /. x -> 2 f''[2]Series[Exp[x], {x, 3, 5}] 在3点展开⾄5次⽅D[x^3 y^4 z^2, x] 对x求偏导D[x^3 y^4 z^2, {x, 2}] 对x求⼆次偏导D[x^3 Sin[y], x, y] /. {x -> 2, y -> π} 定点求导常微分⽅程:DSolve[y'[x] == x + y[x], y[x], x] 解微分⽅程,y是x的函数DSolve[{y'[x] == x + y[x], y[0] == 0}, y[x], x] 初始条件NDSolve[{y'[x] == x + y[x], y[0] == 0}, y[x], x] 数值解矩阵:{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} // MatrixForm ⽣成矩阵Table[x^2, {x, 1, 5}] ⽣成x取值1到5的x^2的值Table[x+y, {x, 1, 5},{y,1, 7}] ⽣成5*7的矩阵,矩阵元的值是x+y f[x_] = 2 x^2 Array[f, 1, 5] ⽣成x=1到5的2 x^2的值IdentityMatrix[3] ⽣成3阶单位矩阵a[[3,4]] a矩阵的(3,4)矩阵元a[4] a矩阵的第四⾏a[[all,5]] a矩阵的第5列a[[{2,3,5},all]] a矩阵的第2,3,5⾏{q,w,e}={2+3,1+2,2} q=5,w=3,e=2Table[Random[Integer,{0,9}],{i,1,4},{j,1,4}] 随机产⽣矩阵元为0~9的4⾏4列的矩阵z.q 矩阵点乘Cross[z,q] 矩阵叉乘Inverse[a] 逆矩阵Transpose[a] 转置Det[a] 求⾏列式Tr[a] 求迹MatrixPower[a,2] 矩阵的3次⽅LinearSolve[a,aa]//MatrixForm 解线性⽅程组Eigenvalues[s] s矩阵的本征值Eigenvectors[s]s矩阵的本征向量Eigensystem[s]s矩阵的{本征值},{本征向量} Eigenvalues[N[s]] s矩阵的本征值的数值表⽰命令语句:If[x ≤y, 1, 2] ifx ≤y,then 1,else 2If[Abs[q - w] == 1, 1, If[q == w, 2, 0] ifabs[q - w] == 1,then 1,elseif q == w,then 2,else 0 While[1,2] For[初始化,条件,更新,语句]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例4:写出一元二次方程ax2 + bx + c = 0判 : 别根的类型的Mathematica自定义函数形式。 解:一元二次方程根的判别式为 =b2 -4ac, 当>0时方程有两个实根; 当<0时方程有 两个复根; 当=0时方程有两个实重根, 它 有多于两种的选择,故可以用Which语句表 示。 Mathematica命令为 Mathematica命令为 c_]:=(w=b^2In[8]:=g[a_, b_, c_]:=(w=b^24*a*c;Which[w>0,"two real roots", w<0,"two complex roots",w == 0,"duplicate roots" ]) In[9]:=g[0,1,2] Out[9]= two real roots In[10]:=g[3,1,2] Out[10]= two complex roots In[11]:=g[3,0,0] Out[11]=duplicate roots
命令描述下面问题:先产生一个函数 例1:用Mathematica命令描述下面问题 先产生一个函数 用 命令描述下面问题 先产生一个函数[0,1]内的 内的 随机实数,再判断该随机数是否小于 再判断该随机数是否小于0.5, 如果小于 如果小于0.5, 则将此 随机实数 再判断该随机数是否小于 随机数显示出来,否则显示”***”。 随机数显示出来 否则显示” ” 否则显示 解: Mathematica 命令为: In[1]:= p= Random[]; If[p<0.5, p, “***”] Out[1]=0.202857 In[2]:= If[(p=Random[])<0.5, p, “***”]) Out[2]= *** 例2: 写出分段函数
第八章 Mathematica编程语句与例题 编程语句与例题
北京交通大学
8.1全局变量、局部变量、过程 全局变量、局部变量、 全局变量
8.1.1全局变量 全局变量
在Mathematica中键入的各种命令或在Mathematica的程序语句 中, 变量被赋值后, 必须用Mathematica清除变量的命令才能使其 还原为符号的变量, 称为全局变量 全局变量。察看某变量是否为全局变量, 全局变量 可以键入命令: ?变量名 变量名 Global`变量名 变量名… 变量名 说明该变量是全局变量,否则,就不是全局变量。 例如:要知道变量w是否为全局变量,可以键入: 例如 ?w 键入执行命令后,显示结果 Global`w w=2 说明w是全局变量,且有数值2。
Mathematica 中Module模块的命令为 模块的命令为: 模块的命令为 Module[{变量表 表达式 ] 变量表}, 变量表
例如: 例如 在Mathematica键入 In[4]:= u=5; In[5]: = s=Module[{u, v=1}, u=1; v=u+v+3] Out[5]= 5 In[6]:= Print[u, " ", v, " " ,s] Out[6]= 5 v 5
此时命令中的变量s, 就是局部变量 就是局部变量, 此时命令中的变量 u就是局部变量 它们的值将不会影响随 后的命令。 后的命令。
8.1.3 过程
在Mathematica中,一个用分号隔开的表达式序列称为一个复合表达式 复合表达式,它 复合表达式 也称为一个过程 过程。 过程 例如: 例如 In[11]:=s=1;u=s+3;u*u Out[11]=16 ★Mathematica的过程可以作为Module模块命令的表达式,如果不关心局部 变量问题,可以把一个过程用小括号括起来构成一个整体,这样可以用由小 括号括起来的过程来定义一个函数。 例如:已知有n个元素的一个数表x={a1,a2,…,an},定义一个计算此类数表最 例如 大数与最小数平方差的函数,用过程来定义可以写为: In[12]:=g[x_]:=(m =Max[x];n = Min[x];m*m - n*n) 如果不用小括号括起来,而是写为 In[13]:=g[x_]:=m =Max[x];n = Min[x];m*m-n*n 则In[13]定义的g[x]实际上是Max[x],不是数表最大数与最小数平方差函数, 应该注意过程加小括号与不加括号的区别。本例题还可以用模块来定义函数: In[14]:=g[x_]:=Module[{m, n}, m =Max[x];n = Min[x];m*m-n*n]
例7: 用函数描述如下结果:任给一个整数x, 显示它被3除的余数。
x + sin x f ( x) = x cos x x <1 x ≤1
的Mathematica自定义函数形式,并画出其在[3,3]上的图形
解: 因此Mathematica 命令为: In[3]:= f[x_]:=If[x<1, x+Sin[x], x*Cos[x]] (或f[x_]:=If[x<1, x+Sin[x],x*Cos[x],”err”] ) 或 In[4]:= Plot[f[x],{x,-3, 3}]
In[7]:=s=Sin[x]; In[8]:=u= Cos[x]; In[9]:=D[s*u, x] Out[9]= Cos2[x] - Sin2[x]
命令中的变量s, 的值将会影响随后的命令 的值将会影响随后的命令, 命令中的变量 u的值将会影响随后的命令 如果写成
In[10]:= Module[{s, u, x}, s=Sin[x];u= Cos[x]; D[s*u, x]] Out[10]= Cos2[x$1] - Sin2[x$1]
例6: 写出分段函数
0 10 + 2 x 30 f ( x) = 30 ( x 20) / 2 20 20 2( x 50) 0
x≤0 0 < x ≤ 10 10 < x ≤ 20 20 < x ≤ 40 40 < x ≤ 50 50 < x ≤ 60 x > 60
的Mathematica自定义函数形式,并画出其在[0,60]上的图形。 解: 因此Mathematica 命令为: In[17]:=f[x_]:= Which[x<=0,0,x<=10,10+2x,x<=20,30,x<=40,30(x-20)/2, x<=50,20,x<=60,20-(x-50)*2,x>60,0 ] In[18]:= Plot[f[x],{x,0,60}]
8.1.2 局部变量
在Mathematica的命令或程序中出现的任何合法的变量 的命令或程序中出现的任何合法的变量 名符号,如果该变量名所代表的变量没有被赋值, 名符号,如果该变量名所代表的变量没有被赋值,则它就作 为数学算式中的符号参与数学的公式推导和运算; 为数学算式中的符号参与数学的公式推导和运算;如果该变 量被赋值了, 量被赋值了,则用该变量所赋的值参与对应的数学公式推导 和运算。因此, 和运算。因此,当用户在做符号运算时使用的符号含有被赋 了值的变量名,则就会出现察觉不到的错误。为克服这种错 了值的变量名,则就会出现察觉不到的错误。 可以在使用Mathematica的命令之前 先用 的命令之前, 误,可以在使用 的命令之前 Clear[ 变量 变量 变量1,变量 变量2,…]将要使用的所有变量名做清除处 将要使用的所有变量名做清除处 就可以避免上述错误。 理, 就可以避免上述错误。 不同于全局变量, 不同于全局变量 称变量的赋值效果只在某一模块内有效的 变量为局部变量 局部变量。 变量为局部变量。
中使用局部变量很简单, 在Mathematica中使用局部变量很简单 只要把涉及到的局部 中使用局部变量很简单 变量用大括弧{ 括起来 放在Module模块命令的 变量表 括起来, 模块命令的{变量表 变量用大括弧 }括起来 放在 模块命令的 变量表} 位置, 并把相应的语句写成语句序列放在Module模块命令的 位置 并把相应的语句写成语句序列放在 模块命令的 表达式位置即可。 表达式位置即可。 例如: 例如 Mathematica中有如下命令 中有如下命令
例5 任给向量x=(x1,x2,…,xn),定义一个可以计算如下三中向量范数 的函数: 2
x 1 = ∑ xi
i =1 n
x2=
∑x
i =1
n
i
x
∞ቤተ መጻሕፍቲ ባይዱ
= Max xi
解: In[12]:= norm[x_,p_]:=Which[p==1,Sum[Abs[x][[i]],{i,1,Length[x]}], p==2,Sqrt[Sum[Abs[x][[i]]^2,{i,1, Length[x]}]], True,Max[Abs[x]]] In[13]:=x={3, -4, 0}; In[14]:= norm[x,1] Out[14]=7 In[15]:= norm[x,2] Out[15]=5 In[16]:= norm[x,0] Out[16]=4
例3 定义一个函数描述下面问题:任给一个函数y(x),如果 y(x)的一阶导数为零,则输出符号###,否则,输出y′ (x)+ 5
解: Mathematica 命令为:
In[5]:=f[y_,x_]:=Module[{s},s=D[y,x];If[s==0,Return[“###”]]; s =s+5;Return[s]] In[6]:= f[3,x] Out[6]= ### In[7]:= f[Tan[x],x] Out[7]=5 + Sec2[x]
8.2.2 Which 语句
命令形式1: 条件1,语句 条件2,语句 条件n,语 命令形式 :Which[条件 语句 条件 语句 ... ,条件 语 条件 语句1,条件 语句2, 条件 句n] 功能:由条件1开始按顺序依次判断相应的条件是否成立,若第 功能 一个成立的条件为条件k,则执行对应的语句k。 命令形式2: 条件1,语句 条件2,语句 条件n,语 命令形式 :Which[条件 语句 条件 语句 ... ,条件 语 条件 语句1,条件 语句2, 条件 字符串"] 句n,True,"字符串 字符串 功能:由条件1开始按顺序依次判断相应的条件是否成立,若第 功能 一个成立的条件为条件k,则执行对应的语句k,若直到条件n 都不成立时,则返回符号字符串。
相关文档
最新文档