Out[9]=
2?3a?a1?a2
(5) 另外使用Cancel函数可以约去公因式 In[10]:=Cancel[p1/p2] Out[10]=2+a
两个多项式相除,总能写成一个多项式和一个有理式相加Mathematic中提供两个函数PolynomialQuotient和PolynomialRemainder分别返商式和余式。
例如:
x21?2x
In[11]:=PolynomialQuotient[x^2, 1+2x,x] Out[11]=?14?x2 商的整式部分
In[12]:= PolynomialRemainder[x^2, 1+2x,x] Out[12]=
14 商的余式部分
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函数例子:
21
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}] 3212-1-2-3468101214 Out[8]= - Graphics -
如上例通过图形可断定在x=5附近有另一根:
22
In[9]:=FindRoot[3*Cos[x]==Log[x],{x,5}] Out[9]= {x→5.30199}
2. 求方程组的根
使用Solve,NSolve和FindRoot也可求方程组的解,只是使用时格式略有不同,下面给出一个Solve函数的例子:
?2x?3y?9求解?
x?2y?1?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→?b?b?4ac2a2},{ x→?b?b?4ac2a2}} 这显然是不合理的,因为对不同的a,b,c方程的解有不同的情况,而上面只是给出部分解如果要解决这个问题可用Reduce命令,它可根据a,b,c的取值给出全部值。
In[12]:=Reduce[a*x^2+b*x+c==0,x] Out[12]= a≠0 && (x==?b?b?4ac2acb2|| x==?b?b?4ac2a2|| 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 x + cos 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]}]
2
2
23
Out[2]={{Sin[x]→0,Cos[x]→1},{Sin[x]→
45,Cos[x]→?35}}
3.3 求和与求积
在Mathematica中,数学上的和式符号?用Sum表示,连乘符号?用Product表示。下面列出求和与求积函数的形式和意义:
Sum[f,{i,imin,imax}] 求和
imax?i?iminf
Sum[f,{i,imin,imax,di}] 以步长di增加i求和
imaxjmaxSum[f,{i,imin,imax},{j,jmin,jmax}] 嵌套求和
??i?iminj?jminf
imaxProduct[f,{i,imain,imax}] 求积
?i?iminf
Product [f,{i,imin,imax,di}] 以步长di增加i求积
imaxjmaxProduct[f,{I,imin,imax},{j,jmin,jmax}] 嵌套求积
??i?iminj?jminf Nsum[f,{i,imin,Infinity}] 求
??i?imin?f近似值
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}]
?i?iminf近似值
24
Out[4]=
85735394989600
In[5]:=N[%] Out[5]=1.71828
第4章 函数作图
4.1 基本的二维图形
Mathematica在直角坐标系中作一元函数图形用下列基本命令: Plot[f,{x,xmin,xmax},option->value]
在指定区间上按选项定义值画出函数在直角坐标系中的图形 Plot[{f1,f2,f3,…},{x,xmin,xmax},option->value]
在指定区间上按选项定义值同时画出多个函数在直角坐标系中的图形 Mathematica绘图时允许用户设置选项值对绘制图形的细节提出各种要求。例如,要设置图形的高宽比,给图形加标题等。每个选项都有一个确定的名字,以“选项名->选项值”的形式放在Plot中的最右边位置,一次可设置多个选项,选项依次排列,用逗号隔开,也可以不设置选项,采用系统的默认值。
选项 说明 默认值 AspectRatio 图形的高、宽比 1/0.618 AxesLabel 给坐标轴加上名字 不加 PlotLabel 给图形加上标题 不加 PlotRange 指定函数因变量的区间 计算的结果 PlotStyle 用什么样方式作图(颜色,粗细等) 值是一个表 PlotPoint 画图时计算的点数 25
1. 举例 (1) 例如绘制f(x)?sinx2x?1的图形: In[1]:=f[x_]=Sin[x^2]/(x+1) Plot[f[x],{x,0,2Pi}] Out[1]=
Sin[x]1+x2
25