实习八 线性规划、数值计算与编程实验
实习目的
1.会用Mathematica 求解线性规划问题;
2.能用Mathematica 求极值;
3.会利用Mathematica 进行数据拟合;
4.能利用Mathematica 进行函数插值;
5.会用Mathematica 编制简单的程序。 实习准备
一、线性规划
下列函数用于解线性规划问题:
ConstrainedMin[f ,{ineqns},{x ,y ,…}] 在不等式约束的区域上求多元线性函数的最小值。
ConstrainedMax[f ,{ineqns},{x ,y ,…}] 求最大值。
其中约定所有的自变量都非负,不等式可以使用各种不等号和等号。如果系数都是整数或分数,则答案也是整数或分数。
这两个函数有一个可选参数:
Tolerance 允许误差(默认值为10-6)。 例1 求解下面的线性规划问题。 (1)Max f =10x + 62y
s .t . ???
??
??<<<+>+5663
971y x y x y x
(2)Min f =1.5x + 2.5y
s .t .
?
?
?≥+≥+23
3y x y x (3)Max f =5x + 3y +2z +4t
s .t .
??
?=+++=+++10
23421085t z y x t z y x
解:In[1]:=ConstrainedMax[10x + 62y ,
{x + y > 1,x < 6,y < 5, 7x + 9y < 63}, {x ,y}] Out[1]={
7
2350,{x →
7
18,y →5}}
In[2]:=ConstrainedMin[1.5x + 2.5y ,
{x + 3y ≥ 3,x + y ≥ 2}, {x ,y}]
Out[2]={3.5,{x →1.5,y →0.5}}
In[3]:=ConstrainedMax[5x + 3y + 2z + 4t ,
{5x + y + z + 8t = = 10,2x + 4y + 3z + 2t = = 10}, {x ,y ,z ,t}] Out[3]={
3
40,{x →
3
5,y →
3
5,z →0,t →0}}
说明:上例In[1]说明,即使不等式使用严格的不等号,答案仍取在边界上。在In[2]中系数使用小数,则答案也是小数形式的。In[3]说明可以使用等号,但必须键入“= =”。
例2 求解下面的线性规划问题。
max f = x + 3y + 7z
s .t . ??
?
??<++≥+<-1053273z y x z x y x
解:In[1]:=ConstrainedMax[x + 3y + 7z ,
{x - 3y < 7,2x + 3z >= 5,x + y + z < 10}, {x ,y ,z}]
Out[1]={70,{x →0,y →0,z →10}}
此结果表明:当x = 0、y = 0和z = 10时,函数f (x ,y ,z )取得最大值70。
当自变量和约束不等式较多时,以上输入参数的方法就不合适了,需改用矩阵来输入数据,为此还有求解线性规划的函数。
LinearProgramming[c ,m ,b] 其中c 是行向量,b 是列向量,m 是矩阵,自变量用列向量x 表示,在满足不等式m x ≥b 且x ≥0的区域,求函数c x 的最小值点x 。
注意:实际输入时,b 仍以行向量表示。 例3 求解下面的线性规划问题。 (1)Min f =12x 1 + 8x 2 + 16x 3 + 12x 4
s .t .
?????≥≥++≥++0,,,3
4222424
321421
321x x x x x x x x x x (2)Min f =2x 1 - 10x 2
s .t .
?????≥-≥-≥-0,5
502
121
21x x x x x x 解:In[1]:=LinearProgramming[{12,8,16,12},{{2,1,4,0}, {2,2,0,4}},{2,3}]
Out[1]={
2
1,1,0,0}
In[2]:=LinearProgramming[{2,-10},{{1,-1},{1,-5}}, {0,-5}]
Out[2]={
4
5,
4
5}
说明:以上In[2]有无穷多解,但没有警告出现,In[1]为正常情况,复杂的系数矩阵可以由数据文件读入。
一、 极小值
函数FindMinimum 寻找一个函数的极小值点,其调用格式如下:
FindMinimum[f ,{x ,x 0}] 从x 0出发求未知量x 的函数f 的一个极小值点和极小值。
FindMinimum[f ,{x ,{x 0,x 1}}] 当函数无法自动求出符号导数时,必须给出两个初值x 0,x 1。
FindMinimum[f ,{x ,x 0},{y ,y 0},…] 求多元函数的一个极小值点和极小值。
例4 求下列函数的极值:
(1)函数y = x 3 – x 2 – x + 1的极小值和极大值, (2) 二元函数f (x ,y )=
x
xy y x 22
1232
2
--+
的极小值,
(3)函数y = | 2x | 的极小值。
解:In[1]:=FindMinimum[x^3 - x^2 – x + 1, {x ,0}] Out[1]={0.,{x →1}}
In[2]:=FindMinimum[ -(x^3 - x^2 – x + 1), {x ,0}]
Out[2]={-1.18519,{x → -0.333333}}
In[3]:=FindMinimum[3/2x^2 + y^2/2 – x y - 2x , {x ,100},{y ,100}] Out[3]={-1.,{x → -1.,y → -1.}}
In[4]:=FindMinimum[Abs[2x],{x ,100},Gradient →2Sign[x], WorkingPrecision →30,AccuracyGoal →20, MaxIterations →100]
Out[4]={4.4×10-22,{x → - 2.18113×10-22}} In[5]:=FindMinimum[Abs[2x],{x ,{100,-100}}, WorkingPrecision →30,AccuracyGoal →20, MaxIterations →100]
Out[5]={0,{x →0}}
说明:在上例中In[2]是求函数的极大值点,因为没有求极大值的函数,改求 - f 的极小值。In[3]求多元函数的极小值。In[4]说明可选参数的用法,提高精度必须增大迭代次数,由于Mathematica 不能自动求出导函数,必须人工给出。In[5]改用给出两个初始点。
二、 方程求根
1. 函数NSolve
函数NSolve 用于求代数方程(组)的全部近似解,其调用格式如下: NSolve[eqns ,vars ,n] 其中可选参数n 表示结果有n 位的精度。
例5 解方程(组):(1)x 5
- 2x + 1= 0,(2)???=-=+0
1322y x y x 。
解:In[1]:=NSolve[x^5 - 2x + 1= =0,x ,20] Out[1]={{x → -1.2906488013467096224},
{x → -0.1140706311645872998 -1.2167460039743506292ⅱ}, {x → -0.1140706311645872998+1.2167460039743506292ⅱ}, {x →0.5187900636758842219}, {x →1.0000000000000000000}}
In[2]:=NSolve[{x^2 + y^2 = =1,x^3 – y = =0},{x ,y}] Out[2]={
{y → -1.24808+0.465332ⅱ,x →0.659334+0.880844ⅱ}, {y →-1.24808-0.465332ⅱ, x →0.659334-0.8808844ⅱ}, {y →1.24808+0.468552ⅱ,x →-0.659334+0.880844ⅱ}, {y →1.24808-0.468552ⅱ,x →-0.659334-0.880844ⅱ }, {y → 0.563624, x →0.826031}, {y → -0.563624, x →-0.826031},
2. 函数FindRoot
能解类型更广泛的方程(组)的函数是FindRoot ,大多数情况下它使用牛顿迭代法,无法求出符号导数时使用弦截法,其调用格式如下:
FindRoot[eqn ,{x ,x 0}] 从x 0出发求未知量x 的方程eqn 的一个解。
FindRoot[eqn ,{x ,x 0,xmin ,xmax}] 如果超过区间[xmin ,xmax],则停止寻找。
FindRoot[eqn ,{x ,{x 0,x 1}}] 当方程无法求出符号导数时必须给出两个初值x 0,x 1。
FindRoot[{eqn1,eqn2,…},{x ,x 0},{y ,y 0},…] 求方程组的一个解。
例6 解方程(组):(1)100Sin x = x ,(2)???==+x
xe
y y x 122,(3)e |x |
= 2。 解:In[1]:=FindRoot[100Sin[x] = = x ,{x ,10}]
Out[1]={x →9.33133}
In[2]:=FindRoot[100Sin[x] = = x ,{x ,20}] Out[2]={x →19.0411}
In[3]:=FindRoot[{x^2 + y^2 = = 1,y = = x Exp[x]},{x ,.1},{y ,.5}] Out[3]={x →0.513489,y →0.858096}
In[4]:=FindRoot[Exp[Abs[x]] = = 2,{x ,{0,1}}]
Out[4]={x →0.693147}
说明:在上例中,In[1]和In[2]说明,取不同的初值可能得到不同的解。In[3]是解方程组,已经不是代数方程组了。In[4]是给出两个初值的例子,如果仅给一个初值则失败。
三、 函数插值
1. 插值多项式
函数InterpolatingPolynomial 求一个多项式,使给定的数据是准确的函数值,其调用格式如下:
InterpolatingPolynomial[{f 1,f 2,…},x] 当自变量x 为1,2,3,…时的函数值为f 1,f 2,…。
InterpolatingPolynomial[{{x 1,f 1},{x 2,f 2},…},x] 当自变量值为x i 时的函数值为f i 。
InterpolatingPolynomial[{{x 1,{f 1,df 1,ddf 1,…}},…},x] 规定x i 处的导数函数值。 如果给定n +1个数据,则结果是n 次多项式。
例7 由下列已知条件求插值多项式。 (1)
(2)
(3)当x = 1时,y = 2,y ′= 2,y ″= 1。
解:In[1]:=InterpolatingPolynomial[{1,2,-1,1},x] Out[1]=)1()2()3(23
211x x x +-???? ?
?
+-???
??
+-+
-++ In[2]:=InterpolatingPolynomial[{{0,1},{1,Exp[-1]}, {1/2,Exp[-1/2]}},x]
Out[2]=x x e e e e ???
? ??+--???? ??+--++-+)1(1
)11(212111
In[3]:=InterpolatingPolynomial[{{1,{2,2,1}}},x]
Out[3]=)1()1(21
22x x +-??
?
?
?+-+
+
说明:上例中的输出结果表明,所得答案是准确结果,而不是近似函数。其中In[3]是给出当x =1时的函数值和一、二阶导数值,由3个条件得到一个二次多项式。
2. 插值函数 (1) InterPolation
函数InterPolation 通过在数据点之间进行多项式插值,构造一个近似函数,与数据拟合不同,近似函数曲线总是通过已知的数据点,其调用格式如下:
InterPolation[{f 1,f 2,…}] 当自变量值为1,2,3,…时的函数值为f 1,f 2,…。
InterPolation[{{x 1,f 1},{x 2,f 2},…}] 当自变量值为x i 时的函数值为f i 。
InterPolation[{{x 1,{f 1,df 1,ddf 1,…}},…}] 规定x i 处的导数函数值。 如果构造多元近似函数,只要将参数改为:
{x i ,y i ,…,f i } 或 { x i ,y i ,…,{f i ,{dxf i ,dyf i ,…}}} 此外还有可选参数:
InterPolationOrder →n 指定插值多项式的次数(默认值为3)。
执行后返回的结果是形如:InterPolationFunction[domain ,table]的插值函数,虽然形式特殊,但能当做普通函数名(如sin )一样理解:
InterPolatingFunction[domain ,table][x] 就是求x 处的函数值。 不过无法直接键入或拷贝上式,使用时还应另起一个函数名来表示它。 例8 给出数据表如下:
生成插值函数及其图形,并求当x = 27.1时的函数值。
解:In[1]:= data={{19.1,76.3},{25,77.8},{30.1,79.25},{36,80.8},
{40,82.35},{45.1,83.9},{50,85.1}}; f=Interpolation[data]
Out[2]= InterpolatingFunction[{{19.1,50.}},< >] In[3]:= pd=ListPlot[data ,DisplayFunction →Identity];
fd=Plot[f[x],{x ,19.1,50},DisplayFunction →Identity]; Show[{pd ,fd},DisplayFunction →$DisplayFunction]
图13-47 插值函数的图形
Out[5]= -Graphics-
In[6]:=f[27.1]
Out[6]=78.3938
说明:上例中生成的插值函数是用f表示的,Out[2]给出插值函数的定义域是[19.1,50],自变量可以用任何字符表示。由图13-47可知,给定的数据点在函数曲线上。
(2)ListInterpolation
函数ListInterpolation由自变量取网格点时对应的函数值表构造一个插值函数,使已知点处的近似函数的值等于已知值,其调用格式如下:
ListInterpolation[list,{{ x1,x2,…},{ y1,y2,…}}] 其中list是由网格点{ x i,y j}对应的函数值组成的表(类似可推广到三元以上)。
ListInterpolation[list,{{ xmin,xmax},{ymin,ymax}}] 自变量取指定区间上的等分点。
ListInterpolation[{{ f11,f12,…},{ f21,f22,…},…}] 只给出list,则自变量默认为取正整数。
例9观察下面的插值函数。
In[1]:=f1=ListInterpolation[
{{1.1,1.2,0.8},{0.2,0.9,1.3},{0.5,-0.7,1.4}},
{{0,1,1.5},{-1,0,2}},InterpolationOrder→2]
f2=ListInterpolation[
{{1.1,1.2,0.8},{0.2,0.9,1.3},{0.5,-0.7,1.4}},
InterpolationOrder→2]
Out[1]=InterpolatingFunction[{{0.,1.5},{-1.,2.}},< >]
Out[2]=InterpolatingFunction[{{1.,3.},{1.,3.}},< >]
In[3]:=f1[1.5,0]
Out[3]= -0.7
In[4]:=f2[3,2]
Out[4]= -0.7
In[5]:=f1[1.2,-0.3]
Out[5]=0.31516
In[6]:=f2[1.5,2.3]
Out[6]=1.26538
说明:以上生成插值函数时,因为数据太少,因此设置插值多项式的次数为2。其中f1与f2的区别是,后者的自变量取默认值。本例的目的是说明给定数据的格式与对应关系,同时说明已知点处的近似函数的值等于给定的值。
下例是第二种参数格式:
例10观察下面的插值函数。
In[1]:= f=ListInterpolation[
{{1.1,1.2,0.8},{0.2,0.9,1.3},{0.5,-0.7,1.4}},
{{0,1.5},{-1,2}},InterpolationOrder→2]
Out[1]=InterpolatingFunction[{{0.,1.5},{-1.,2.}},< >]
In[2]:=f [0.75,0.5]
Out[2]=0.9
说明:使用第二种参数格式时,自变量取指定区间上的等分点。以上例子中,定义域的中心是(0.75,0.5),对应list[ [2,2] ]。
(3)FunctionInterpolation
函数FunctionInterpolation用于由普通函数或已存在的近似函数生成一个新的近似函数,其调用格式如下:
FunctionInterpolation[expr,{x,xmin,xmax},{y,ymin,ymax},…] 其中第一个参数是函数表达式,后面的参数指定函数的定义域。
例11观察下面的插值函数。
In[1]:= data=Table[Sin[x-2y],{x,-2.,2.},{y,-2.,2.}];
f=ListInterpolation[data,{{-2,2},{-2,2}}]
Out[2]=InterpolatingFunction[{{-2.,2.},{-2.,2.}},< >]
In[3]:= g=FunctionInterpolation[f[Cos[2πt],Sin[2πt]],
{t,0,1}]
Out[3]= InterpolatingFunction[{{0,1}},< >]
In[4]:=Plot[{g[t],f[Cos[2πt],Sin[2πt]]},{t,0,1},
PlotStyle→{RGBColor[1,0,0],RGBColor[0,0,1]}]
图13-48 比较两个函数差异的图形
Out[4]=-Graphics-
说明:上例中第一步生成一个二元近似函数,第二步使用FunctionInterpolation由复合函数生成一个新的近似函数,用以简化复合函数的计算过程。第三步同时绘制复合函数与它们的近似函数图形,如图13-48所示两者相差不大。
四、数据拟合
由一组已知数据(x k,y k)(k=1,2,…,n),求函数的近似解析式y=f(x),就是数
据拟合问题,当然函数还可以是多元的。
Mathematica提供了进行数据拟合的函数:
Fit[data,funs,vars] 对数据data用最小二乘法求函数表funs中各函数的一个线性组合作为所求的近似解析式,其中vars是自变量或自变量的表。
例如:
Fit[data,{1,x},x] 求形为y=a+bx的近似函数式。
Fit[data,{1,x,x2},x] 求形为y=a+bx+cx2的近似函数式。
Fit[data,{1,x,y,x y},{x,y}] 求形为z=a+bx+cy+dxy的近似函数式。
以上出现的参数data的格式为{{x1,y1,…,f1},{x2,y2,…,f2},…}。
函数表中的函数还可以是更复杂的初等函数。
例12由下面给出的一组数据进行线性拟合,并绘制拟合曲线。。
解:In[1]:=data={{19.1,76.3},{25,77.8},{30.1,79.25},{36,80.8},
{40,82.35},{45.1,83.9},{50,85.1}};
f=Fit[data,{1,x},x]
Out[2]=70.5723+0.291456x
In[3]:= pd=ListPlot[data,DisplayFunction→Identity];
fd=Plot[f,{x,19,52},DisplayFunction→Identity];
Show[pd,fd,DisplayFunction→$DisplayFunction]
图13-49 线性拟合的示意图
Out[5]=-Graphics-
说明:上例使用一次函数得到很理想的拟合,图形如图13-49所示。
例13由下面给出的一组数据进行二次函数拟合,并绘制拟合曲线。
解:In[1]:= data={{0.1,5.1234},{0.2,5.3057},{0.3,5.5687},
{0.4,5.9378},{0.5,6.4337},{0.6,7.0978},
{0.7,7.9493},{0.8,9.0253},{0.9,10.3627}};
f=Fit[data,{1,x,x^2},x]
Out[2]=5.30661-1.83196x+8.17149x2
In[3]:= pd=ListPlot[data,DisplayFunction→Identity];
fd=Plot[f,{x,0,1},DisplayFunction→Identity];
Show[pd,fd,DisplayFunction→$DisplayFunction]
图13-50 使用二次函数拟合的示意图
Out[5]= -Graphics-
以上两例都是计算方法教材中的习题,利用Mathematica可以轻而易举地得到答案,并同时画出图形以便直观地了解拟合的质量。
以下是二元拟合。
例14观察下面的二元函数拟合。
In[1]:=Flatten[Table[{x,y,1 + 5x –x y},
{x,0,1,0.2},{y,0,1,0.2}],1]
Out[1]={{0,0,1},{0,0.2,1},{0,0.4,1},
{0,0.6,1},{0,0.8,1},{0,1.,1},
{0.2,0,2.},{0.2,0.2,1.96},{0.2,0.4,1.92},
{0.2,0.6,1.88},{0.2,0.8,1.84},{0.2,1.,1.8},
{0.4,0,3.},{0.4,0.2,2.92},{0.4,0.4,2.84},
{0.4,0.6,2.76},{0.4,0.8,2.68},{0.4,1.,2.6},
{0.6,0,4.},{0.6,0.2,3.88},{0.6,0.4,3.76},
{0.6,0.6,3.64},{0.6,0.8,3.52},{0.6,1.,3.4},
{0.8,0,5.},{0.8,0.2,4.84},{0.8,0.4,4.68},
{0.8,0.6,4.52},{0.8,0.8,4.36},{0.8,1.,4.2},
{1.,0,6.},{1.,0.2,5.8},{1.,0.4,5.6},
{1.,0.6,5.4},{1.,0.8,5.2},{1.,1.,5.}}
In[2]:=Fit[%,{1,x,y,x y},{x,y}]
Out[2]=1.+5. x+7.77156×10-16 y -1. x y
In[3]:=Chop[%]
Out[3]= 1.+ 5. x -1. x y
说明:在上例的In[1]中,首先生成二元函数1+5x-xy在0≤x≤1,0≤y≤1时的一个数据
表,然后In[2]由这些数据反过来求二元函数,说明Fit 可以求解多元问题。In[3]使用函数Chop 去掉系数很小的项,以此消除误差。 函数Chop 的一般形式为:
Chop[expr ,δ] 去掉表达式expr 的系数中绝对值小于δ的项,δ的默认值为10-10。 最后这个例子用于说明Fit 的第二个参数中可以使用复杂的函数,不限于1,x ,x 2等基本类型。
例15 观察下面使用初等函数组合进行的拟合。 In[1]:= ft=Table[N[1+2Exp[-x/3]],{x ,10}]
Out[1]={2.43306,2.02683,1.73576,1.52719,1.37775, 1.27067,1.19394,1.13897,1.09957,1.07135} In[2]:=Fit[ft ,{1,Sin[x],Exp[-x/3],Exp[-x]},x] Out[2]= 1. -4.44089×10-15e -x +2.e -x/3+2.22045×10-16Sin[x] In[3]:=Chop[%] Out[4]=1. +2. e -x/3
说明:在上例中,In[1]由一个指数函数生成数据表,然后In[2]由这些数据反过来进行拟合,其中的第2个参数使用了几个初等函数,用于说明可以任意选用函数组成函数表。
五、 Mathematica 编程
Mathematica 具有很强的编程能力。与其它高级语言相似可以方便的进行流程控制。在其它高级语言中较困难的表达式处理问题,在Mathematica 中则非常简单。使用Mathematica 求解数学问题,编程比其它程序设计语言简单得多。
1. 条件控制
Mathematica 提供了许多设置条件的方法,给编程带来很大的灵活性。下面列出常用的条件语句。
(1) If[cond ,then ,else] 如果cond 为true ,计算then ,否则计算else 。
(2) Which[cond1,value1,cond2,value2,…] 依次计算condi ,给出对应第1个cond 为true 的value 值。
(3) lhs :=rhs/;cond 如果cond 为true ,定义lhs 为rhs 。
(4) Switch[expr ,form1,value1,form2,value2,…,def] 比较expr 与formi ,给出第1个form 与expr 匹配的value 值,若全不匹配,给出值def 。
例16 定义一个阶梯函数??
?>≤-=0
,
10,
1)(x x x f 。
解:用If 语句
f [x_ ]:= If [x>0,1,-1] 也可用 /;cond
f[x_ ]:= 1/;x>0; f[x_ ]:= -1/;x<=0
例17 定义符号函数??
?
??>=<-=0
,10,
00,1)(x x x x g 。 解:用If 语句
g[x_ ]:= If[x<0,-1,If[x>0,1,0]] 用Which 语句
g[x_ ]:= Which[x<0,-1,x= =0,0,x>0,1]
例18 定义函数r (x )为x 除3余0时为a ,余1时值为b ,余2时值为c 。 解: r[x_ ]:= Switch[Mod[x ,3],0,a ,1,b ,2,c] 2. 循环控制
Mathematica 程序的执行包括对一系列Mathematica 表达式的计算。对简单程序表达式的计算可用“;”来分开,然后一个接一个的进行计算。然而,我们常常需对同一表达式计算多次,此时用循环结构则会使程序代码大为简化。
(1) Do 循环
Do[expr ,{i ,min ,max ,d}] 计算表达式expr ,其中i 从min 到max ,步长为d 。 Do[expr ,{n}] 计算表达式expr 共n 次 说明:当min=1,d=1时可省略min ,d 。
例19 重复执行对t 的定义,取i =2,…,6,步长为2。 解:In[1]:= t = x ;
Do[t=1/(1 + k t ),{k ,2,6,2}]; t Out[1]=
x
2141611+++
例20 计算2i ,i =1,2,…,8。 解:In[2]:=Do[Print[2^i],{i ,8}] 2 4 8
… 256 例21 设f (x )=
x
+11,求f (x )复合3次的函数f (f (f (x )))。
解:In[3]:= t = x ;
Do[t=1/(1+t ),{3}]; t Out[3]=
x
+++
111111
例22 观察下面两个变量的循环。
In[4]:= Do[Print[{i ,j}],{i ,4},{j ,i - 1}] {2,1} {3,1} {4,1} {4,2} {4,3} (2) While 循环
While[cond ,expr] 只要cond 为True ,就重复计算expr 。
例23 已知n 0=17,求n i +1=??
?
???2i n ,i =0,1,…,直到n i 为0。
解:In[5]:= n = 17;
While[(n=Floor[n/2])! =0,Print[n]] 8 4 2 1
(3) For 循环
For[start ,test ,incr ,expr] 以start 为初值,重复计算expr 和incr 直到test 为False 为止。
例24 计算3n +1,n =1,2,3,4,5。 解:In[6]:=For[n=1,n<6,n++,Print[3n+1]] 4 7 10 13 16
例25 当i 2<10不成立时就中止循环。
解:In[7]:=For[i=1;t=x ,i^2<10,i++,t=t^2+i ;Print[t]] 1+x 2
2+(1+x 2)2
3+(2+(1+x 2)2)2
注意While 和For 循环,总是在执行循环体前,完成对循环条件的测试。一旦测试结果为False ,就终止循环。
在循环过程中,有时需要根据循环的执行结果来控制流程,这时用到下述控制流程函数: Break[ ] 退出最里面的循环。 Continue[ ] 转入当前循环的下一步。
Return[expr] 退出函数中的所有过程及循环,并返回expr 的值。
例26 观察下面退出循环的例子。 In[8]:= t = 1;
Do[t=t k ;Print[t];If [t >19,Break[ ]],{k ,10}] 1 2 6 24
习题13.7
1.求解下列线性规划。 (1) max f = - x 1 + 2x 2
s.t. ???
??≥≥+≤+0,325
2
12121x x x x x x
(2) max f = 5x 1 + 4x 2 + 8x 3
s.t.??
?
??
??≥≤+-≥+-=++0,,15354
2623212121321x x x x x x x x x x
2.求极值。
(1)求函数y =
x x
10004000+在区间[0.1,10]上的最小值。
(2)求函数y = 800 - 1120x + 354x 2 - 35x 3 + x 4在区间[0,15]上的最大值和最小值。 (3)求原点到曲面z = xy + x – y + 4的最短距离。
3.求方程x sin x +cos x –sin x - 2x = 0在区间[-1,1]上的一个近似根。 4.求方程x 3 - 6x 2 – 2x + 12 = 0的根。
5.一种合金在某种添加剂的不同浓度之下做实验,得数据如下表:
求二次多项式插值函数。
6.下表是某年美国旧轿车价格的调查资料,设x i 表示轿车的使用年数,y i 表示相应的平均
价格。
以ln y = a + bx 作拟合曲线进行拟合。 7.用Mathematica 编程计算1+
2
1 +
3
1+…+
n
1的前10,20,…,100项和的近似值(要
求结果为6位有效数字)。
复习题十三
8.求下列极限:
(1)x
tgx x 4sin 1lim 4
-→
π
; (2)x
x x x cos sec )1ln(lim
2
-+→;
(3))1(lim 1
-∞
→x x e x ;
(4)x
x arctgx ?
?
?
??+∞→π2lim 。
9.求下列导数:
(1) sin n x cos nx ; (2) 1
1-+x x arctg
;
(3)
x
x x x -+
+--+1111; (4) f (sin 2 x )+f (cos2x );
(5)cos 2 x ln x 求y ″; (6)ln (f (x )) 求y ″。 10.
求下列积分:
(1)???
?
??-
dx
x x x 211; (2)?
+dx x x x
arctg )
1(;
(3)?xdx e x 2sin ; (4)?++dx x x x )
()1(1
2
22;
(5)
?+3
1
2
2
1x x
dx ; (6)?e
dx x 1
)sin(ln ;
(7) ?
∞
+∞
-++dx
x x 2
21
2
; (8)?+∞
-0
sin tdt e at β (α>0,β>0)。
11.
求下列偏导数:
(1) z =x ln (xy ),求y
x z ???23
和
2
3
y
x z ???;
(2) z =f (sin x ,cos y ,e x +y
),求2
2
x
z ??;
(3) z =arctg y
x ,x = u +v ,y =u -v ,求
v
z u
z
??+
??。
12.
求下列各类积分:
(1) ??
+1
2
2x
dy y x dx ;
(2) ??
?
---+++10
10
3
10
)
1(1
y
x x
dz z y x dy dx ;
(3) ???Ω
dv z 2,其中Ω是两个球:x 2 + y 2 + z 2 ≤R 2和x 2 + y 2 + z 2 ≤2Rz 的公共部分;
(4) 求两个曲面z =225y x --和x 2 + y 2 =4z 所围成立体的体积;
(5) 求半径为R 的匀质球:x 2 + y 2 + z 2 ≤R 2对于位于点M 0(0,0,a )(a >R )处的
单位质量的质点的引力;
(6) ?+L
ds y x )(22,其中L 为曲线x = a (cos t +t sin t ),y = a (sin t -t cos t ),(0≤t ≤2π);
(7) ?-+L
ydz zdy dx x 2,其中L 为曲线x = k θ,y = a cos θ,z = a sin θ上对应θ从0到π
的一段弧;
(8) ?+++
++L
dy y
y x dx x
y 2)1(12ln
2
,其中L 是正方形 -1≤x ≤1,-1≤y ≤1的正向边界;
(9) ??S
zdxdy y x 22,其中S 是球心在原点、半径为R 的球面的下半部分的下侧;
(10)??-+-+-S
dxdy y x dzdx x z dydz z y )()()(222,其中S 是锥面z =22y x +(0≤x ≤h )
的外侧。
13.
求下列级数的和:
(1)∑=n
k k 1
4
; (2)∑∞
=1
2k k x k ;
(3)∑
∞
=1
2
!
n n n
; (4)∑∞
=++-1
)!
12(1)1(n n
n n
14. 求tg x 和arccos x 在x 0=0处的幂级数展开式,取n = 15。 15.
解下列常微分方程:
(1)x
x y y y )
2ln (-=
'; (2)y ′sin x cos x – y - sin 3x = 0;
(3)y ″+ 7y ′+ 10y = x e -2x cos5x ; (4)y ″+ y ′=1 - x
sin 1;
(5)求
dt
dx = - 4x - 2y + 2e t ,
dt
dy =6x + 3y - 3e t ,满足初始条件x (1)=0,y (1)=1的解。
16. 计算行列式0
0000000002
2
2
da
cd
bc ab d
c
b d
c b
a a a 。
17.
已知A =?????
???????32
1
4
21431
4324321
,P =[1 -1 -1 1]T ,完成下列矩阵或向量的运算: (1) 求AP ,A 3,A -1,e A ,PP T ,P T P ; (2) 求A 的全部特征值和特征向量。
18.
λ取何值时,线性方程组??
?
??--=-+--=--+=-+-,
1)5(42,24)5(2,122)2(321321321λλλλx x x x x x x x x 有惟一解、无穷多解或无解?
在有解时求其解。 19.
已知B=???
?
?
???
??-20
012
031
,且A + B = AB ,求A 。
20.
求矩阵?????
????
???-----79
3
1
18133
211
1511的秩。 21. 由已知数据表:
求4次拟合多项式,并绘图进行比较。
22. 已知x = 0,2,3,5,6时的函数值为y = 1,3,2,5,6,求插值多项式,并绘图。 23. 由第25题的数据表得到插值函数,并绘图。 24. 求二重积分?
?
5
.01
.02
3
x
x
x y
dydx
e 。
25. 用两种方法求广义积分?+∞
∞
--xdx e
x
2
sin
2
的近似值。当求数值积分失败时,如何解决?
26. 找方程x = 0.5 + sin x 在1.5附近的根。 27. 求方程组??
?-=+=y
x y y x x sin 2.0cos 7.0cos 2.0sin 7.0在(0.5,0.5)附近的解。
28.
一个小火箭垂直起飞,它的高度h (t )满足常微分方程g
dt dh k m F dt
h d m ???
???????? ??--=2
22
,
其中推力F =3150kg ,火箭的质量m =1350-18t (kg ),阻力系数k =0.039kg ?s 2/m 2,g 是重力加速度。已知h (0)=0且h ′
(0)=0,求t =60s 时火箭的高度和速度。 29. 求x 2 + 2y 2 - 4x - 2xy 极小值。
30. 使用两个求解线性规划问题的函数,求
Min z = - 3x + y + z ,
x - 2y + z ≤11 s.t. - 4x + y + 2z ≥3
- 2x + z = 1
x ,y ,z ≥0
31.
某批产品长度(cm )服从正态分布N (50,0.252),求以下概率:(1)长度小于49.2;(2)长度在49.5与50.5之间。 32. 人的身高服从正态分布,从初一女生中随机抽取6名,测得身高(单位:cm )如下:149,158.5,152.5,165,157,142。求初一女生平均身高的置信区间(α=0.05)。 33. 岩石密度的测量误差服从正态分布,随机抽取12个样品,得到s = 0.2,求σ2的置信区间(α=0.1)。
34.
已知某一实验,其温度服从正态分布,现在测量了温度的5个值为:1250,1265,1245,1260,1275。问是否可以认为μ=1277(α=0.05)?
35.甲、乙两台车床生产同一种滚珠,从它们加工的滚珠中共抽取17个,测得直径(单位:mm)为:
甲:15.0 14.5 15.2 15.5 14.8 15.1 15.2 14.8
乙:15.2 15.0 14.8 15.2 15.0 15.0 14.8 15.1 14.8
假定滚珠的直径都服从正态分布,检验两台车床加工精度有无显著差异(α=0.05)。36.已知y对x1,x2,x3,存在线性回归关系,其中
x1——土壤内所含无机磷浓度,
x2——土壤内溶于碳酸钾溶液、并受溴化物水解的有机磷浓度,
x3——土壤内溶于碳酸钾溶液、但不受溴化物水解的有机磷浓度,
y——一种在土壤内的玉米中的可给态磷。
测得18组数据如下:
试求回归方程,并检验线性回归是否显著(α=0.05)。