无约束
(1)min f(x)=(x³+cos x+x lgx)/e× (0<x<1)
(2)min x(1)²+x(2)²-x(1) x(2)-2 x(1)-5(2)
{ -(x(1)-1)²+x(2)≥0
2 x(1)-3 x(2)+6≥0
如何在matlab中输入,求步骤。谢谢!
你好,
(1)这是非线性函数求最小值
format long%设置显示的小数位长一点
f = @(x) (x^3+cos(x)+x*log10(x))/exp(x);
x = fminsearch(f, 0.5)%初值给0.5
结果:
x =
0.663769531250000
(2)因为目标函数不是未知数的线性组合,所以需要用到fmincon函数求解
代码供参考,注释的都注释了
function main()
func = @(x) x(1)^2 + x(2)^2 - x(1)*x(2) -2*x(1)-5*x(2);%目标函数
x0 = rand(2,1);%给初始值
A=[-2, 3]; b = -6;%线性约束A和b
x = fmincon(func, x0,A,b,[],[],[],[],@nonlinfun)
end
function [c, ceq] = nonlinfun(x) %定义非线性约束函数
c = (x(1)-1)^2-x(2);%非线性约束条件
ceq = [];
end
结果是
x =
1.333333116738571
-0.988889101134474
即x1 = 1.333333116738571; x2= -0.988889101134474
有帮助望题主给个采纳,先行谢谢啦