【MATLAB建模学习实录【二】】非线性规划函数模型板子

可以通过判断正定矩阵的方式来求解多元函数的极值点问题

下面以二元函数为例:

代码模板如下:

clc,clear
syms x y
f=x^3-y^3+3*x^2+3*y^2-9*x;
df=jacobian(f);%求导
d2f=jacobian(df);%二阶导雅阁比行列式
[xx,yy]=solve(df);%求驻点
xx=double(xx);yy=double(yy);%化为double数组形式,用来进行运算
for i = 1:length(xx)%遍历每个驻点
    ff=subs(f,{x,y},{xx(i),yy(i)});%球对应函数值
    ff=double(ff);
    a=subs(d2f,{x,y},{xx(i),yy(i)});%求特征值,如果所有特征值大于0为正定矩阵,都小于0为负定阵
    b=eig(a);
    if(all(b>0)) 
        fprintf(‘(%f,%f)是极小值点,对应极小值为%f\n‘,xx(i),yy(i),ff);
    elseif (all(b<0))
        fprintf(‘(%f,%f)是极大值点,对应极大值为%f\n‘,xx(i),yy(i),ff);
    elseif (any(b>0)&any(b<0))
        fprintf(‘(%f,%f)不是极值点\n‘,xx(i),yy(i));
    else
        fprintf(‘(%f,%f)无法判断‘,xx(i),yy(i));
    end
end