MATLAB求下列式子的最优化问题

c=x-(d+sqrt(d^2-400^2))/2;eq1=(2*x-d*cos(t)-d-sqrt(d^2-160000)).^2+(2*y-d*sin(t)-400)... c=x-(d+sqrt(d^2-400^2))/2;
eq1=(2*x-d*cos(t)-d-sqrt(d^2-160000)).^2+(2*y-d*sin(t)-400).^2-d.^2;
eq2=(2*x-2*d*cos(t)).^2+(2*y-2*d*sin(t)).^2-(d-sqrt(d^2-160000)).^2-160000;
t=-20/180*pi:pi/1800:20/180*pi;
自己写的函数
展开
 我来答
tianxiawulang
2014-03-20 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2646万
展开全部

考虑用非线性约束优化函数fmincon求解:

function zd

% x(1)=x,x(2)=d,x(3)=y,x(4)=t

objfun = @(x) x(1)-(x(2)+sqrt(x(2)^2-400^2))/2;
lb = [-inf -inf -inf -20];
ub = [inf inf inf 20];
x0 = [7100 7100 1800 15];
opt = optimset('MaxFunEvals',5e5);
[x,fval,exitflag] = fmincon(objfun,x0,[],[],[],[],lb,ub,@nlcon)

function [c,ce]=nlcon(x)
d=x(2);
y=x(3);
t=x(4)*pi/180;
x=x(1);
ce(1)=(2*x-d*cos(t)-d-sqrt(d^2-160000)).^2+(2*y-d*sin(t)-400).^2-d.^2;
ce(2)=(2*x-2*d*cos(t)).^2+(2*y-2*d*sin(t)).^2-(d-sqrt(d^2-160000)).^2-160000;
c = [];

 

其中的初值x0选择很重要,我是经过很多次尝试得到的。

程序输出:

Optimization terminated: directional derivative predicts change in
  objective value less than options.TolFun and maximum constraint violation
  is less than options.TolCon.
No active inequalities.

x =

  1.0e+003 *

    7.0641    7.1385    1.6589    0.0145


fval =

  -68.7183


exitflag =

     5

得到的优化结果是x=7064.1, d=7138.5, y=1658.9, theta=14.5。按照退出代码exitflag 看,该点很可能但并不能保证)是最优值。

追问
首先十分感谢你的回答,还有个问题就是优化的是D的值 在保证c=x-(d+sqrt(d^2-400^2))/2;最小的前提下  theta不能有定值吧
追答
现在优化的是x、d、y、theta四个变量,其中后两个变量未出现在目标函数中。
theta按照你的要求在-20~20度之间,如果你要求取定值,当然也可以修改其上下限,但是否有解要看具体取值。
Sievers分析仪
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式