MATLAB编程求最小值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB编程求最小值相关的知识,希望对你有一定的参考价值。

Min S=0.00088d1+1.8144d2
S.t. 0.2376d1+4.5813d2>=ln10
d1+d2<=35

求解步骤:
1、建立自定义函数文件,定义S(d)=0.00088d1+1.8144d2
2、建立自定义约束函数文件
3、用fmincon()函数求解自定义函数的最小值
由Matlab的fmincon()函数,求得
d1= 36.3843992234744,d2= -1.38439922347445
S = -2.47983567975538
你觉得满意,请采纳。代码可以私信给你。追问

你好,首先先感谢帮我解决了问题,但是如果再加上约束条件d1>=0,d2>=0要怎么求解呢?

参考技术A 更新:如果你需要d1>=0且d2>=0则只需要下面的命令:

fmincon(@(x) [0.00088 1.8144]*x,[0 0]',[-0.2376 -4.5813;1 1],[-log(10); 35],[],[],[0;0])

结果是d1=9.691014701153364, d2=0。

1条命令即可解决问题。

fmincon(@(x) [0.00088 1.8144]*x,[0 0]',[-0.2376 -4.5813;1 1],[-log(10); 35])

下面是输出结果。

Warning: The default trust-region-reflective algorithm does not solve problems with the constraints you have specified.
FMINCON will use the active-set algorithm instead. For information on applicable algorithms, see Choosing the Algorithm
in the documentation.
> In fmincon at 486
Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints are satisfied to within the default value of the constraint tolerance.
<stopping criteria details>
Active inequalities (to within options.TolCon = 1e-006):
lower upper ineqlin ineqnonlin
1
2
ans =
36.384399223474453
-1.384399223474456追问

你好,首先先感谢帮我解决了问题,但是如果再加上约束条件d1>=0,d2>=0要怎么求解呢?

追答

我更新过了啊,在最开始,你没有看见?

追问

看到了,谢谢你,可是我感觉这结果好像跟想象中差距太大了,方便和你聊一下吗

追答

可以。

追问

我给你发了私信

追答

别客气。也真心的。:-).

本回答被提问者采纳
参考技术B f=[0.00088;1.8144];
A=[-0.2376 -4.513;1 1];
b=[-log(10);35];
[d,s]=linprog(f,A,b)
结果是:
Optimal solution found.
d =
36.4065
-1.4065
s =
-2.5199

matlab中梯度的膜代表啥

参考技术A 函数在该点的方向导数的最大值。
梯度与方向导数的关系为:梯度的方向与取得最大方向导数值的方向一致,而梯度的模就是函数在该点的方向导数的最大值。
梯度下降算法事实上是求多维函数的在某一点收敛的极小值,可以用这个算法迭代出在哪个点收敛,也是求最小二乘问题的一种方法。

以上是关于MATLAB编程求最小值的主要内容,如果未能解决你的问题,请参考以下文章

matlab的编程问题,求关于平均数,最小值,最大值,方差等简单的数据处理的程序。

基于Matlab用遗传算法求一元函数最值问题(附源码)

matlab 如何求函数最小值

在matlab编程时,怎样取出矩阵的每行中的最小值?

matlab中如何求矩阵的最大值和最小值?

matlab用最速下降法(梯度法)计算Rosenbrock函数,求程序代码