Table[f,max] TableForm[list] 或list//TableForm Range[n] Range[n1,n2,d] 给出max个f的表 以表格格式显示一个表 生成一个{1,2,……,n}的列表 生成{n1,n1+d,n1+d,….,n2}的列表 Table[f,{i,imin,imax},{j,jmin,jmax},….] 生成一个多维表 下面给出x乘i的值的表,i的变化范围为[2,6]: In[1]:=Table[x*i,{i,2,6}] Out[1]={2x,3x,4x,5x,6x} In[2]:=Table[x^2,{4}] Out[2]={x2,x2,x2,x2}
用Range函数生成一个序列数: In[3]:=Range[10] Out[3]={1,2,3,4,5,6,7,8,9,10} 下面这个序列是以步长为2,范围从8到20: In[4]:=Range[8,20,2] Out[4]={8,10,12,14,16,18,20} 上面的参数变化都是只有一个,也可制成包括多个参数的表,下面生成一个多维表: In[5]:=Table[2i+j,{i,1,3},{j,3,5}] Out[5]={{5,6,7},{7,8,9},{9,10,11}} 使用函数TableForm可以以表格的方式输出 In[6]:=%//TableForm Out[6]//TableForm= 5 6 7 7 8 9 9 10 11 2)表的元素的操作 当t表示一个表时,t[[i]]表示t中的第i个子表。如果t={1,2,a,b}那么t[[3]]表示“a”。 In[1]:=t=Table[i+2,j{i,1,3},{j,3,5}] Out[1]={{7,9,11},{8,10,12},{9,11,13}} In[2]:=t[[2]] Out[2]={8,10,12} 函数 Prepend[list, elem] Append[list, elem] Insert[list,elem,n/-n] Join[list1,list2...] Union[list1,list2...] 功能 表示在表头添加元素elem 表示在表尾添加元素elem 表示在正/倒数第n个位置插入元素elem 连接表list1, list2 去掉重复元素并排序后的合并(集合的并)
1.2.5表达式
1)表达式的含义
Mathematica 能处理数学公式,表以及图形等多种数据形式。尽管他们从形式上看起来不一样,但在Mathematica内部都被看成同种类型,即都把他们当作表达式的形式。Mathematica 中的表达式是由常量、变量、函数、命令、运算符和括号等组成,它最典型的形式是f[x,y]。
9
2)表达式的表示形式
在显示表达式时,由于需要的不同,有时我们需要表达式的展开形式,有时又需要其因子乘积的形式。在我们计算过程中可能得到很复杂的表达式,这时我们又需要对它们进行化简。常用的处理这种情况的函数就是变换表达式表示形式函数。
函数 Expand[expr] Factor[expr] Simplify[expr] 功能 按幂次升高的顺序展开表达式 以因子乘积的形式表示表达式 进行最佳的代数运算,并给出表达式的最少项形式 3)关系表达式与逻辑表达式
下面是常用的关系运算和它们的意义: 关系运算符 x==y x!=y x>y x>=y x
In[4]:=3*x^2 In[5]:=3*x^2 10 4)其他常用的符号 符号 (term) f[x] {} [[i]] % %% %%%(k) %n 功能 圆括号用于组合运算 方括号用于函数 花括号用于列表 双括号用于排序 代表最后产生的结果 倒数第二次的算结果 倒数第k次的计算结果 例出行Out[n]的结果 1.2.6 编程初步 对于简单的计算,可以直接调用Mathematica内部函数完成,但是要完成一个指定的计算任务,往往还需要由自己来编制一些程序。Mathematica中提供了一般的程序流程完成的方式,包括顺序结构、条件结构和分支结构。下面就Mathematica的程序编制讲解一些初步的知识。 1)全局变量与局部变量 Mathematica 在工作时会自动启动一个程序,叫做\,它是负责计算和存储计算结果的程序。因此我们平常使用的变量都是全局变量,这些变量有这样的特点:一旦赋值它会作用于以后的计算,因而容易造成混乱。所以在复杂的程序设计中需要引进一些局部变量。在编写程序和函数时,如果用到了中间变量,一定要使用局部变量。坚决避免用全局变量作为函数或者程序的中间变量,否则很有可能出现不易发觉的错误。 局部变量与全局变量隔离开? 在Mathematica中,使用Module 结构可以解决这个问题,Module结构不但是分隔局部变量的机制,更重要的还是定义复杂函数或过程的机制,Module结构的形式如下: Module[ {局部变量列},表达式列] 其中,\局部变量列}\说明一个或者多个局部变量,后面的\表达式列\可以使用这些局部变量。对这些局部变量的操作不会影响到Module结构外的同名变量。 \表达式列\中的各表达式用分号分隔,整个Module结构返回表达式列中最后一个表达式的值。 Module 结构不但能调用Mathematica中的函数,还能调用自定义的函数。 例:定义一个函数,其自变量为一个数组,求出这个数组的最大值、最小值、平均值和方差。 In[1]:= f[x_List]:=Module[{M,m,E,D,t},M=Max[x]; m=Min[x]; E=Apply[Plus,x]/Length[x]; t=(x-E)^2; D=Sqrt[Apply[Plus,t]]/Length[x]; {M,m,E,D}]; f[{1,2,3,4,5,6,7,8}]//N Out[1]= {8.,1.,4.5,0.810093} 2)循环结构 11 (1)While[条件,表达式] \条件\是一个逻辑表达式,执行时系统先对条件求值,如得到结果为True,则求它的表达式值,然后重复上述过程,直到条件不满足为止,循环结束。 例:求平方小于100的最大的整数。 In[1]:= Clear[x]; x=0; While[x^2<=100,x=x+1]; x-1 Out[1]= 10 (2)For[i=1,i<=imax ,i++,表达式] 在For[ ]循环中,\表示循环变量,\表示循环变量从初值1 开始,\表示循环变量所能取的最大范围,\表示将i 的值增加一个单位。 例:求出前10个自然数的和L与前10个自然数的乘积S。 In[1]:= L=0;S=1; For[i=1,i<=10,i++, L=L+i; S=S*i;] L S Out[1]= 55 Out[2]= 3628800 (3)Do[表达式,循环描述] Do[ ]循环是一种数步式的循环方式,它需要在\循环描述\中指定步数。 例:将t=t^2+1从t=1开始执行3次。 In[1]:= Clear[t] t=1; Do[t=t^2+1,{3}] t Out[1]= 26 3)分支结构 (1)If [条件,表达式] If[条件,表达式],当\条件\为True时,求\表达式\的值;当\条件\为False 时,返回Null。 If[条件,表达式1,表达式2],当\条件\为True时,求\表达式\的值;当\条件\为False时,求\表达式2\的值。 例: In[1]:= abs[x_]:=If[x<0,-x,x] abs[-1] Out[1]= 1 (2)Which[条件1,表达式1,条件2,表达式2,…] In[1]:= a=2; 12 Which[a==1,x,a==2,b] Out[2]= b (3)Switch[判别表达式,模式1,表达式1,模式2,表达式2,…] 例:构造一个函数,当x被3整除时,函数值为a,当x关于3的模为1时,函数值为b,当x关于3的模为2时,函数值为c。 In[1]:= f[x_]:=Switch[Mod[x,3],0,a,1,b,2,c] f[1] f[2] f[3] Out[2]= b Out[3]= c Out[4]= a 4)转向结构 包括以下命令项: Break[ ] 用在For, While(Do不能使用)语句中,表示结束包含这个break表达式的最近循环,且以Null作为该结构的值。 函数 Continue[] Return Return[] Return[expr] 功能 立即结束包含这个Continue的循环,执行下一次循环。 从函数的求值过程中退出。 退出函数的求值,以Null作为当前函数值。 退出函数的求值,以expr作为当前函数值。 13