定积分的求解主要命令是Integrate[f,{x,min,max}], 或者使用工具栏输入也可以。例如求?x2eaxdx
?44In[6]:=Integrate[x^2Exp[ax],{x,-4,4}] Out[6]=
128e3ax
显然这条命令也可以求广义积分,例如求?In[7]:=Integrate[1/(x-2)^2,{x,0,4}] Out[7]=∞
求无穷积也可以,例如???401(x-2)2dx:
1x41dx:
In[8]:=Integrate[1/x^4,{x,1,Infinity}] Out[8]=
13
如果广义积分发散也能给出结果,例如: In[9]:=Integrate[1/x^2,{x,-1,1}] Out[9]= ∞
如果无法判定敛散性,就用给出一个提示,例如: In[10]:=Integrate[1/x,{x,0,2}] Integrate::idiv: Integral of Out[10]=?201x does not converge on {0,2}.
1xdx ??如果广义积分敛散性与某个符号的取值有关,它也能给出在不同情况下的积分结果。例如?In[11]:=Integrate[1/x^p,{x,1,Infinity}] Out[11]=If[Re[p]>1,1-1+p1xp1dx:
,Integrate[x–,{x,1,∞},Assumptions→Re[p]≤1]]
p结果的意义是当p >1时,积分值为1-1+p,否则不收敛。在Integrate中可加两个参数Assumptions 和
GenerateConditions例如上例中,只要用Assumptions->{Re[p]>1}就可以得到收敛情况的解:
In[12]:=Integrate[1/x^p,{x,1,Infinity},Assumptions->{Re[p]>1}] Out[12]=
1-1+p
3. 数值积分
数值积分是解决求定积分的另一种有效的方法,它可以给出一个近似解。特别是对于用Integrate命令无法求
46
出的定积分,数值积分更是可以发挥巨大作用。
它的命令格式为:
Nintegrate[f,{x,a,b}] 在[a,b]上求f数值积分
Nintegrate[f,{x,a,x1,x2,…,b}] 以x1,x2….为分割求[a,b]上的数值积分 Nintegrate[f,{x,a,b},MaxRecursion->n] 求数值积分时指定迭代次数n
下面我们求Sinsinx在[0,π]上的积分值,由于这个函数的不定积分求不出,因此使用Integrate命令无法得到具体结果,但可以用数值积分求:
In[13]:=Nintegrate[Sin[Sin[x]],{x,0,Pi}] Out[13]=1.78649
如果积分函数存在不连续点,或存在奇点我们可对积分进行分段求解。例如函数1|x|在[-1,1]上,显然x=0点是一个无穷间断点。因此若要求其数值积分,必须在其中插入点0。
In[14]:=NIntegrate[1/Sqrt[Abs[x]],{x,-1,1}] Nintegrate::inum:Integrand
1Abs[x] is not numerical at {x} = {0.}.
Out[14]=Nintegrate[
1Abs[x],{x,-1,1}] In[15]:=NIntegrate[1/Sqrt[Abs[x]],{x,-1,0,1}] Out[15]=4. 对无穷积分,也可求数值积分,例如: In[16]:=Nintegrate[Exp[-x^2],{x,0,Infinity}] Out[16]=0.886227 5.4 多变量函数的微分 下面是计算多变量函数的偏导数及全微分的命令与单变量基本相同,通过分析下面的例子我们可以我们可以轻松掌握。 ( 1 ) D[f,x1, x2 ,…, x n ]计算偏导数下面是实际的例子:
求函数sin(xy 2)对x的偏导数: In[1]:=D[Sin[x*y^2],x] Out[1]=y 2 Cos[xy 2 ]
?f?x1?x2??xnn 47
求函数sin(xy 2)对x的二阶偏导数: In[2]:=D[Sin[x*y^2],x,x] Out[2]= -y Sin[xy ] 上述命令也可写成如下形式: In[3]:=D[Sin[x*y^2],{x,2}] Out[3]= -y 4 Sin[xy 2 ]
求函数sin(xy)对x的二阶对y的一阶混合偏导数: In[4]:=D[Sin[x*y^2],x,x,y]
Out[4]= -2xy Cos[xy ] - 4y Sin[xy ] 上述命令也可写成如下形式: In[5]:=D[Sin[x*y^2],{x,2},y]
Out[5]= -2xy 5 Cos[xy 2] - 4y 3Sin[xy 2] ( 2) D[f,x,NonConstants->{c1 ,c 2 ,…}],下面是实际的例子:
In[6]:=D[x^2+y^2,x,NonConstants->{y}] Out[6]=2x+2yD[y,x,NonConstants→{y}] 注意:D[y,x,NonConstants→{y}]表示 ( 3 ) Dt[f] 计算全微分df 下面是实际的例子: 计算d(x 2 y 3) In[7]:=Dt[x^2*y^3]
Out[7]=2xy 3 Dt[x]+3x 2 y 2 Dt[y] 其中Dt[x]为dx,Dt[y]为dy 定义z为一个二元函数,求z的全微分,并提出Dt[x]和Dt[y]: In[8]:=z=x^3*y+x^2*y^2-3x*y^2;Collect[Dt[z],{Dt[x],Dt[y]}] Out[8]=(3x 2 y -3y 2 +2xy 2 )Dt[x]+(x 3 – 6xy+2x 2 y)Dt[y] 将上式表示成的标准形式: In[9]:=%/.{Dt[x]->dx,Dt[y]->dy} Out[9]= dy(x 3 – 6xy+2x 2 y)+ dx(3x 2 y -3y 2 +2xy 2 ) 求z对x的导数: In[10]:=Dt[z,x]
Out[10]=3x 2 y -3y 2 +2xy 2 +x 3 Dt[y,x] -6xyDt[y,x]+2x 2 yDt[y,x]
因为Mathematica不知道y是否为x的函数,所以保留Dt[y,x]。用置换运算将Dt[y,x]置换成0即可求得z对x
48
5
2
3
2
24
2
?f?x中ci依赖于x
?y?x,其中y是x的函数。
的导数:
In[11]:=Dt[z,x]/.Dt[y,x]->0 Out[11]=3x y -3y +2xy ( 4) 求隐函数的导数 下面是实际的例子:
求隐函数5y 2 + siny= x 2的导数: In[12]:=Dt[5*y^2+Sin[y]==x^2,x] Out[12]=10yDt[y,x]+Cos[y]Dt[y,x]==2x In[13]:=Solve[%,Dt[y,x]] Out[13]={{Dt[y,x]→
2x10y+Cos[y]2
2
2
}}
( 5 ) Dt[f,x,Constants->{c1 ,c 2 ,…}]计算全微分df , 其中ci是常数 下面是实际的例子:
In[14]:= Dt[x^2+y^2+z^2,x,Constants->{z}] Out[14]=2x+2yDt[y,x,Constants→{z}]
( 6 ) Dt[f, x1, x2 ,…, x n ]计算f对xi的多重全微分 下面是实际的例子:
In[15]:= z=x^3*y+x^2*y^2-3x*y^2; In[16]:=Dt[z,x,y]
Out[16]=3x– 6y + 4xy + 6xyDt[x,y] + 2y Dt[x,y] – 6xDt[y,x] + 2x
2
2
2 2
Dt[y,x]
+ 3x Dt[x,y]Dt[y,x] – 6yDt[x,y]Dt[y,x] + 4xyDt[x,y]Dt[y,x]
5.5 多变量函数的积分 (重积分)
多变量函数的积分类似于一元函数的积分,可以利用Integrate函数来完成。命令如下: Integrate[f,{x,a,b},{y,c,d},…{z,m,n}] 计算重积分?bad?c??f(x,y,?,z)dz?dydx
mnNintegrate[f,{x,a,b},{y,c,d},…{z,m,n}] 数值积分或重积分的数值解 下面是具体的例子: 计算重积分??1x?y?1122dxdy
In[1]:=
??x+y+1dxdy
49
Out[1]=21+yArcTan[x1+y]+xLog[1+x+y]
2我们也可以直接输入Integrate命令进行积分,但要注意x与y的顺序: In[2]:=Integrate[1/(x^2+y+1),y,x] Out[2]= 21+yArcTan[abx1+y2]+xLog[1+x+y]
2计算二重积分?0?0(x?y)dxdy:
2In[3]:= Integrate[x^2+y^2,{x,0,a},{y,0,b}] Out[3]=ab(a2+b2)
31y的积分限也可以是x的函数:
In[4]:= Integrate[x^2+y^2,{x,0,a},{y,0,x^2}] Out[4]=
a55+a721
以下是数值积分的例子:
在重积分中,无法求出某个变量的积分值,会求出可积的部分,再输出运算结果。 In[5]:= Integrate[Sqrt[x+y],{x,0,2},{y,0,Sqrt[x+2]}] Out[5]=1960(7692–4622 1/ 4–10242-4602 3/ 4–2430Log[3]+1215Log[1+22 1/ 4 +22])
将上式转换成数值解: In[6]:=N[%] Out[6]=4.65557 直接利用NIntegrate命令求解,也可以得到相同的答案: In[7]:= NIntegrate[Sqrt[x+y],{x,0,2},{y,0,Sqrt[x+2]}] Out[7]=4.65557 以下是一个三重积分?2?2??x24y?x?2y?x2x?zdzdydx:
22In[8]:=Off[Nintegrate::slwcon];Nintegrate[Sqrt[x^2+z^2],{x,-2,2},{y,x^2,4},{z,-Sqrt[y-x^2],Sqrt[y-x^2]}] Out[8]=26.8083 注意:命令Off[Nintegrate::slwcon]的作用是不显示提示信息。
50