月球软着陆matlab程序,matlab变量优化 卫星软着陆问题

本帖最后由 startrule 于 2016-7-18 13:40 编辑

我写了关于嵌套调用的函数,但是出现了很多错误:

优化函数:weixing.c

global a t

ff=optimset;  ff.LargeScale='off';

ff.Display='iter'; ff.TolFun=1e-30;

ff.TolX=1e-15; ff.TolCon=1e-20;

a1=0.4;  aa=2; a2=sqrt(aa^2-a1^2);

a0=[a1;a2];

am=[0;0];

aM=[]; A=[]; B=[];

Aeq=[]; Beq=[];

[a,f_opt,c,d]=fmincon('opt_fun1',a0,A,B,Aeq,Beq,am,aM,'opt_con1',ff)

非线性约束条件:opt_con1.m

function [c ceq]=opt_con1(a)

R=1737013;r0=15*1000+R;

tf=(2^(1/2)*(r0 - (3000+R))^(1/2))/a(2)^(1/2);

dx=v0 - a(1)*tf;

dy=-a(2)*tf;

ceq=[dx^2+dy^2-57^2];

c=[0 0];

目标函数:opt_fun1.m

function JF=opt_fun1(a)

R=1737013;r0=15*1000+R;

tf=(2^(1/2)*(r0 - (3000+R))^(1/2))/a(2)^(1/2);

global t

JF=quad(@myfun,0,tf);

end

被积函数:myfun.m

function rF=myfun(t)

global a

options=odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4]);

[T F]=ode45(@star,[0.001 t],[960 2400],options);

plot(T ,F(:,1),'-',T ,F(:,2),'-.');

hold on;xlabel('t/h');text(0.1,40,'F(t)');text(0.1,2401,'m(t)');box off;

annotation1=annotation('arrow',[0.131 0.131],[0.92 0.96]);

annotation2=annotation('arrow',[0.88 0.96],[0.108 0.108]);

rF=F(end,1);

end

求值函数:star.m

function dF=star(t,F)

global a

dF=zeros(2,1);

dF(1)=F(1)^2/(2940*F(2)) - ((2*F(1)^3)/(2940*F(2)) + (F(1)*F(2)*(2*a(1)^2 + 2*a(2)^2))/2940 - (2*F(1)*1.6333^2*F(2))/2940 - (2*F(1)*1.6333*F(2)*1700*(1700 - a(1)*t))/(a(2)^2*t^3*((1700 - a(1)*t)^2/(a(2)^2*t^2) + 1)^(3/2)))/(2*F(1) - (2*1.6333*F(2))/((1700 - a(1)*t)^2/(a(2)^2*t^2) + 1)^(1/2));

dF(2)=-1/2940*F(1);

end

但是出现了以下错误:

weixing

错误使用 odearguments (line 84)

tspan 中的元素必须严格递增或严格递减。

出错 ode45 (line 113)

[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

出错 myfun (line 4)

[T F]=ode45(@star,[0.001 t],[960 2400],options);

出错 quad (line 67)

y = f(x, varargin{:});

出错 opt_fun1 (line 5)

JF=quad(@myfun,0,tf);

出错 fmincon (line 564)

initVals.f = feval(funfcn{3},X,varargin{:});

出错 weixing (line 10)

[a,f_opt,c,d]=fmincon('opt_fun1',a0,A,B,Aeq,Beq,am,aM,'opt_con1',ff)

原因:

Failure in initial user-supplied objective function evaluation. FMINCON cannot continue.

各位大神帮帮忙啊,拜谢!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值