当前位置:文档之家› Mathematica基础

Mathematica基础

Mathematica基础
Mathematica基础

Mathematica基础

Mathematica作为一个优秀的符号计算系统, 不同于一般的计算软件或简单编程, 它以符号记录计算的精确结果, 能达到任意位的精度(只要你拥有足够的内存). 并且, 它还有教强的作图以及简单的编程功能. 因此, 在科学研究, 在工程应用, 在诸多领域中,Mathematica 将是一个得心应手的工具.希望这些简单的讲述,能让大家对Mathematica软件有个初步的了解. 其实Mathematica本身的帮助是非常强大的, 相信在你上手这个软件之后, 会更轻松地读懂并发现它的帮助中的各项内容的.适用版本:简记Mathematica为math math 1.2 for DOS,math 2.2

for Windows, math 3.0 for win95, math 3.0 for UNIX.

教程目录:

01 简介02 试试你的math 03 基本计算

04 代数变换05 微积分运算(2-1) 06 微积分运算(2-2)

07 矩阵/表的运算08 表的运算.2 09 二维图形

10 三维图形11 基本图元作图12 表达式与纯函数

13 转化规则与参数14 过程编程15 程序包

4.1简介

我们平日用到编程语言时, 大家都知道编程中用到的整型,实型, 甚至双精度数, 都只是一个近似的数, 其精度有限, 有效数字有限, 在很多时候达不到实际需要的要求. 符号计算与数值计算的区别就在于符号计算以准确值记录计算的每一步的结果, 如果需要时, 可以将精确表示按需要计算成任意位数的小数表示出来(只要机器内存足够大). 最常见的符号计算系统有maple, mathematica, redues等,这些软件各有侧重, 比如,maple内存管理及速度比math 好, 但是图形方面不如math; redues没找到, 没用过, 未明; 而用得较多的matlab编程环境特好, 和C语言接口极其简单, 符号计算采用Maple内核, 数值计算功能很强. 所以, 就实用而全面来说,math是一个很好用的软件.

math软件不仅能够进行一般的+-*/及科学函数如Sin, Log等计算, 而且能进行因式分解, 求导, 积分, 幂级数展开, 求特征值等符号计算, 并且, math有较强的图元作图, 函数作图, 三维作图及动画功能.

4.2试试你的math

math自发布以来, 目前比较常见的有math 1.2 for DOS,math 2.2 for Windows, math 3.0/4.0 for win95, math 3.0/4.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的以Shift+回车结束一句输入. DOS下的提示符显示为In[数字]:=, 而windows下在结束输入后才显示出In[数字]:=及Out[数字]:=字样. (Out为输出提示符)

下面试试几个例子:(In[数字]:=为提示符, 不用键入)

In[1]:= 2^100 计算2的100次方

In[2]:= s={{1,0,1},{0,1,0},{1,0,1}} 定义矩阵s

In[3]:= Eigenvalues[s] 计算s的特征值

In[4]:= Plot[Sin[x],{x,0,Pi}] 在0,Pi间画Sin

In[5]:= Plot[Cos[x],{x,0,Pi}] Cos

In[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的额外信息

4.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/180

I i=Sqrt[-1]

Infinity 无穷大

Catalan Catalan常数.=0.915966

ComplexInfinity 复无穷

DirectedInfinity 有向的无穷

EulerGamma 欧拉常数gamma=0.5772216

GoldenRatio 黄金分割(Sqrt[5]-1)/2

Indeterminate 不定值

4. 逻辑运算符

==, !=, >, >=, <, <=, !, &&, ||

Xor 异或

Implies 隐含

If[条件,式1,式2] 如果条件成立, 值式1; 否则得式2

5. 变量

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代换为value

expr /. {x->xval, y->yval}

下面就让我们以几个例子来结束本节:(大家还是注意, DOS下的Math, 只要输入In[num]:=后的指令后按回车, 而windows下则是按

+回车.) 大家看看都有什么输出.

In[1]:= 2.7+5.23

In[2]:= 1/3+2/7

In[3]:= 1/3+2/7 //N

In[4]:= N[Pi,100] 曾经有人问我, 你是怎么算出Pi的1000位

而没有错误的, 其实很简单, 大家只要把

上式的100改为1000即可.

In[5]:= Sin[Pi/2]+Exp[2]+Round[1.2]

In[6]:= 10<7 In[7]:= x=5; 如果在输入之后加上一个";", 则只

运算不输出.

IN[8]:= y=0 (所以In[7]和8完全可以合成一条x=5;y=0,

假如我不需要x=5的输出)

In[9]:= x>y

In[10]:= t=1+m^2

In[11]:= t /. m->2

In[12]:= t /. m->5a

In[13]:= t /. m->Pi //N

4.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]:= 12meters

