1个回答
展开全部
题主的求最大值问题,用matlab求解,可以这样来考虑:
第一步:自定义目标函数,fmincon_fun(x),其内容
f=。。。; %f表达式
g=。。。; %g表达式
p=。。。; %p表达式q=。。。; %q表达式
Ca=-sqrt((f^2+g^2+p^2+q^2)/2+sqrt(((f^2+g^2+p^2+q^2)/2)^2-(f*q-g*p)^2)); %注意对于最大值问题,在Ca表达式前应加负号
第二步:初定x的初值,如x0=[1.5 -3];
第三步:确定x的上下限,lb=[-pi,-pi];ub=[pi,pi];
第四步:使用fmincon函数,求解θ,ψ,即
[x,fval] = fmincon(@(x) fmincon_fun(x),x0,[],[],[],[],lb,ub);
theta=x(1),phi=x(2)
Ca=-fval
第五步:编写代码,并运行得到如下结果。
追问
初始值怎么选啊,我换不同初始值有时候结果差的挺大的
追答
用随机数作为初值,如结果比较接近实际值,把它固定下来作为初值
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |