我写的M-file文件如下:
function psd_optimize() % 主程序段
x0=ones(27,1)/27; % 选定的初始点
A=[]; % 线性不等式约束系数矩阵
b=[]; % 线性不等式约束右端向量
Aeq=ones(1,27); % 线性等式约束系数矩阵
beq=[1]; % 线性等式约束右端向量
lb=zeros(27,1); % 向量x的下界
ub=ones(27,1); % 向量x的上界
[x,y]=fmincon(@fobj,x0,A,b,Aeq,beq,lb,ub)
function y=fobj(x) % 子程序段,用以描述目标函数
adsexp=xlsread('exp.xls'); % 读入77K下液氮吸附的实验数据,mg/g
adscal=xlsread('cal.xls'); % 读入77K下液氮在不同孔宽下的计算数据,mg/g
res=adsexp-adscal*x; % 计算残差residue
y=res'*res; % 目标函数=(实验值-计算值*孔宽权重)的平方和
但是,算出来的结果有问题
>> psd_optimize
Warning: Large-scale (trust region) method does not currently solve this type of problem,
using medium-scale (line search) instead.
> In fmincon at 317
In psd_optimize at 9
Optimization terminated: first-order optimality measure less than options.TolFun
and maximum constraint violation is less than options.TolCon.
Active inequalities (to within options.TolCon = 1e-006):
lower upper ineqlin ineqnonlin
1 3
2
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
x =
0.0000
-0.0000
1.0000
0.0000
-0.0000
-0.0000
0.0000
0
-0.0000
-0.0000
-0.0000
-0.0000
0.0000
-0.0000
-0.0000
0.0000
0.0000
-0.0000
-0.0000
0.0000
0.0000
-0.0000
-0.0000
-0.0000
0.0000
-0.0000
-0.0000
y =
8.8890e+006
显然,结果没有达到合理的范围,能否帮我看看我的m-file哪里出错了?