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%
帮助的人:2647万
展开全部

考虑用非线性约束优化函数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度之间,如果你要求取定值,当然也可以修改其上下限,但是否有解要看具体取值。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式