matlab求多元函数的极小值,[转载]利用MATLAB求多元函数的极值(2)

利用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(...)

例如

求函数 a4c26d1e5885305701be709a3d33442f.png 满足条件 a4c26d1e5885305701be709a3d33442f.png 的极小值

解:首先,编制 M-file文件

function f myfun(x)

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

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

a4c26d1e5885305701be709a3d33442f.png

因为约束条件是线性的,

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

a4c26d1e5885305701be709a3d33442f.png

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

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值