下面这个序列是以步长为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] 表示表头加入elem Append[list, elem] 表示在表尾加elem
Insert[list, elem, n/-n] 表示在正/倒数第n个位置插入elem
表的合并: Join[list1, list2, ...] 连接表list1, list2, ...
Union[list1, list2, ...] 去掉重复元素并排序后的合并(集合的并)
对于表的操作Mathematica提供了丰富的函数,详细的可以查阅后面的附录或者系统帮助。
2. 5 表达式
1. 表达式的含义
Mathematica 能处理数学公式,表以及图形等多种数据形式。尽管他们从形式上看起来不一样,但在Mathematica内部都被看成同种类型,即都把他们当作表达式的形式。Mathematica 中的表达式是由常量、变量、
16
函数、命令、运算符和括号等组成,它最典型的形式是f[x,y]。
2. 表达式的表示形式
在显示表达式时,由于需要的不同,有时我们需要表达式的展开形式,有时又需要其因子乘积的形式。在我们计算过程中可能得到很复杂的表达式,这时我们又需要对它们进行化简。常用的处理这种情况的函数就是变换表达式表示形式函数。
Expand[expr] 按幂次升高的顺序展开表达式 Factor[expr] 以因子乘积的形式表示表达式
Simplify[expr] 进行最佳的代数运算,并给出表达式的最少项形式 表达式(x+y) (x+y) 展开: In[1]:=Expand[(x+y)^4*(x+y^2)]
Out[1]=x 5 +4x 4 y+6x 3 y 2 +x 4 y 2 +4x 2 y 3 +4x 3 y 3 +xy 4 +6x 2 y 4 +4xy5 +y 6 还原上面的表达式为因子乘积的形式: In[2]:=Factor[%] Out[2]=(x+y) (x+y)
多项式表达式的项数较多,比较复杂,在显示时显得比较杂乱,而且在计算过程中没有必要知道全部的内容;或表达式的项很有规律,没有必要打印全部的表达式的结果,Mathematica提供了一些命令,可将它缩短输出或不输出。
expr//Short 或 Short[expr] 显示表达式的一行形式
Short[expr,n] 显示表达式的n行形式,命令后加一分号“;” 不输出结果 将表达式(1+x) 30展开,并仅显示一行有代表项的式子: In[3]:=Expand[(1+ x)^30]//Short Out[3]=1+30x+435x +4060x +<<23>>+4060x 将上式分成三行的形式展开: In[4]:=Short[Expand[(1+ x)^30],3] Out[4]=1+30x+435x 2 +4060x 3 +27405x 4 +
142506x 5 +<<19>>+142506x 2 5 + 27405x 2 6 +4060x 2 7 +435x 2 8 +30x 2 9 +x 3 0
把代数表达式变换到你所需要的形式没有一种固定的模式,一般情况下,最好的办法是进行多次实验,尝试不同的变换并观察其结果,再挑出你满意的表示形式。
2 32 7
4
2
4
2
+435x
2 8
+30x
2 9
+x
3 0
3. 关系表达式与逻辑表达式
我们已经知道“=”表示给变量赋值。现在我们来学习一些其它的逻辑与关系算子。关系表达式是最简单的逻辑表达式,我们常用关系表达式表示一个判别条件。例如:x>0,y=0。关系表达式的一般形式是:表达式+关系算子
17
+表达式。其中表达式可为数字表达式、字符表达式或意义更广泛的表达式,如一个图形表达式等。在我们实际运用中,这里的表达式常常是数字表达式或字符表达式。下面出Mathematica中的各种关系算子:
x==y 相等 x!=y 不相等 x>y 大于 x>=y 大于等于 x
下面是比较两个表达式的大小:
In[3]:=3^2>y+1 上面已设y=9 Out[3]= False
用一个关系式只能表示一个判定条件,要表示几个判定条件胡组合,必须用逻辑运算符将关系表达式组织在一起,我们称表示判定条件的表达式为逻辑表达式。
下面是常用的逻辑运算和它们的意义: ! 非 && 并 || 或 Xor 异或 If 条件
LogicalExpand[expr] 展开逻辑表达式 例如下面的例子说明它们的应用:
In[4]:=3*x^2 In[5]:=3*x^2 18 Out[5]=True 2.6 其他常用的符号 (term) 圆括号用于组合运算 f[x] 方括号用于函数 { } 花括号用于列表 [[i]] 双括号用于排序 % 代表最后产生的结果 %% 倒数第二次的算结果 %%%(k) 倒数第k次的计算结果 %n 例出行Out[n]的结果 第3章Mathematica的基本运算 3.1 多项式的表示形式 可认为多项式是表达式的一种特殊的形式,所以多项式的运算与表达式的运算基本一样,表达式中的各种输出形式也可用于多项式的输出。Mathematica提供一组按不同形式表示代数式的函数。 Expand[ploy] 按幂次展开多项式ploy ExpandAll[ploy] 全部展开多项式ploy Factor[ploy] 对多项式poly 进行因式分解 FactorTerms[ploy,{x,y,…}] 按变量 x,y,…进行分解 Simplify[poly] 把多项式化为最简形式 FullSimplify[ploy] 把多项式化简 Collect[poly,x] 把多项式poly按x幂展开 Collect[poly,{x,y…}] 把多项式poly按x,y….的幂次展开 1. 下面是一些例子 (1) 对x 8 -1 进行分解 In[1]:=Factor[x^8-1] Out[1]=(-1+x)(1+x)(1+x 2)(1+x4) (2) 展开多项式 (1+x) 5 In[2]:= Expand[(1+x)^5] Out[2]=1+5x+10x 2+10x 3+5x 4+x5 19 (3) 展开多项式 (1+x+3y) 4 In[3]:= Expand[(1+x+3y)^4] Out[3]=1+4x+6x+4x+x+12y+36xy+36xy+12xy+54y +108xy 2+54x 2y 2+108y 3+108xy 3+81y 4 (4) 展开并化简(2+x) 4 (1+x) 4 (3+x) 3 In[4]:= Simplify[Expand[(2+x)^4(1+x)^4(3+x)^3]] Out[4]=(3+x) (2+3x+x ) 3 2 4 2 3 4 2 3 2 2. 多项式的代数运算 多项式的运算有加、减、乘、除运算:+,-,*,/ 下面通过例子说明。 (1) 多项式相加 运算a 2 +3a+2与a+1相加(后面例子中也使用这两个多项式运算) In[5]:=(a^2+3*a+2)+(a+1) 括号可以不要 Out[5]= 3+4a+ a 2 或者In[5]:=p1= a^2+3*a+2;p2= a+1;p1+p2 Out[5]= 3+4a+ a 2 (2) 多项式相减 In[6]:=(a^2+3*a+2)-(a+1) Out[6]= 1+2a+ a 2 或者In[6]:=p1-p2 Out[6]= 1+2a+ a 2 (3) 多项式相乘 In[7]:=(a^2+3*a+2)*(a+1) Out[7]= (1+ a) (2+3a+ a2) 或者In[7]:=p1*p2 Out[7]= (1+ a) (2+3a+ a2) In[8]:=Expand[p1*p2] Out[8]=2+5a+4a 2+a 3 (4) 多项式相除 In[9]:=(a^2+3*a+2)/(a+1) Out[9]= 2?3a?a1?a2 或者In[9]:=p1/p2 20