Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-10-20, 10:58   #1
tjzxd
初级会员
 
注册日期: 2009-08-21
年龄: 40
帖子: 1
声望力: 0
tjzxd 正向着好的方向发展
默认 求助 fmincon

这是我的语句 总是无法通过,求助哪位高人给指点
function BatchCryOptimzation %间歇结晶
clear all;clc
b=1.45;
kb=285;
Eb=7517;
U=18000;
Hc=44.5;
M=27;
g=1.5;
kg=1.44e+8;
A=0.25;
Eg=4859;
cp=3.8;
pc=2.66e-12;
kv=1.5;
R=8.314;
us0=400;
tf=30;
C0=0.1127;
T0=323;%参数
Tj=100;%降温模型
Tb=[303 323];%温度边界
Cs=.0776+.00246.*Tb-0.0000081.*Tb.^2;
Cm=00.0629+0.00246.*Tb-0.00000714.*Tb.^2;%介稳区
lb=[0 0 0 0 0 303];
ub=[+inf +inf +inf +inf C0 323];
y0=[400 6e+4 2e+7 9e+9 C0 T0];
[y f]=fmincon(@ObjFunc4Fmincon,y0,[],[],[],[],lb,ub,@Nonlcon,[],b,kb,Eb,U,Hc,M,g,kg,A,Eg,cp,pc,kv,R,Tj,tf)%用Fmincon优化
[t,y]=ode45(@Equations,[0 tf],y0,[],b,kb,Eb,U,Hc,M,g,kg,A,Eg,cp,pc,kv,R,Tj);
disp(' t u0 u1 u2 u3 C T '),disp([t,y])
subplot(2,2,1);plot(t,log(y(:,1)),'k--',t,log(y(:,2)),'b:',t,log(y(:,3)),'r-',t,log(y(:,4))),legend('u0','u1','u2','u3'),
xlabel('Time/min'),ylabel('log(ith moment)')
subplot(2,2,2);plot(t,y(:,5)),xlabel('Time/min'),ylabel('Concentration/kgsolute/kg solution')
subplot(2,2,3);plot(t,y(:,6)),xlabel('Time/min'),ylabel('Temperature/K')
subplot(2,2,4);
%.............................
function f=ObjFunc4Fmincon(y0,b,kb,Eb,U,Hc,M,g,kg,A,Eg,cp,pc,kv,R,Tj,tf)
[t,y]=ode45(@Equations,[0 tf],y0,[],b,kb,Eb,U,Hc,M,g,kg,A,Eg,cp,pc,kv,R,Tj); %四=五阶龙格-库塔法
f=y(4);
%........................
function dydt=Equations(t,y,b,kb,Eb,U,Hc,M,g,kg,A,Eg,cp,pc,kv,R,Tj)
u0=y(1);
u1=y(2);
u2=y(3);
u3=y(4);
C=y(5);
T=y(6);
Cs=0.0629+0.00246.*T-0.00000714.*T.^2;
S=(C-Cs)./Cs;
Gt=kg.*exp(-Eg./(R.*T)).*S.^g;
Bt=kb.*exp(-Eb./(R.*T)).*S.^b.*u3;
du0dt=Bt;
du1dt=Gt*u0;
du2dt=2*Gt*u1;
du3dt=3*Gt*u2;
dCdt=-3*pc*kv*Gt*u2;
dTdt=-3*Hc/cp*pc*kv*Gt*u2-U*A/M/cp*(T-Tj);
dydt=[u0;u1;u2;u3;C;T];
%.........................
function [c,ceq]=Nonlcon(y)


c(1)=y(5)-(0.0629+0.00246.*y(6)-0.00000714.*y(6).^2);
c(2)=.0776+.00246.*y(6)-0.0000081.*y(6).^2-y(5);
ceq=[];
tjzxd 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 17:27


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.