加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

利用MATLAB求多元函数的极值(2)

(2011-10-17 21:22:38)
标签:

杂谈

利用MATLAB求多元函数的极值分两种情况,(1)无约束条件;(2)有约束条件。

(2)有约束条件下求极小值的方法:

假设多变量非线性函数的数学模型为

         min f(x)

         c(x)<=0

        ceq(x)=0

        A·x<=b

        Aeq·x<=x<=beq

        lb<=x<=ub

X, b,beq,lb,ub为矢量,A,Aeq为矩阵,c(X),ceq(X)为函数(可非线性)。

命令格式: x = fmincon(fun,x0,A,b)

x = fmincon(fun,x0,A,b,Aeq,beq)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

[x,fval] = fmincon(...)

[x,fval,exitflag] = fmincon(...)

[x,fval,exitflag,output] = fmincon(...)

[x,fval,exitflag,output,lambda] = fmincon(...)

[x,fval,exitflag,output,lambda,grad] = fmincon(...)   [x,fval,exitflag,output,lambda,grad,hessian]= fmincon(...)

例如

 求函数 http://s10/middle/5b5a25e9g77f30fba5329&690                     

的极小值
解:首先,编制 M-file文件

function f myfun(x)

f=-x(1)*x(2)*x(3)

然后重写约束条件为两个小于或等于一个常数的不等式,

http://s16/middle/5b5a25e9gaf7e9e7202af&690

因为约束条件是线性的,

用矩阵表示为Ax<=b 其中;

http://s3/middle/5b5a25e9gaf7e9e041f62&690

其次,猜测估计提供一个起点,调用优化程序。

x0 = [10; 10; 10];    % 猜测可能的结果作为起点

[x,fval] = fmincon(@myfun,x0,A,b)

x =

    24.0000

    12.0000

    12.0000

fval =

-3.4560e+03

A*x-b=

    -72

      0

当x1=24,x2=12,x3=12,时函数有极小值-3.4560e+03

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有