资源描述
第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+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]=
或者In[9]:=p1/p2
Out[9]=
(5) 另外使用Cancel函数可以约去公因式
In[10]:=Cancel[p1/p2]
Out[10]=2+a
两个多项式相除,总能写成一个多项式和一个有理式相加Mathematic中提供两个函数PolynomialQuotient和PolynomialRemainder分别返商式和余式。
例如:
In[11]:=PolynomialQuotient[x^2, 1+2x,x]
Out[11]= 商的整式部分
In[12]:= PolynomialRemainder[x^2, 1+2x,x]
Out[12]= 商的余式部分
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=0
In[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函数的例子:
求解
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==|| x==||
a==0 && b≠0 && x==||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==1
Out[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]→,Cos[x]→}}
3.3求和与求积
在Mathematica中,数学上的和式符号用Sum表示,连乘符号用Product表示。下面列出求和与求积函数的形式和意义:
Sum[f,{i,imin,imax}] 求和
Sum[f,{i,imin,imax,di}] 以步长di增加i求和
Sum[f,{i,imin,imax},{j,jmin,jmax}] 嵌套求和
Product[f,{i,imain,imax}] 求积
Product [f,{i,imin,imax,di}] 以步长di增加i求积
Product[f,{I,imin,imax},{j,jmin,jmax}] 嵌套求积
Nsum[f,{i,imin,Infinity}] 求近似值
NProduct[f,{i,imin,Infinity}] 求近似值
一些例子:
求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
Mathematic可以给出和的精确结果:
In[4]:=Sum[1/n!,{n,1,11}]
Out[4]=
In[5]:=N[%]
Out[5]=1.71828
展开阅读全文