In[2]:= %+5.3meters

In[3]:= %/(25seconds)

In[4]:= %/.meters->3.78084feet 哇, 一下子就把米制变为英尺了.

4.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] 全微分df

Dt[f, x] 全微商df/dx

In[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}] 求和的步长为di

Product[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[]

4.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趋于x0

In[1]:= t=Sin[x]/x

In[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是什么的别名

4.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矩阵a

Array[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, CForm TeX(数学排版)格式, 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] 果然行列式为0 In[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}] 你就会发现, 定义过的有值了, 没定义的还没有值. --

4.8 表的运算

表的结构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的长度是2

In[6]:= TensorRank[t] t的深度是1

In[7]:= Dimensions[t] 作为向量,是2维: {1,2}和3

In[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] 去掉首元的list

Drop[list, n/-n] 去掉前/后n个元素的list

Select[list, crit] 从list中选出满足crit的元素

In[1]:= t={{2,1},{1}};

In[2]:= VectorQ[t] 函数名最后字母为Q,其值为True/False

In[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个位置插入elem

Join[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个位置插入x

In[3]:= Join[{1,2,3},{xy},{m,{2,3},3}] 看看Join 集合函数Union[list1, list2, ...] 去掉重复元并排序后的Join

Intersection[list1, list2, ...] 取各list的公共元

Complement[t, list1, list2, ...] 在t中, 不在各list中的元素

In[4]:= Union[{1,2,3},{xy},{m,{2,3},3}] 看看Union

In[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] 各块中有偏移d

Permutations[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

4.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 True

AxesOrigin原点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] 重画图p

Show[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]

--

4.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 None

AxesLabel None {"x轴标","y轴标","z轴标"}

Ticks Automatic 刻度

PlotLabel图标None 图的标记

Boxed盒子True False BoxRatios {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}]

--

Mathematica (11)基本图元作图

二维基本图元Point, Line, Rectangle, Polygon, Circle,

Disk, Text, Graphics[]; 三维基本图元Point, Line,

Polygon, Cuboid, Text, Graphics3D[]; 一些PlotStyle:

Thickness, Dashing, PointSize, GrayLevel, RGBColor.

4.11基本图元绘图

二维基本图元

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),半径r

Disk[{x,y},r] 圆盘:圆心(x,y),半径r

Circle[{x,y},{rx,ry},{a1,a2}]

椭圆: 圆心(x,y),长短轴rx,ry,起始角a1,终止角a2 Disk[{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}] 文本输出

一些PlotStyle

Thickness[r] 线宽

Dashing[{r1,r2,...}] 虚线{实虚实虚...}

PointSize[r] 点的大小

GrayLevel[r] 灰度0<=r<=1

RGBColor[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}}]]]

4.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^2

