Mathematica的基本运算解读
- 格式:pdf
- 大小:126.26 KB
- 文档页数:6
Mathematica的基本运算解读
第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
(3) 展开多项式(1+x+3y) 4
In[3]:= Expand[(1+x+3y)^4]
Out[3]=1+4x+6x 2+4x 3+x 4+12y+36xy+36x 2y+12x 3y+54y 2
+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) 3 (2+3x+x 2 ) 4
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+p2Out[5]= 3+4a+ a 2(2) 多项式相减
In[6]:=(a^2+3*a+2)-(a+1)
Out[6]= 1+2a+ a 2
或者In[6]:=p1-p2Out[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 23a a
1a ++
+
或者In[9]:=p1/p2Out[9]=
2 23a a
1a ++
+
(5) 另外使⽤Cancel函数可以约去公因式
In[10]:=Cancel[p1/p2]
Out[10]=2+a
两个多项式相除,总能写成⼀个多项式和⼀个有理式相加Mathematic中提供两个函数PolynomialQuotient和PolynomialRemainder分别返商式和余式。
例如:2 12 x
x +
In[11]:=PolynomialQuotient[x^2, 1+2x,x]
Out[11]=
1
42
x
-+商的整式部分
In[12]:= PolynomialRemainder[x^2, 1+2x,x]
Out[12]=1
4
商的余式部分3.2⽅程及其根的表⽰
因为Mathematica把⽅程看作逻辑语句。在数学⽅程式表⽰为形如“x 2 -2x -3=0”的形式。在Mathematica中“=”⽤作赋值语句,这样在Mathematica中⽤“==”(两个等号中间没有空格)表⽰逻辑等号,则⽅程应表⽰为“x^2 -2x -3==0”。⽅程的解同原⽅程⼀样被看作是逻辑语句。例如⽤Roots[lhs==rhs,vars]求⽅程x 2-3x+2=0的根显⽰为:In[1]:=Roots[x^2-3x+3==0,x]Out[1]=x==1||x==2 这种表⽰形式说明x取1或2均可
⽽⽤Solve[lhs==rhs,vars]可得解集形式:In[2]:=Solve[x^2-3x+3==0,x]
Out[2]={{x→1},{x→2}}
1 求解⼀元代数⽅程
下⾯是常⽤的⼀些⽅程求解函数:Solve[lhs ==rhs,vars] 给出⽅程的解集
NSolve[lhs ==rhs,vars] 直接给出⽅程的数值解集 Roots[lhs ==rhs,vars] 求表达式的根
FindRoot[lhs ==rhs,{x,x 0}] 求x 在x 0附近的⽅程的数值解 先看Solve 函数例⼦:
In[3]:=Solve[x^2-2x -3==0,x] Out[3]= {{x →-1},{x →3}}
Solve 函数可处理的主要⽅程是多项式⽅程。Mathematica 总能对不⾼于四次的⽅程进⾏精确求解,对于三次或四次⽅程,解的形式可能很复杂。
例如求x 3 +5x+3=0In[4]:=Solve[x^3+5x +3==0,x]
这时可⽤N 函数近似数值解: In[5]:=N[%]Out[5]= {{x →-0.5641},{x →0.28205-2.28881i},{x →0.28205+2.28881i}}
当⽅程中有⼀些复杂的函数时,Mathematica 可能⽆法直接给出解来。在这种情况下我们可⽤FindRoot[]来求解,但要给出起始条件。
例如求3Cosx=lnx 的解:In[6]:=FindRoot[3*Cos[x]==Log[x],{x,1}] Out[6]= {x →1.44726}
但只能求出x=1附近的解,如果⽅程有⼏个不同的解,当给定不同的条件时,将给出不同的解。如上例若求x=10附近的解命令为:In[7]:=FindRoot[3*Cos[x]==Log[x],{x,10}] Out[7]= {x →13.1064}
因此确定解的起始位置是⽐较关键,⼀种常⽤的⽅法是,先绘制图形观察后再解。 In[8]:=Plot[{3*Cos[x],Log[x]},{x,1,15}]
Out[8]= - Graphics -
如上例通过图形可断定在x=5附近有另⼀根: In[9]:=FindRoot[3*Cos[x]==Log[x],{x,5}] Out[9]= {x →5.30199}2.求⽅程组的根
使⽤Solve ,NSolve 和FindRoot 也可求⽅程组的解,只是使⽤时格式略有不同,下⾯给出⼀个Solve 函数的例⼦:
求解23921
x y x y +=??
-=?
In[10]:=Slove[{2*x+3*y ==9,x -2*y ==1},{x,y}] Out[10]= {{x →3, y →1}}
3求⽅程的全解
如果我们求ax 2 +bx+c=0的根,我们⽤Solve 函数解的结果是: In[11]:=Solve[a*x^2+b*x+c ==0,x]
Out[11]={{ x ,{ x 这显然是不合理的,因为对不同的a,b,c ⽅程的解有不同的情况,⽽上⾯只是给出部分
解如果要解决这个问题可⽤Reduce 命令,它可根据a,b,c 的取值给出全部值。In[12]:=Reduce[a*x^2+b*x+c ==0,x]
Out[12]= a ≠0 && (x ==2b a -|| x ==2b a
-a==0 && b ≠0 && x ==c
b
-
||c==0 && b==0 && a==0 因此Solve ,Roots 只给出⽅程的⼀般解,⽽Reduce 函数数可以给出⽅程的全部可能解。
4.解条件⽅程
在作⽅程计算时,可以把⼀个⽅程看作你要处理的主要⽅程,⽽把其他⽅程作为必须满⾜的辅助条件,你将会发现这样处理很⽅便。譬如在求解像x 4 + bx 2 +c = 0这样的⽅程时,通常我们采⽤x 2 = y 的代换⽅法,使求解⽅程得到简化。
在Mahematica 中,我们通常是⾸先命名辅助条件组,然后⽤名字把辅助条件包含在你要⽤函数Solve[] 求解的⽅程组中。
⽤Sc 定义⽅程:sin 2 x + cos 2 x = 1,在这种条件下,求解⽅程cosx + 2sinx = 1。 In[1]:=Sc=Sin[x]^2+Cos[x]^2==1Out[1]=Cos[x] 2 +Sin[x] 2 ==1
In[2]:=Solve[{Cos[x]+2Sin[x]==1,Sc},{Sin[x],Cos[x]}]Out[2]={{Sin[x]→0,Cos[x]→1},{Sin[x]→45,Cos[x]→35
-}}
3.3求和与求积
在Mathematica 中,数学上的和式符号∑⽤Sum 表⽰,连乘符号∏⽤Product 表⽰。下⾯列出求和与求积函数的形式和意义:Sum[f,{i,imin,imax}] 求和
max
min
i i i f =∑
Sum[f,{i,imin,imax,di}] 以步长di 增加i 求和
Sum[f,{i,imin,imax},{j,jmin,jmax}] 嵌套求和
max
max
min min j i i i j j f ==∑∑
Product[f,{i,imain,imax}] 求积
max
min
i i i f =∏
Product [f,{i,imin,imax,di}] 以步长di 增加i 求积
Product[f,{I,imin,imax},{j,jmin,jmax}] 嵌套求积
max
max
min min
j i i i j j f ==∏∏
Nsum[f,{i,imin,Infinity}] 求
min i i f ∞
=∑
近似值NProduct[f,{i,imin,Infinity}] 求min
i i f ∞
=∏
近似值
⼀些例⼦:
求1到9的奇数和: In[1]:=Sum[2i -1,{i,1,9}] Out[1]=81
若下限是1,可以省略: In[2]:=Sum[2i -1,{i, 9}] Out[2]=81
下式构造⼀个多项式: In[3]:=Sum[i*x^i,{i,1,9,2}] Out[3]=x +3x 3 +5x 5 +7x 7 +9x 9