用MATLAB求函数的极值,求解答
3个回答
2016-03-21
展开全部
syms x y
f=y^3/9+3*x^2*y+9*x^2+y^2+x*y+9;
fx=diff(f,x);
fy=diff(f,y);
[x0,y0]=solve(fx,fy,[x,y]);
if isempty(x0)
error('函数不存在极值点!');
end
fxx=diff(fx,x);
fyy=diff(fy,y);
fxy=diff(fx,y);
for k=1:length(x0)
fv=limit(limit(f,x,x0(k)),y,y0(k));
A=limit(limit(fxx,x,x0(k)),y,y0(k));
B=limit(limit(fxy,x,x0(k)),y,y0(k));
C=limit(limit(fyy,x,x0(k)),y,y0(k));
if A*C-B^2>0
if A<0
disp(['点[',char(x0(k)),', ', char(y0(k)),']是极大值点, 极大值为', char(fv)]);
else
disp(['点[',char(x0(k)),', ', char(y0(k)),']是极小值点, 极小值为', char(fv)]);
end
elseif A*C-B^2<0
disp(['点[',char(x0(k)),', ', char(y0(k)),']不是极值点']);
else
disp(['无法判断点[',char(x0(k)),', ', char(y0(k)),']是否极值点']);
end
end
运行结果为:
点[0, 0]是极小值点, 极小值为9
点[-1/3, -6]是极大值点, 极大值为22
点[5/6, -5/2]不是极值点
点[-7/6, -7/2]不是极值点
f=y^3/9+3*x^2*y+9*x^2+y^2+x*y+9;
fx=diff(f,x);
fy=diff(f,y);
[x0,y0]=solve(fx,fy,[x,y]);
if isempty(x0)
error('函数不存在极值点!');
end
fxx=diff(fx,x);
fyy=diff(fy,y);
fxy=diff(fx,y);
for k=1:length(x0)
fv=limit(limit(f,x,x0(k)),y,y0(k));
A=limit(limit(fxx,x,x0(k)),y,y0(k));
B=limit(limit(fxy,x,x0(k)),y,y0(k));
C=limit(limit(fyy,x,x0(k)),y,y0(k));
if A*C-B^2>0
if A<0
disp(['点[',char(x0(k)),', ', char(y0(k)),']是极大值点, 极大值为', char(fv)]);
else
disp(['点[',char(x0(k)),', ', char(y0(k)),']是极小值点, 极小值为', char(fv)]);
end
elseif A*C-B^2<0
disp(['点[',char(x0(k)),', ', char(y0(k)),']不是极值点']);
else
disp(['无法判断点[',char(x0(k)),', ', char(y0(k)),']是否极值点']);
end
end
运行结果为:
点[0, 0]是极小值点, 极小值为9
点[-1/3, -6]是极大值点, 极大值为22
点[5/6, -5/2]不是极值点
点[-7/6, -7/2]不是极值点
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
245672112346fghjkd
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
瓴
追问
你好,可以帮助我么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询