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