In[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/x

In[4]:= Map[f,u] 同f/@u

In[5]:= Map[f,u,2]

In[6]:= MapAll[f,u] 同f//@u

In[7]:= MapAt[f,u,Position[u,x]] 所有x都换成f[x]

纯函数

& Function纯函数

# 纯函数的第一个变量

#n 纯函数的第n个变量

##n 从第n个起的变量序列

## ##1

Function[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^3

In[3]:= g[##,##]&[x,y] 得g[x,y,x,y]

Mathematica (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] 彻底清除变量或函数f

In[1]:= f[x]=x^2 定义f在x为x^2

In[2]:= f[2]+f[x] f[2]未定义,所以得到f[2]+x^2

In[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+n

In[2]:= f[n_,n_]:=3*n

In[3]:= f[n_]:=2*n

In[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=2

In[2]:= h[y_]=y^3 即时赋值

In[3]:= h[1] =8

In[4]:= h2[y_]:=y^3 使用时再赋值,这里只定义规则

In[5]:= h2[1] =1 (注意h2与h的区别)

In[6]:= ?h

In[7]:= ?h2 分别看看就知道了

In[8]:= 3!

下面再熟练一下=和:=的区别

In[9]:= f[x_]:=%+2x

In[10]:= 1+y^2

In[11]:= g[x_]:=%+2x

In[12]:= 2+z

In[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]=1

In[2]:= f[x_]:=-1 其他时候f[x]=-1

In[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]=96

In[11]:= ss /: phys[ss]=95

In[12]:= ?ss

参数

x_ 单个表达式x

x__ 一个或多个表达式序列x

x___ 0个或多个表达式序列x

x_h (或x__h) Head是h的表达式(序列)

x_:xdef 可省参数的缺省值

In[1]:= nt[t_,lt__]:=t*lt

In[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.25

In[8]:= h[a] a的Head不是Real,未定义,得h[a]

In[9]:= fac[0]=1 以下看看函数fac

In[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] 只有一个参数,两个参数使用缺省

4.14 过程编程

一般过程, 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,步长istep Do[expr,{i,imin,imax}] istep=1

Do[expr,{i,imax}] imin=1,istep=1

Do[expr,{n}] 计算expr n次

Do[expr, {i...}, {j...}...] 多重循环(前面的外重循环)

While[test,expr] 当test成立, 计算expr

For[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}];t

In[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) expr

If[test,expr1,expr2] if (test) expr1 else expr2

If[test,expr1,expr2,expr3] 无法判断时得值expr3

Which[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]] 看到了,是Null

In[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[] 返回,当前函数值Null

Return[expr] 返回expr的值

Break[] 和Continue[] 这两函数只用于For,While.

(Do不使用) Goto[标志]和Label[标志] Mathematica (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] 清除符号s

Remove["context`*"] 清除context上下文中的所有符号

这里要提一下两个系统变量: $Context和$ContextPath, 前者为当前上下文, 后者为当前上下文路径. 关于上下文, 大家看看以下例子, 体会一下.

In[1]:= $Context 当前上下文是Global`

In[2]:= z=6 定义z=6

In[3]:= Begin["new1`"] 开始new1上下文

IN[4]:= new1`z=9 new1上下文中的z=9

In[5]:= $Context 当前上下文是new1`

In[6]:= z 看看z=9

In[7]:= ?*`z 看看有几个z,其中有z和Global`z

In[8]:= EndAdd[] 结束new1`,并将new1`放在路径最前面

In[9]:= $ContextPath 看看路径

In[10]:= ?*`z 看看有几个z,其中有z和new1`z

In[11]:= z 看看现在z的值是Global的z值了

In[12]:= $Context 当前上下文

In[13]:= Remove[z] 清除变量z

In[14]:= z Global的z清除了,这时显示的z=9

In[15]:= Remove[z] 再Remove就清除new1中的z了

程序注释

f::ussage="text..." 关于一个函数的说明

(* 注释内容*) 出现在程序包的任何地方

如If[x>y,(* then *)x,(* else *) y]和If[x>y,x,y]是一样的.

输出

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页-------------------

Mathematica使用教程

Mathematica 教程 【Mathematica 简介】 Mathematica 软件是由沃尔夫勒姆研究公司 (Wolfram Research Inc.)研发的。Mathematica 1.0 版发布于1988年6月23日。发布之后,在科学、技术、媒体等领域引起了一片轰动,被认为是一个革命性的进步。几个月后,Mathematica就在世界各地拥有了成千上万的用户。今天,Mathematica 已经在世界各地拥有了数以百万计的忠实用户。 Mathematica已经被工业和教育领域被广泛地采用。实际上,Mathematica负责将高级的数 学和计算引入了传统上非技术的领域,极大的增加了科技软件的市场。一个包含应用、咨询、 书籍、和课程软件的行业支持着国际化的Mathematica用户群,这个行业还在不断地膨胀。 随着沃尔夫勒姆研究公司不断地扩大和Mathematica的使用被不断地扩展到不同的领域, 将会看到Mathematica在全世界范围内对未来产品、重要研究发现、和教学的巨大影响。 数学软件是现在科研工作者的必备的工具,个人比较喜欢用Mathematica,因为它是最接近数学语言的。Mathematica在15日发布,其最显著的变化是允许自由形式的英文输入,而不再需要严格按照Mathematica语法,这类似于Wolfram|Alpha搜索引擎。Mathematica 8 允许用户按照自己习惯的思考过程输入方程式或问题,最令人激动的部分是软件不是逐行执 行命令,而是能理解上下文背景。 1. En ter your queries in pla in En glish using new free-form lin guistic in put 2. Access more tha n 10 trilli on sets of curated, up-to-date, and ready-to-use data 3. Import all your data using a wider array of import/export formats 4. Use the broadest statistics and data visualizati on capabilities on the market 5. Choose from a full suite of engin eeri ng tools, such as wavelets and con trol systems 6. Use more powerful image process ing and an alysis capabilities 7. Create in teractive tools for rapid explorati on of your ideas 8. Develop faster and more powerful applicati ons

Mathematica使用教程

【Mathematica 简介】 Mathematica 软件是由沃尔夫勒姆研究公司(Wolfram Research Inc.)研发的。Mathematica 版发布于1988年6月23日。发布之后,在科学、技术、媒体等领域引起了一片轰动,被认为是一个革命性的进步。几个月后,Mathematica 就在世界各地拥有了成千上万的用户。今天,Mathematica 已经在世界各地拥有了数以百万计的忠实用户。 Mathematica 已经被工业和教育领域被广泛地采用。实际上,Mathematica 负责将高级的数学和计算引入了传统上非技术的领域,极大的增加了科技软件的市场。一个包含应用、咨询、书籍、和课程软件的行业支持着国际化的 Mathematica 用户群,这个行业还在不断地膨胀。随着沃尔夫勒姆研究公司不断地扩大和 Mathematica 的使用被不断地扩展到不同的领域,将会看到 Mathematica 在全世界范围内对未来产品、重要研究发现、和教学的巨大影响。 数学软件是现在科研工作者的必备的工具,个人比较喜欢用Mathematica,因为它是最接近数学语言的。Mathematica 在15日发布,其最显著的变化是允许自由形式的英文输入,而不再需要严格按照Mathematica语法,这类似于Wolfram|Alpha搜索引擎。Mathematica 8允许用户按照自己习惯的思考过程输入方程式或问题,最令人激动的部分是软件不是逐行执行命令,而是能理解上下文背景。 1. Enter your queries in plain English using new free-form linguistic input 2. Access more than 10 trillion sets of curated, up-to-date, and ready-to-use data 3. Import all your data using a wider array of import/export formats 4. Use the broadest statistics and data visualization capabilities on the market 5. Choose from a full suite of engineering tools, such as wavelets and control systems 6. Use more powerful image processing and analysis capabilities 7. Create interactive tools for rapid exploration of your ideas 8. Develop faster and more powerful applications Wolfram Research 的 CEO 和创立者斯蒂芬·沃尔夫勒姆表示:“传统上,让计算机执行任务必须使用计算机语言或者使用点击式界面:前者要求用户掌握它的语法;而后者则限制了可访问函数的范围。”“自由格式语言学能够理解人类的语言,并将其转化为具有特定语法结构的语言。这是产品适用性上的一个突破。 Mathematica 8 是这种创新思想下的第一个产品,但是它已经能够大幅度提高用户的工作效率。” Mathematica简明教程 第1章Mathematica概述 运行和启动:介绍如何启动Mathematica软件,如何输入并运行命令

Mathematica7.0简易教程

Mathematica7.0简易教程 第1章Mathematica概述 1.1 Mathematica的启动与运行 Mathematica是美国Wolfram研究公司生产的一种数学分析型的软件,以符号计算见长,也具有高精度的数值计算功能和强大的图形功能。 假设在Windows环境下已安装好Mathematica7.0,启动Windows后,在“开始”菜单的“程 序”中单击就启动了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入门教程

Mathematica入门教程 Mathematica的基本语法特征 如果你是第一次使用Mathematica,那么以下几点请你一定牢牢记住: Mathematica中大写小写是有区别的,如Name、name、NAME等是不同的变量名或函数名。 系统所提供的功能大部分以系统函数的形式给出,内部函数一般写全称,而且一定是以大写英文字母开头,如Sin[x],Conjugate[z]等。 乘法即可以用*,又可以用空格表示,如2 3=2*3=6 ,x y,2 Sin[x]等;乘幂可以用“^”表示,如x^0.5,Tan[x]^y。 自定义的变量可以取几乎任意的名称,长度不限,但不可以数字开头。 当你赋予变量任何一个值,除非你明显地改变该值或使用Clear[变量名]或“变量名=.”取消该值为止,它将始终保持原值不变。 一定要注意四种括号的用法:()圆括号表示项的结合顺序,如(x+(y^x+1/(2x)));[]方括号表示函数,如Log[x],BesselJ[x,1];{}大括号表示一个“表”(一组数字、任意表达式、函数等的集合),如{2x,Sin[12 Pi],{1+A,y*x}};[[]]双方括号表示“表”或“表达式”的下标,如a[[2,3]]、{1,2,3}[[1]]=1。 Mathematica的语句书写十分方便,一个语句可以分为多行写,同一行可以写多个语句(但要以分号间隔)。当语句以分号结束时,语句计算后不做输出(输出语句除外),否则将输出计算的结果。 一.数的表示及计算 1.在Mathematica中你不必考虑数的精确度,因为除非你指定输出精度,Mathematica总会以绝对精确的形式输出结果。例如:你输入 In[1]:=378/123,系统会输出Out[1]:=126/41,如果想得到近似解,则应输入 In[2]:=N[378/123,5],即求其5位有效数字的数值解,系统会输出Out[2]:=3.073 2,另外Mathematica还可以根据你前面使用的数字的精度自动地设定精度。 Mathematica与众不同之处还在于它可以处理任意大、任意小及任意位精度的数值,如100^7000,2^(-2000)等数值可以很快地求出,但在其他语言或系统中这是不可想象的,你不妨试一试N[Pi,1000]。 Mathematica还定义了一些系统常数,如上面提到的Pi(圆周率的精确值),还有E(自然对数的底数)、I(复数单位),Degree(角度一度,Pi/180),Infinity(无穷大)等,不要小看这些简单的符号,它们包含的信息远远大于我们所熟知的它们的近似值,它们的精度也是无限的。 二.“表”及其用法 “表”是Mathematica中一个相当有用的数据类型,它即可以作为数组,又可以作为矩阵;除此以外,你可以把任意一组表达式用一个或一组{}括起来,进行运算、存储。可以说表是任意对象的一个集合。它可以动态地分配内存,

mathematica教程

Mathematica 5.0使用教程目录 第1章Mathematica概述 (3) 1.1 运行和启动:介绍如何启动Mathematica软件,如何输入并运行命令 (3) 1.2 表达式的输入:介绍如何使用表达式 (5) 1.3 帮助的使用:如何在mathematica中寻求帮助 (6) 第2章Mathematica的基本量 (8) 2.1 数据类型和常量:mathematica中的数据类型和基本常量 (8) 2.2 变量:变量的定义、变量的替换、变量的清除等 (10) 2.3 函数:函数的概念,系统函数,自定义函数的方法 (12) 2.4 表:表的创建,表元素的操作,表的应用 (15) 2.5 表达式:表达式的操作 (16) 2.6 常用符号:经常使用的一些符号的意义 (19) 第3章Mathematica的基本运算 (19) 3.1 多项式运算:多项的四则运算,多项式的化简等 (19) 3.2 方程求解:求解一般方程,条件方程,方程数值解以及方程组的求解 (21) 3.3 求积、求和:求积与求和 (24) 第4章函数作图 (25) 4.1 二维函数作图:一般函数的作图,参数方程的绘图 (25) 4.2 二维图形元素:点、线等图形元素的使用 (29) 4.3 图形样式:图形的样式,对图形进行设置 (31) 4.4 图形的重绘和组合:重新显示所绘图形,将多个图形组合在一起 (33) 4.5 三维图形的绘制:三维图形的绘制,三维参数方程的图形,三维图形的设置 (36) 第5章微积分的基本操作 (42) 5.1 函数的极限:如何求函数的极限 (42)

5.2 导数与微分:如何求函数的导数、微分 (43) 5.3 定积分与不定积分:如何求函数的不定积分和定积分,以及数值积分 (45) 5.4 多变量函数的微分:如何求多元函数的偏导数、微分 (47) 5.5 多变量函数的积分:如何计算重积分 (49) 第6章微分方程的求解 (51) 6.1 微分方程的解:微分方程的求解 (51) 6.2 微分方程的数值解:如何求微分方程的数值解 (53) 第7章Mathematica程序设计 (54) 7.1 模块:模块的概念和定义方法 (54) 7.2 条件结构:条件结构的使用和定义方法 (56) 7.3 循环结构:循环结构的使用 (59) 7.4 流程控制 (61) 第8章Mathematica中的常用函数 (63) 8.1 运算符和一些特殊符号:常用的和不常用一些运算符号 (63) 8.2 系统常数:系统定义的一些常量及其意义 (63) 8.3 代数运算:表达式相关的一些运算函数 (64) 8.4 解方程:和方程求解有关的一些操作 (65) 8.5 微积分相关函数:关于求导、积分、泰勒展开等相关的函数 (65) 8.6 多项式函数:多项式的相关函数 (66) 8.7 随机函数:能产生随机数的函数函数 (67) 8.8 数值函数:和数值处理相关的函数,包括一些常用的数值算法 (67) 8.9 表相关函数:创建表,表元素的操作,表的操作函数 (68) 8.10 绘图函数:二维绘图,三维绘图,绘图设置,密度图,图元,着色,图形显示等函数 (69) 8.11 流程控制函数 (72)

mathematica实用教程

mathematica实用教程

此文档9.0.1.0版的mathematica为例,侧重函数作图、方程求解、置信区间等方面,仅限学习交流。 以后更新在blog:https://www.doczj.com/doc/a115656364.html,/post/228eea_1507ef1,email:misaraty@https://www.doczj.com/doc/a115656364.html,。 misaraty 2014.8.9

mathematica简介 (1) 特殊字符插入(希腊字母、积分号、运算符号...) . (3) 特殊排版插入(上下标、根号...) (4) 运算的执行和中断 (4) 已完成计算的简单调用 (4) 数的类型及表达 (4) 数型之间的转换 (5) 系统中常见的数学常量 (6) 函数与变量的命名规则 (7) 变量赋值和变量替换 (7) 表的使用方法 (7) 四则运算 (7) 初等函数 (8) 常用函数 (8) 函数的定义与输入格式 (8) 分段函数 (9) 绘制函数图形 (10) 数据组的绘图 (15) 图形的合并与排列 (16) 计算极限 (17) 求函数导数 (17) 求函数的积分 (18) 求解微分方程 (18) 计算行列式 (19) 方程的求解 (19) 曲线拟合及回归分析 (20) 描述统计 (22) 置信区间 (23) 参考文献 (24)

mathematica简介 mathematica界面: mathematica是美国wolfram research公司于1988年开发的数学计算软件,目前有中文版,人们称之“数学草稿纸”,具有数值计算(计算过程和结果不包含任何未知数/代数,以具体的数值形式进行)、符号计算(运算过程包含代数的运算)及作图功能,每个输入命令需要全名(输入时会有列表提示),还有强大的帮助-参考资料中心等,为数学外学科提供智力支持。

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下在结束输入后才显

Mathematica教程3

绘制函数f(x,y)在平面区域上的三维立体图形的基本命令是Plot3D,Plot3D和Plot的工作方式和选项基本相同。ListPlot3D可以用来绘制三维数字集合的三维图形,其用法也类似于listPlot,下面给出这两个函数的常用形式。 Plot3D[f ,(x,xmin,xmax),(y,ymin,ymax)] 绘制以x和y为变量的三维函数/的图形ListPlot3D[{Z11,Z12,…},{Z21,Z22,…},…..]] 绘出高度为Zvx 数组的三维图形 Plot3D同平面图形一样,也有许多输出选项,你可通过多次试验找出你所需的最佳图形样式。

1.三维绘图举例 (1).函数sin(x+y)cos(x+y)的立体图

(2).对于三维图形中Axes、Axeslabel、Boxed等操作同二维图形的一些操作很相似。用PlotRange设定曲线的表面的变化范围。 (3).图形轴上加上标记,且在每个平面上画上网格。

(4).视图的改变 学习过画法几何或工程制图的都知道,制图时通常用三视图来表示一个物体的具体形状特性。我们在生活中也知道从不同观察点观察物体,其效果是很不一样的。Mathematica在绘制立体图形时,在系统默认的情况下,观察点在(1.3,-2.4,2)处。这个参考点选择是具有一般性的,因此偶尔把图形的不同部分重在一起也不会发生视觉混乱。 下面例子改变观察视点。

从上面我们可以看出,观察点位于曲面的上方有利于看清对于图形全貌。对于较复杂的图形,我们在所绘的图形上包括尽可能多的曲线对于我们观察很有帮助。同时,在曲面的周围直接绘出立方体盒子也有利于我们认清曲面的方位。 (6).下面是没有网格和立体盒子的曲面图,它看起来就不如前面的图形清晰明了。 (7).下图给出没有阴影的曲面

mathematica5教程

Mathematica5教程 第1章Mathematica概述 1.1 运行和启动:介绍如何启动Mathematica软件,如何输入并运行命令1.2 表达式的输入:介绍如何使用表达式 1.3 帮助的使用:如何在mathematica中寻求帮助 第2章Mathematica的基本量 2.1 数据类型和常量:mathematica中的数据类型和基本常量 2.2 变量:变量的定义,变量的替换,变量的清除等 2.3 函数:函数的概念,系统函数,自定义函数的方法 2.4 表:表的创建,表元素的操作,表的应用 2.5 表达式:表达式的操作 2.6 常用符号:经常使用的一些符号的意义 第3章Mathematica的基本运算 3.1 多项式运算:多项的四则运算,多项式的化简等 3.2 方程求解:求解一般方程,条件方程,方程数值解以及方程组的求解3.3 求积求和:求积与求和 第4章函数作图 4.1 二维函数作图:一般函数的作图,参数方程的绘图 4.2 二维图形元素:点,线等图形元素的使用 4.3 图形样式:图形的样式,对图形进行设置 4.4 图形的重绘和组合:重新显示所绘图形,将多个图形组合在一起 4.5 三维图形的绘制:三维图形的绘制,三维参数方程的图形,三维图形的 设置 第5章微积分的基本操作 5.1 函数的极限:如何求函数的极限 5.2 导数与微分:如何求函数的导数,微分 5.3 定积分与不定积分:如何求函数的不定积分和定积分,以及数值积分5.4 多变量函数的微分:如何求多元函数的偏导数,微分 5.5 多变量函数的积分:如何计算重积分 5.6 无穷级数:无穷级数的计算,敛散性的判断 第6章微分方程的求解 6.1 微分方程的解:微分方程的求解 6.2 微分方程的数值解:如何求微分方程的数值解 第7章Mathematica程序设计 7.1 模块:模块的概念和定义方法 7.2 条件结构:条件结构的使用和定义方法

相关主题
文本预览
相关文档 最新文档