马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我的程序如下:
主程序:
n=input('enter a value for n\n=')
a1=0.2875;
kmax=1.33;
x0=zeros(n,1);
A=[];
b=[];
Aeq=data_preprocess(a1,kmax);
beq=xlsread('F:\Program Files\work\DATA','sheet1','H4:H33');
lb=zeros(n,1);
ub=[];
[x,fval,exitflag,output] = fmincon(@myobjfun,x0,A,b,@data_preprocess(a1,kmax),beq,lb,ub);
子函数:myobjfun
function f = myobjfun(x)
f = sum(diff(x).^2);
子函数data_preprocess
function Aeq=data_preprocess(a1,kmax)
%从EXCEL表格中读取TBP(END T)数据,T(K)
TBP=xlsread('F:\Program Files\work\DATA','sheet1','G3:G33') %待完善:sheet1、以及G3:G33如何用n表示
%计算标准温度\theta
o1=TBP(1);
o2=TBP(31);
T=(TBP-o1)/(o2-o1)
%计算速率常数k
o3=1/a1
o4=T.^o3
k=o4.*kmax
%计算a(i,1)和a(i,2)
for i=1:30
m1=k(i)-k(i+1);
m2=30*31*a1/kmax^a1;
m3=k(i+1)^(a1+1)/(a1+1);
m4=k(i+1)^(a1+1)/a1;
m5=k(i)^(a1+1)/(a1+1);
m6=k(i+1)*k(i)^a1/a1;
m7=k(i)*k(i+1)^a1/a1;
m8=k(i)^(a1+1)/a1;
a(i,1)=(1/m1)*m2*((m3-m4)-(m5-m6));
a(i,2)=(1/(-m1))*m2*((m3-m7)-(m5-m8));
end
for i=1:30
Aeq(i,i)=a(i,1);
Aeq(i,i+1)=a(i,2);
end
disp(Aeq);
然后运行就出现了如题的报错信息!
FMINCON only accepts inputs of data type double.
错误指示是这一行:
[x,fval,exitflag,output] = fmincon(@myobjfun,x0,A,b,@data_preprocess(a1,kmax),beq,lb,ub);
|