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编程求最小值的主要内容,如果未能解决你的问题,请参考以下文章