• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

下面以二元函数为例:

代码模板如下:

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

 上述问题还可以通过fminunc函数来求

 但本蒟蒻对于fminunc函数的用法还不甚熟练,尤其是其中x0参数的选择,发现不同的x0对于结果有不同的影响  查阅资料也没有很明白 (先挖个坑)

 代码如下:

1 clc,clear
2 f=@ (x) x(1)^3-x(2)^3+3*x(1)^2+3*x(2)^2-9*x(1);%定义隐函数
3 g=@(x) -f(x);%求极大值时可以通过取负求极小值再取回来
4 x0=rand(2,1);
5 x0
6 [x1,fval1]=fminunc(f,x0)%fminunc函数用于求极小值
7 [x2,fval2]=fminunc(g,x0);
8 x2,fval2 = -fval2%极大值取负后需要取回来

 求函数零点的方法相对简易,这里给出求符号解的模板:

1 clc,clear
2 syms x y ;
3 [x,y]=solve(x^2+y-6,y^2+x-6)

可以根据需要修改函数与参数。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi动态添加控件发布时间:2022-07-18
下一篇:
Delphi 之 菜单组件(TMainMenu) - 癫狂编程发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap