文档库 最新最全的文档下载
当前位置:文档库 › Mathematica 实习八

Mathematica 实习八

Mathematica 实习八
Mathematica 实习八

实习八 线性规划、数值计算与编程实验

实习目的

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)。

相关文档