matlab已知约束条件求自变量范围

G(x,i)=∑cos(x+i*b),(i=0,1,...),b=5/i,G≤1.5,求D(i)=int(G(x,i),'x',0,h)最小时的i值

如何用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))

温馨提示:答案为网友推荐,仅供参考
相似回答