关于MATLAB的一道问题.找出下面方程的极值点:f(x;y-查字典问答网
分类选择

来自范晓虹的问题

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

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

  找出下面方程的极值点:

  f(x;y)=x^2+y^2-x*y^2-4

  确定哪些是极大值,哪些是极小值.

  要有MATLAB程序.

3回答
2020-05-12 22:42
我要回答
请先登录
马瑞军

  只有一个极值点(0,0),为极小值点.程序及说明见下.

  %定义函数

  symsxy

  f=x^2+y^2-x*y^2-4;

  %首先根据df/dx=0,df/dy=0求出驻点

  J=jacobian(f,[xy]);

  [XY]=solve(J(1),J(2));

  %对所有的驻点,计算黑塞矩阵及其行列式

  %从黑塞矩阵行列式可见,驻点(0,0)是极值点,而另外两个是鞍点

  %又进一步根据(0,0)处f对x而阶导数为正可判断,该点为局部极小点

  J2=jacobian(J.',[xy]);

  fori=1:length(X)

  H=subs(J2,{x,y},{X(i),Y(i)})

  d=det(H)

  end

  %画出局部极小点附近的曲面

  ezmesh(f,[-.5.5])

2020-05-12 22:44:08
范晓虹

  谢谢你的答案,不过我们没有学hessianmatrix相关的内容,能不能用求一阶二阶导数的方法做呢?

2020-05-12 22:45:52
马瑞军

  黑塞矩阵实际上就是由四个二阶导数构成的2x2矩阵。判断一个驻点是极值点或鞍点需要用到它,不太好绕开。当然,也可以写成二阶导数的表达式,具体可参见wiki上面的条目(不贴链接了,贴链接经常会导致回答无法提交,恶心的百度知道)。或者你换用下面的代码吧。f_x=diff(f,x);f_y=diff(f,y);[XY]=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_yxfori=1:length(X)subs(d,{x,y},{X(i),Y(i)})end

2020-05-12 22:50:30

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •