5.1 mathematica程序设计——在高等数学中的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5 mathematica 程序设计(Ⅰ)

—— 在高等数学中的应用

(王积社)

研究问题:

用mathematic 设计程序.计算数学分析、高等代数的问题。

5.1 问题1:求二元多项式函数的极值。

5.1.1 理论基础:

在数学分析中有以下结论:

⑴ 极值与驻点

极值:设函数(,)z f x y =在点00(,)x y 的某个邻域内有定义,如果对在此邻域内除点00(,)x y 外的任意点(,)x y ,均有00(,)(,)f x y f x y <(或者00(,)(,)f x y f x y >),则称点00(,)x y 为函数(,)z f x y =的极大值点(或极小值点). 00(,)f x y 称为极大值(或极小值),极大值点和极小值点统称为极值点,极大值和极小值统称为极值。

驻点: 使(,)0,(,)0x y f x y f x y ==同时成立的实数点(,)x y 称为函数(,)z f x y =的驻点.

⑵ 极值存在的必要条件

设函数(,)z f x y =在点00(,)x y 的某个邻域内有定义,且存在一阶偏导数,如果00(,)x y 是极值点,则必有0000(,)0, (,)0x y f x y f x y ==.

⑶ 极值存在的充分条件

设函数(,)z f x y =在点00(,)x y 的某个邻域内具有二阶连续偏导数,且00(,)x y 是驻点. 设00(,)xx A f x y =,00(,)xy B f x y =,00(,)yy C f x y =,则

① 当20B AC -<时,点00(,)x y 是极值点,且当0A <时,点00(,)x y 是极大值点;当0A >时,点00(,)x y 是极小值点;

② 当20B AC ->时,点00(,)x y 不是极值点;

③ 当20B AC -=时,点00(,)x y 有可能是极值点也可能不是极值点. 5.1.1 算法描述:

根据上述结论,可以得到以下算法:

o 1 输入(,)z f x y =;

o 2 求(,)(,)x a x y f x y ='、(,)(,)y

b x y f x y =' 与

(,)(,)xx A x y f x y =、(,)(,)xy B x y f x y =、(,)(,)yy C x y f x y =;

o 3 求2(,)(,)(,)(,)P x y B x y A x y C x y =-

; o

4

解方程组:(,)0(,)0x

y f x y f x y ⎧⎪⎨⎪⎩

='=',取其实数解得到(,)z f x y =的驻点集

S ;

o 5 依次取每个00(,)x y S ∈,计算00(,)P x y ,依照极值存在的充分条来判断

00(,)x y 是否为极值点:

若00(,)0P x y >,则00(,)x y 不是极值点;

若00(,)0P x y <且00(,)0A x y <,则00(,)f x y 是极大值; 若00(,)0P x y <且00(,)0A x y >,则00(,)f x y 是极小值; 若00(,)0P x y =,则不能确定00(,)x y 是否为极值点; 5.1.3 相关的mathematic 命令

① D[f [x,y],x]

功能:求函数f(x,y) 对x 的偏导数。

②D[f[x,y], {x, n}]

功能: 求多元函数f(x,y)对x的n阶偏导数

③D[f [x,y],x,y]

功能:求多元函数f(x,y) 对x、y的混合偏导数。

④Solve[{eqn1, eqn2, …, eqnk}, {x1, x2,…, xk}]

功能:求多项式方程组{eqn1, eqn2, …, eqnk}的所有根, 当其中每个多项式方程的次数n<=4时, 给出所有根的准确形式, 否则,不一定能求出所有的根, 此时,命令输出形式为{ToRules[Roots[{eqn1, eqn2, …, eqnk}, {x1, x2,…, xk} ]]} 。

⑤ NSolve[{eqn1, eqn2, …, eqnk}, {x1, x2,…, xk}]

功能:求多项式方程组{eqn1, eqn2, …, eqnk}所有根的近似形式。

5.1.4 mathematic程序

Clear[f,g,x,y,p,a,b,p1,p2,s,s1,s2,A,B,C1];

f[x_,y_]:=x^3+y^3-3*x*y;

Print["函数f(x,y)=",f[x,y],"的可能极值点有 :"];

a=D[f[x,y],x];

b=D[f[x,y],y];

A[x_,y_]=D[f[x,y],{x,2}];

B[x_,y_]=D[f[x,y],x,y];

C1[x_,y_]=D[f[x,y],{y,2}];

p[x_,y_]=B[x,y]^2-A[x,y]*C1[x,y];

s=Solve[{a 0,b 0},{x,y}];

s2={};

k=Length[s];

For[

i=1,i≤k,i++,

x=x/.s[[i]];

y=y/.s[[i]];

If[Im[x]≠0&&Im[x]≠0,Continue[]];

s1={x,y};

]

k=Length[s2];

Print["经检验 :

For[

i=1,i

p1=N[p[x,y]];

Which[p1>0,

Print[" (",x,",",y,")不是极值点 ."],

p1<0 && A[x,y] < 0,

Print[" f(",x,",",y,")=",N[f[x,y]],"是

极大值 ."],

p1<0 && A[x,y] > 0,

Print[" f(",x,",",y,")=",N[f[x,y]],"是

极小值 ."],

p1==0,

Print[" (",x,",",y,")点不能确定 ."];

]

]

5.1.5 计算结果

改变f(x,y)的值,就可以求不同的二元多项式极值,但次数高于4时可能发

相关文档
最新文档