科学计算软件 第八章 微分运算
8.1 极限的计算 Mathematica中使用Limit命令来计算极限,它总是力求确定极限的准确值 Limit[f[x],x->a]: 计算 的值 例1 计算 Limit[(x^5-32)/(x^3-8),x->2] Factor[x^5-32] Factor[x^3-8]
8.1 极限的计算 可以利用Direction选项确定左、右极限的计算 Direction->1: 计算左极限,即x从左边趋近于a Limit的默认值为Direction->Automatic,除了在无穷远点外,方向为右极限。 对于非连续函数,最好指定Direction,采用默认值可能会得到不正确的结果
8.1 极限的计算 例2 考虑极限 如果没有选定方向,默认计算右极限 Limit[Abs[x]/x,x->0] Limit[Abs[x]/x,x->0,Direction->1] Limit[Abs[x]/x,x->0,Direction->-1]
8.1 极限的计算 例3 Mathematica也可以计算无穷极限及在无穷远点处的极限 Limit[1/x,x->0,Direction->-1] Limit[1/x,x->0,Direction->1] Limit[(2x^2+3x+4)/(x^2+1),x->Infinity,Direction->-1]
8.1 极限的计算 例4 当x趋向某点时极限不存在,但f(x)有界时,Limit命令会返回一个区间[{min,max}],表示值的范围在此区间之内 Limit[Sin[1/x],x->0] Limit[Tan[1/x],x->0]
习题解答 8.6 如果每年支付利息n次,年利率为r,那么p美元在t年后变为p(1+r/n)^nt美元,假设如果连续计息(n->infinty),那么t年后钱数为多少? Limit[p(1 + r/n)^(n t), n -> Infinity]
习题解答 8.7 函数的导数定义为极限 利用这个定义计算f(x)=Logx+x^5+sinx的导数 8.7 函数的导数定义为极限 利用这个定义计算f(x)=Logx+x^5+sinx的导数 f[x_]=Log[x]+x^5+Sin[x]; Limit[(f[x+h]-f[x])/h,h->0]
习题解答 8.8 函数的2阶导数可以用 极限计算得到。 利用这个极限计算f[x]=lnx+x^5+sinx的2阶导数
习题解答 利用这个极限计算f[x]=lnx+x^5+sinx的2阶导数 f[x_]=Log[x]+x^5+Sin[x]; Limit[(f[x+h]-2f[x]+f[x-h])/h^2,h->0]
8.2 导数的计算 如果f[x]表示一个函数,那么它的导数表示为f'[x]。高阶导数用f''[x]、f'''[x]...等表示 例5 f[x_]=x^5+x^4+x^3+x^2+x+1 f'[x] f''[x] f'''[x]
8.2 导数的计算 撇号也可作用到内置函数上。 如果不给出参数,Mathematica就返回一个纯粹函数,表示所要求的导数(有关纯粹函数见附录A1) Sqrt' Sqrt'[x] Sqrt'' Sqrt''[x]
8.2 导数的计算 用撇号表示高阶导数并不方便 D[f[x],x]:返回f相应于变量x的导数 D[f[x],{x,n}]:返回f相应于变量x的n阶导数 例7 D[x^5+x^4+x^3+x^2+x+1,x] D[x^5+x^4+x^3+x^2+x+1,{x,2}] D[x^5+x^4+x^3+x^2+x+1,{x,3}]
8.2 导数的计算 计算导数,也可以使用模板上的偏导符号 返回相应于x的n阶导数 例8 D[(x^5+x^4+x^3+x^2+x+1),{x,3}]
8.2 导数的计算 Derivative[n]是一个算子,它作用到一个函数上,得到一个新的函数,即函数的n阶导数 Derivative[n][f]用纯粹函数的形式给出f的n阶导数 Derivative[n][f][x]计算f在x点的n阶导数,x为具体数或为符号 在Mathematica内部,f'被转化为Derivative[1][f]
8.2 导数的计算 例9 f[x_]:=x^5+x^4+x^3+x^2+x+1; Derivative[1][f] Derivative[1][f][x]
8.2 导数的计算 计算导数在特定点的多种方法,注意:=的用法 例10 f[x_]=(x^2-x+1)^5; f''[1] D[f[x],{x,2}]/.x->1 g:=Derivative[2][f] g[1] f[x_]=x^3
8.2 导数的计算 作为符号计算软件,Mathematica可以方便的进行公式推导,包括导数的运算法则 例 11 Clear[f,g] D[f[x]+g[x],x] D[f[x] g[x],x] D[f[x]/g[x],x]//Together D[f[g[x]],x]
8.2 导数的计算 例12 证明函数f[x]=(x^3+2x^2+15x+2)Sin[Pi x]在区间[0,1]上满足罗尔定理,求出定理中所声称的点c f[x_]= (x^3+2x^2+15x+2)Sin[Pi x] f[0] f[1] FindRoot[f'[c]==0,{c,0.5}] Plot[{f[x],f[.640241]},{x,0,1}]
中值定理 令f为有限闭区间[a,b]上的连续函数,并在开区间(a,b)上可微,则存在一个数c,介于a与b之间,使得f(b)-f(a)=f'(c)(b-a) 罗尔定理与中指定理都保证至少存在一个数c,实际中可能存在满足条件的多个数
中值定理 例13 对于函数f[x_]=Sqrt[x]+Sin[2Pi x],求出使得中值定理在区间[0,2]上成立的c值 a=0;b=2; m=(f[b]-f[a])/(b-a); Plot[f'[x]-m,{x,0,2},PlotRange->{-8,8}]
中值定理 FindRoot[f'[c]==m,{c,.3}] FindRoot[f'[c]==m,{c,.7}]
习题解答 8.11 在同一坐标系中绘出f(x)=x^4-50x^2+300及其导数在-10<=x<=10上的图形 <<Graphics`Legend` f[x_]=x^4-50x^2+300; Plot[{f[x],f'[x]},{x,-10,10},PlotStyle->{GrayLevel[0],Dashing[{.015}]},PlotLegend->{"f[x]","f'[x]"}];
习题解答 8.12 给定函数f(x),其图形为C,C在点a的切线斜率为f'(a)。令f(x)=sin x,画出函数图像及其在a=PI/3处的切线. 过点(x1,y1),斜率为m的直线方程为 y-y1=m(x-x1) 或 y=y1+m(x-x1) 切线斜率为m=f'(a),切线方程为 y=f(a)+f'(a)(x-a)
习题解答 8.12 给定函数f(x),其图形为C,C在点a的切线斜率为f'(a)。令f(x)=sin x,画出函数图像及其在a=PI/3处的切线. f[x_]=Sin[x]; a=Pi/3; l[x_]=f[a]+f'[a](x-a); Plot[{f[x],l[x]},{x,0,2Pi}];
8.3 最大值与最小值 称函数f在区间I中c点达到绝对最大值,指对I中所有点x, f(c) >=f(x)成立,即f(c)是f(x)在I上的最大值。 最小值可类似定义 最值定理:如果f为有界闭区间上的连续函数,则f在这个区间既具有绝对最大值,也具有绝对最小值 注意:最值是全局性的概念,极值是局部性概念
8.3 最大值与最小值 如果函数在有界闭区间[a,b]上连续,则其最大值和最小值出现在驻点或者区间端点 求最大值和最小值的步骤 (1).求驻点和不可导点; (2).求区间端点及驻点和不可导点的函数值,比较大小,哪个大哪个就是最大值,哪个小哪个就是最小值
8.3 最大值与最小值 例14 计算函数f[x_]=x^4-4x^3+2x^2+4x+2在区间[0,4]上的绝对最大值和最小值。首先求其临界点 f[x_]=x^4-4x^3+2x^2+4x+2; Solve[f'[x]==0] c1=0;c2=1;c3=1+Sqrt[2];c4=4; pointstocheck={{c1,f[c1]},{c2,f[c2]},{c3,f[c3]}, {c4,f[c4]}}//Expand TableForm[pointstocheck,TableHeadings->{None,{"x","f[x]"}}]
8.3 最大值与最小值 例15 一根线长100英寸,要用它构成一个正方形和一个圆形。请问如何分配,才能使它所围成的图形面积和 a)最大;b)最小 设正方形的边长为x,圆的半径为r 两个形状的组合面积为A(x)=x^2+Pi r^2 圆的周长为2Pir,正方形周长为4x 4x+2Pi r=100 0<=x<=25 还有其它设置变量的形式吗?书上为什么要这样处理?
8.3 最大值与最小值 Clear[a] Solve[4 x+2Pi r==100,r] (*从周长的约束中解出r关于x的表达式,*) a[x_]=x^2+Pi r^2/.r->-2(-25+x)/Pi (*定义面积函数a,自变量统一为x*) Solve[a'[x]==0] (*求出临界点*) x1=0; x2=100/(4+Pi) x3=25
8.3 最大值与最小值 pointstocheck= {{x1,a[x1],N[a[x1]]}, {x2,a[x2], N[a[x2]]},{x3,a[x3],N[a[x3]]}} //Together; TableForm[pointstocheck,TableHeadings->{None,{"x","a[x]","N[a[x]]"}}] (*列表给出驻点处的面积值*) Sign[a''[100/(4+Pi)]] (*使用二阶导数验证最小值*)
8.3 最大值与最小值 局部极值 FindMinimum[f[x],{x,x0}]:求出f(x)靠近x0点的局部极小值 如何求局部极大值? max( f(x))=-min(-f(x))
8.3 最大值与最小值 例16 函数f(x)=x+Sin 5x在区间[0,Pi]中有3个极大值点,2个极小值点 Plot[f[x],{x,0,Pi}] FindMinimum[f[x],{x,1}] FindMinimum[f[x],{x,2}] -FindMinimum[-f[x],{x,0.4}] -FindMinimum[-f[x],{x,1.6}] -FindMinimum[-f[x],{x,2.8}] -FindMinimum[-f[x],{x,2.8},Method->Newton]
习题解答 8.16 求出两个和为50的正数,使得第一个数的平方根加上第二个数的立方根尽可能大 y=50-x; f[x_]=Sqrt[x]+y^(1/3); Plot[f[x],{x,0,50}] NSolve[f'[x]==0] FindMinimum[-f[x],{x,40}]
习题解答 8.17 一个圆柱被单位球面所截。(a)求出最大可能的体积 (b)求出最大可能的表面面积 球面的大小是确定的,只需确定圆柱的半径即可 所截体积和面积以球的体积和面积为一个上界,当圆柱的半径趋于0时,所截体积和面积趋于0,所以所截得的体积和面积是有界的。 问题即求所截体积和面积的上确界。
习题解答 记被截圆柱的半径与高分别为r与h,被截圆柱的体积为 r与h的关系可由勾股定理求得 被截圆柱的体积V可表示为 1 r h/2
习题解答 v[h_]=Pi (1-(h/2)^2) h Solve[v'[h]==0,h] vmax=v[2/Sqrt[3]] Sign[v''[2/Sqrt[3]]]
习题解答 圆柱的表面积=侧面积+上下底面积 ,其中 ,由于S的表达式中同时出现r与r^2,使用r表示h更方便一些 Solve[r^2+(h/2)^2==1,h] (*用h表示r*) s[r_]=2Pi r h+2 Pi r^2/.h->2Sqrt[1-r^2] (*用r统一表示面积s*) Solve[s'[r]==0,r]//Simplify s[Sqrt[(5+Sqrt[5])/10]]//Simplify Sign[s''[Sqrt[(5 + Sqrt[5])/10]]]