如何用Matlab解决带参数的非线性约束问题?

带参数(指的是数学题中用字母当作已知数的参数)!!![x,fval]=fmincon('fun',x0,A,b,Aeq,beq,lb.un.nonlcon,options)
(这个参数要作为约束条件)

第1个回答  2021-02-06

如何用Matlab解决带参数的非线性约束问题?从目前matlab软件的能力,还不具备解决这类问题。fmincon函数可以解决下列类型的问题:

min f(x)=100*(x2-x1^2)^2 + (1-x1)^2

st. x1+2x2≤1; x1、x2>0

求解过程:

fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2; %自定义极小值函数

x0 = [-1,2]; %确定x的初值

A = [1,2]; %左约束条件方程的系数

b = 1; %右约束条件方程的系数

[x,fval]= fmincon(fun,x0,A,b) %求x1—x(1),x2—x(2)的值,fval—100*(x2-x1^2)^2 + (1-x1)^2的最小值

执行结果。

相似回答