>>[x,fvalue,flag,output]=fminsearch(f,[0,0])
Exiting: Maximum number of function evaluations has been exceeded
- increase MaxFunEvals option.
Current function value: -359212266339440800000000000000000000000000000000000000000000000000000000000000000000.000000
x =
1.0e+041 *
0.9523 -6.0686
fvalue =
-3.5921e+083
flag =
0
output =
iterations: 200
funcCount: 401
algorithm: 'Nelder-Mead simplex direct search'
message: [1x233 char]
当X=pi/3 y=pi/3 z有极大值 3/8*3^(1/2) %定义二元函数clcclear
syms x y
z=sin(x)*sin(y)*sin(x+y)
ezsurf(x,y,z,[0,pi/2,0,pi/2])
%求解驻点
dzx=diff(z,x)
dzy=diff(z,y)
[xx,yy]=solve('cos(x)*sin(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0',...
'sin(x)*cos(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0','x','y')
%对于定义域内的驻点求解二阶偏导函数
A=diff(z,x,2)
B=diff(diff(z,x),y)
C=diff(z,y,2)
D=A*C-B^2
%判别极大值点
D1=subs(subs(D,'x',xx(1)),'y',yy(1))
A1=subs(subs(A,'x',xx(1)),'y',yy(1))
D2=subs(subs(D,'x',xx(2)),'y',yy(2))
A2=subs(subs(A,'x',xx(2)),'y',yy(2))
%极大值点和极大值
[xx(2) yy(2)]
JDZ=subs(subs(z,'x',xx(2)),'y',yy(2)) 程序运行结果ans =
[ 1/3*pi, 1/3*pi]
JDZ =
3/8*3^(1/2)
1.F(x、y)分别对x,y求偏导,目的是联立偏导方程,找出驻点。
2.Fxx*Fyy和Fxy*Fyx的相对数值大小作为判断依据,目的就是,判断第一步中驻点是否为极值点。
二元(或都多元)极值的求法思想与一元完全类似,试回忆一元函数求极值:
1.f'(x)=0,找出驻点。
2.f''(x)判断,驻点是否为极值。
设函数 z = f ( x , y ) 在点 ( x 0 , y 0 ) 的某邻域内连续且有一阶及二阶连续偏导数 , 又
f x ( x 0 , y 0 ) = 0 ,
f y ( x 0 , y 0 ) = 0 ,
令
f xx ( x 0 , y 0 ) = A ,
f xy ( x 0 , y 0 ) = B ,
f yy ( x 0 , y 0 ) = C ,
则 f ( x , y ) 在 ( x 0 , y 0 ) 处是否取得极值的条件如下:
(1) AC - B^2 >0 时具有极值 , 且当 A <0 时有极大值 , 当 A >0 时有极小值
(2) AC - B^2 <0 时没有极值
(3) AC - B^2 = 0 时可能有极值 , 也可能没有极值 .
是否是极值需用其它方法,一般可结合图形判定
在函数 f ( x , y ) 的驻点处
如果 f xx × f yy - f xy ^2 >0 , 则函数具有极值 , 且
当 f xx <0 时有极大值 ,
当 f xx >0 时有极小值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)