关于MATLAB的一道问题。找出下面方程的极值点: f(x; y) = x^2+y^2-x*y^2-4 确定哪些是极大值极小值。

找出下面方程的极值点:f(x;y)=x^2+y^2-x*y^2-4确定哪些是极大值,哪些是极小值。要有MATLAB程序。... 找出下面方程的极值点:
f(x; y) = x^2+y^2-x*y^2-4
确定哪些是极大值,哪些是极小值。
要有MATLAB程序。
展开
tianxiawulang
2012-11-27 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:3189万
展开全部
只有一个极值点(0,0),为极小值点。程序及说明见下。

% 定义函数
syms x y
f = x^2+y^2-x*y^2-4;

% 首先根据df/dx=0, df/dy=0求出驻点
J = jacobian(f,[x y]);
[X Y] = solve(J(1),J(2));

% 对所有的驻点,计算黑塞矩阵及其行列式
% 从黑塞矩阵行列式可见,驻点(0,0)是极值点,而另外两个是鞍点
% 又进一步根据(0,0)处f对x而阶导数为正可判断,该点为局部极小点
J2 = jacobian(J.',[x y]);
for i=1:length(X)
H = subs(J2,{x,y},{X(i),Y(i)})
d = det(H)
end

% 画出局部极小点附近的曲面
ezmesh(f,[-.5 .5])
追问
谢谢你的答案,不过我们没有学hessian matrix相关的内容,能不能用求一阶二阶导数的方法做呢?
追答
黑塞矩阵实际上就是由四个二阶导数构成的2x2矩阵。
判断一个驻点是极值点或鞍点需要用到它,不太好绕开。
当然,也可以写成二阶导数的表达式,具体可参见wiki上面的条目(不贴链接了,贴链接经常会导致回答无法提交,恶心的百度知道)。

或者你换用下面的代码吧。
f_x = diff(f,x);
f_y = diff(f,y);
[X Y] = solve(f_x,f_y)

f_xx = diff(f_x,x);
f_xy = diff(f_x,y);
f_yx = diff(f_y,x);
f_yy = diff(f_y,y);

d = f_xx*f_yy - f_xy*f_yx
for i=1:length(X)
subs(d,{x,y},{X(i),Y(i)})
end
老伍7192
2012-11-27 · TA获得超过9878个赞
知道大有可为答主
回答量:3195
采纳率:83%
帮助的人:1471万
展开全部
x*y^2是x*(y^2)还是(xy)^2
追问
X*(Y^2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式