的解。如上例若求 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}]
3 2 1
2
-1 -2 -3
4 6 8 10 12 14
Out[8]= - Graphics -
如上例通过图形可断定在 x=5附近有另一根: In[9]:=FindRoot[3*Cos[x]==Log[x],{x,5}] Out[9]= {x→5.30199}
5)求方程组的根
使用 Solve,NSolve 和 FindRoot 也可求方程组的解,只是使用时格式略有不同,下面给出 一个 Solve函数的例子:
?2x ? 3y ? 9 ? ? 2y ?1 x 求解 ?
In[10]:=Slove[{2*x+3*y==9,x-2*y==1},{x,y}]
Out[10]= {{x→3, y→1}}
6)求方程的全解
如果我们求 ax 2 +bx+c=0的根,我们用 Solve函数解的结果是: In[11]:=Solve[a*x^2+b*x+c==0,x]
2
?b? b ? 4ac ?b? b ? 4ac
2 2a Out[11]={{ x→ },{ x→ }} 2a
这显然是不合理的,因为对不同的 a,b,c 方程的解有不同的情况,而上面只是给出部分解如 果要解决这个问题可用 Reduce命令,它可根据 a,b,c的取值给出全部值。 In[12]:=Reduce[a*x^2+b*x+c==0,x]
2
?b? b ? 4ac ?b? b ? 4ac
2 2a Out[12]= a≠0 && (x== || x== || 2a
? c
a==0 && b≠0 && x== b ||c==0 && b==0 && a==0
因此 Solve,Roots只给出方程的一般解,而 Reduce函数数可以给出方程的全部可能解。
19
7)解条件方程
在作方程计算时,可以把一个方程看作你要处理的主要方程,而把其他方程作为必须满足的 辅助条件,你将会发现这样处理很方便。譬如在求解像 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]}]
4 ? 3
Out[2]={{Sin[x]→0,Cos[x]→1},{Sin[x]→ 5 ,Cos[x]→ 5 }}
8)求和与求积
? Sum表示,连乘符号 ? Product表示。下面列 在 Mathematica中,数学上的和式符号 用用
出求和与求积函数的形式和意义:
函数
Sum[f,{i,imin,imax}]
imax
功能
求和 i?imin
Sum[f,{i,imin,imax,di}]
Sum[f,{i,imin,imax},{j,jmin,jmax}]
? f
imax
以步长 di增加 i求和
? ? f
jmax
嵌套求和 i?imin j? j min
Product[f,{i,imain,imax}]
imax
求积 i?imin
Product [f,{i,imin,imax,di}]
Product[f,{I,imin,imax},{j,jmin,jmax}]
? f
imax
以步长 di增加 i求积
? ? ? f
? ?
jmax
f
嵌套求积 i?imin j? j min
Nsum[f,{i,imin,Infinity}]
求 i?imin
NProduct[f,{i,imin,Infinity}]
近似值
求 i?imin
? f 近似值
一些例子:
求 1到 9的奇数和:
In[1]:=Sum[2i-1,{i,1,9}] Out[1]=81
若下限是 1,可以省略:
20
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}]
8573539
Out[4]= 4989600
In[5]:=N[%] Out[5]=1.71828 2.2.3计算极限
Mathematica计算极限的命令是 Limit。
函数
Limit[expr,x>x0] Limit[expr,x>1]
功能
当 x趋向于 x0时求 expr的极限 当 x趋向于 x0时求 expr的左极限
Limit[expr,x>x0,Direction>1] 当 x趋向于 x0时求 expr的右极限
x0可以是常数,也可以是+∞、-∞.
2 x ? 2
例.求 lim
x?? 3x ? 6
In[1]:=Limit[Sqrt[x^2+2]/(3x-6),x->Infinity] Out[1]=
1 3
2 2
例.求lim sin x
x?0
x
In[2]:=Limit[Sin[x]^2/x^2,x->0]
Out[2]=1 例.求 lim?
x?0
ln x
x
In[3]:=Limit[Log[x]/x,x->0,Direction->-1] Out[3]= -∞
2.2.4求导
1)一元函数求导
Mathematica中求函数导数的命令
函数 D[f,x] D[f,x1,x2,…]
计算多重偏导数 计算导数 或
功能
df dx ? f?x
? f
n
?x1?x2??xn
21
D[f,{x,n}]
计算 n阶导数 d f
n
dx n
D[f,x,NonConstants->{v1,v2,…}]
例:
(1)求函数 sinx的导数。 In[1]:=D[Sin[x],x]
Out[1]=Cos[x]
(2)求函数 exsinx的 2阶导数。 In[2]:=D[Exp[x]*Sin[x],{x,2}] Out[2]=2e x Cos[x]
(3)假设 a是常数,对 sinax求导。 In[3]:=D[Sin[a*x],x] Out[3]=aCos[ax]
Mathematica也可以求未知函数的导数,通常结果使用数学上的表示法。 例:
In[10]:=D[x*g[x],x] Out[10]=g[x]+xg′[x] In[11]:=D[x*g[x],{x,4}] Out[11]=4g (3)[x]+xg (4)
[x] 对复合函数求导法则同样可用: In[12]:=D[g[h[x]],x]
Out[12]=g′[h[x]] h′[x]
如果要得到函数在某一点的导数值,可以把这点代入导数,如: In[13]:=D[Exp[x]*Sin[x],x]/.x->2 Out[13]=e 2 Cos[2]+e 2 Sin[2] In[14]:=N[%] Out[14]=3.64392
2)求隐函数、由参数方程定义的函数的导数
根据求导法则定义函数,调用函数进行计算。 例:求 x^2+2y^2=1确定的隐函数 y=y(x)的导数。 In[1]:= Clear[\
implyD[f_,x_,y_]:=Solve[D[f,x]==0,y'[x]](*定义求隐函数导数的函数*) implyD[x^2+2*y[x]^2-1,x,y]
Out[1]= {{(y^\\[Prime])[x]->-(x/(2 y[x]))}} 的导数。 例:求参数方程??y ? asint
In[2]:= parametricD[x_,y_,t_]:=D[y,t]/D[x,t] (*定义求参数方程导数的函数*)
parametricD[a*Cos[t],b*Sin[t],t] Out[2]= -((b Cot[t])/a)
22
计算导数 ,其中 v1,v2…依赖于
df dx
?x ? acost
1.3设计实验
例 1讨论数列 x1 ? a, x2 ? a ? a ,?, xn ? a ? xn?1,?,(a ? 0)的存在性。并计算该极 限。
取特殊值讨论该数列的存在性。利用递归迭代方法,分别采用 a=2,3,5时观察极限的存在 性。以 a=2为例,编程实现该数列的动画展示。 Clear[x,n,N] x[0]=0;
x[n_]=Sqrt[2+x[n-1]];
Manipulate[ListPlot[Table[x[n],{n,1,N}],AxesOrigin->{0,0.0},PlotStyle->PointSize[0.02],PlotRa nge->{{0,10},{0,3}}],{N,1,10,1}]
从图中可以看出,数列趋向 2。练习当 a=3和 5时的动画演示。
若极限存在,则极限满足 x ? a ? x,即 x ? a ? x,用 Solve[ ^2== + , ] 求解得
2
由于第一个解为负数不符合题意,所以极限为 (1? 1? 4a)。
例 2 演示网站
http://demonstrations.wolfram.com/InstantaneousRateOfChangeExploringMoreFunctionsWithThe FirstA/的程序,体会导数符号和值变化的几何意义。设曲线方程为 y ? (x ? e ) ,从 x ? 0 点出发,沿该曲线向右移动,试动态演示移动点的切线。
? x 2
2 3
1 2
23