如何用matlab已知约束条件求自变量范围,解决思路:①利用for循环语句,②利用fmincon非线性规划极值函数
实现主要代码:
1、建立自定义目标函数,myfun(k),其内容
G=0;
for i=1:n
syms x
b=5/i;
G=G+cos(x+i*b);
D=int(G,'x',0,h);
end
2、建立自定义约束函数,mycon(k),其内容
G=0;
for i=1:n
syms x
b=5/i;
G=G+cos(x+i*b);
D=vpa(int(G,'x',0,h));
end
c=1.5-D;
3、利用fmincon函数求最小值D(i),其内容
x0=10;
A=[];b=[];Aeq=[];beq=[];VLB=[];VUB=[];
[k,fval,exitflag]=fmincon(@(k)myfun(k),x0,A,b,Aeq,beq,VLB,VUB,@(k)mycon(k))