24小时热门版块排行榜    

查看: 899  |  回复: 7

等待苏樱

木虫 (小有名气)

[求助] matlab问题求教 已有1人参与

Initial point is a local minimum.

Optimization completed because the size of the gradient at the initial point
is less than 1e-4 times the selected value of the function tolerance.

试了好多初值都是这种提示 需要怎么查
回复此楼
等待苏樱
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

数值计算
2楼2018-07-05 14:45:35
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
3楼2018-07-05 15:13:20
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

等待苏樱

木虫 (小有名气)

引用回帖:
2楼: Originally posted by 独孤神宇 at 2018-07-05 14:45:35
将模型代码附上来看看

有点长 是嵌套的 您有联系方式吗 方便交流一下吗 谢谢
等待苏樱
4楼2018-07-05 15:42:29
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

等待苏樱

木虫 (小有名气)

引用回帖:
2楼: Originally posted by 独孤神宇 at 2018-07-05 14:45:35
将模型代码附上来看看

我把代码发下 您看下吧
等待苏樱
5楼2018-07-05 15:44:33
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

等待苏樱

木虫 (小有名气)

主程序

clear
clc
A=textread('Benzene+Methanol.txt');
a=size(A,1);
P=101.325;
A12=630.8;
A21=336.064;
B12=0.451;
for i=1:a
    x1(i)=A(i,2);
    x2(i)=A(i,3);
    x3=1-x1-x2;
    Texp(i)=A(i,1);
   gamma1exp(i)=A(i,7);
   gamma2exp(i)=A(i,8);

end
bata0=[2319 -90 -238 3000 -0.3 -0.3];
options = optimset('Algorithm','Levenberg-Marquardt','Display','iter','TolFun',1e-40,'MaxFunEvals',8000000,'MaxIter',150000,'TolX',1e-500);
[beta,resnorm,residual,exitflag,output,lambda,jacobian]=...
lsqnonlin(@ObjFunc,bata0,[],[],options,x1,x2,x3,Texp,gamma1exp,gamma2exp);
gamma1cal = Vapor1Cal( beta,x1,x2,x3,Texp );
gamma2cal = Vapor2Cal( beta,x1,x2,x3,Texp );
fprintf('Estimated Parameters;\n')
fprintf('\tA13=%.3f\n',beta(1))
fprintf('\tA31=%.3f\n',beta(2))
fprintf('\tA23=%.3f\n',beta(3))
fprintf('\tA32=%.3f\n',beta(4))
fprintf('\tA23=%.3f\n',beta(5))
fprintf('\tA32=%.3f\n',beta(6))
fprintf('\tThe sum of the squares is:%.6f\n',resnorm)
fprintf('\tThe mean Δgamma1 is:%.6f\n',mean(abs(residual)))
fprintf('\tThe mean Δgamma2 is:%.6f\n',mean(abs(residual)))
fprintf('\tThe gamma1cal is:\n',gamma2cal)
fprintf('\tThe gamma2cal is:\n',gamma2cal)

程序中
ObjFunc为

function f=ObjFunc(beta,x1,x2,x3,Texp,gamma1exp,gamma2exp)
gamma1cal=Vapor1Cal(beta,x1,x2,x3,Texp);
gamma2cal=Vapor2Cal(beta,x1,x2,x3,Texp);
f=(1-gamma1cal./gamma1exp).^2+(1-gamma2cal./gamma2exp).^2;
end

Vapor1Cal为
function gamma1cal= Vapor1Cal( beta,x1,x2,x3,Texp )
A12=630.8;
A21=336.064;
B12=0.451;
t12=A12./Texp;
t21=A21./Texp;
t13=beta(1)./Texp;
t31=beta(2)./Texp;
t23=beta(3)./Texp;
t32=beta(4)./Texp;
G12=exp(-B12.*t12);
G21=exp(-B12.*t21);
G13=exp(-beta(5).*t13);
G31=exp(-beta(5).*t31);
G23=exp(-beta(6).*t23);
G32=exp(-beta(6).*t32);
gamma1cal=exp(((G21.*x2+G31.*x3).*(t21.*G21.*x2+t31.*G31.*x3))./(x1+G21.*x2+G31.*x3).^2+...
    (t12.*G12.*x2.^2+G12.*G32.*x2.*x3.*(t12-t32))./(G12.*x1+x2+G32.*x3).^2+...
    (t13.*G13.*x3.^2+G13.*G23.*x2.*x3.*(t13-t23))./(G13.*x1+G23.*x2+x3).^2);

Vapor2Cal为
function gamma2cal = Vapor2Cal( beta,x1,x2,x3,Texp )
A12=630.8;
A21=336.064;
B12=0.451;
t12=A12./Texp;
t21=A21./Texp;
t13=beta(1)./Texp;
t31=beta(2)./Texp;
t23=beta(3)./Texp;
t32=beta(4)./Texp;
G12=exp(-B12.*t12);
G21=exp(-B12.*t21);
G13=exp(-beta(5).*t13);
G31=exp(-beta(5).*t31);
G23=exp(-beta(6).*t23);
G32=exp(-beta(6).*t32);
gamma2cal=exp(((G32.*x3+G12.*x1).*(t32.*G32.*x3+t12.*G12.*x1))./(x2+G32.*x3+G12.*x1).^2+...
    (t23.*G23.*x3.^2+G23.*G13.*x1.*x3.*(t23-t13))./(G23.*x2+x3+G13.*x1).^2+...
    (t21.*G21.*x1.^2+G21.*G31.*x1.*x3.*(t21-t31))./(G21.*x2+G31.*x3+x1).^2);
等待苏樱
6楼2018-07-05 15:48:03
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

等待苏樱

木虫 (小有名气)

引用回帖:
2楼: Originally posted by 独孤神宇 at 2018-07-05 14:45:35
将模型代码附上来看看

六个变量 试了很多种初值 结果都是我给什么初值 结果就和初值一样
等待苏樱
7楼2018-07-05 15:52:05
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
7楼: Originally posted by 等待苏樱 at 2018-07-05 15:52:05
六个变量 试了很多种初值 结果都是我给什么初值 结果就和初值一样...

可以将模型和数据一并附上来,对照参考。

1stOpt比较适合非线性拟合,对初始值依赖低。
数值计算
8楼2018-07-06 21:39:26
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 等待苏樱 的主题更新
信息提示
请填处理意见