运行结果出现这样的提示是什么意思?
自己编了一个求最优参数的程序(就是根据方程计算得到计算值,并与实验值比较,用最小二乘法),得到的结果总是等于初始值,并且出现这样的提示信息:Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.
请问这个提示信息是什么意思啊?
就是没找到最优解,曲率为小于等于零的点不存在
你应该把代码贴出来,并把你的目的和方法说清楚
大家才好帮你解决问题 就是没找到最优解,曲率为小于等于零的点不存在
你应该把代码贴出来,并把你的目的和方法说清楚
大家才好帮你解决问题
ljelly 发表于 2009-9-10 09:54 http://forum.simwe.com/images/common/back.gif谢谢,下面是我的代码 模型的几何形状是一个圆柱,在0,1,2,5,10,20,30,60min这几个时间点上测得某种化学物质扩散入其中的量,模型方程是一个抛物线型的偏微分方程,要求最佳的扩散系数Deff。代码如下:
function ACdisc_Diffusion
clear all;clc;
global Cm;
%动力学数据
tlist=; %测量的时间点,单位min
Cm=; %测得的AC中DMSO平均浓度,单位%w/w
%非线性拟合
C0=0;
%Deff0=1; %Deff的上限值,单位mm2/min
%Deffn=2; %Deff的下限值
=lsqnonlin(@OptObjFunc,0.0114,[],[],[],tlist,C0,Cm) %现在程序的问题是根本没有迭代发生
ci=nlparci(Deff,resid,jacobian)
%--------------------------------------------------------------------------
%求解PDE
function C=OptObjFunc(Deff,tlist,C0,Cm)
%PDE问题定义及参数初始化
g='ACdiscg1'; %定义求解域,几何尺寸单位mm
b='ACdiscb1'; %定义边界条件
d=['x/' num2str(Deff)];c='x';a=0;f=0; %方程的系数
%网格化(三角形网格划分及网格细化)
=initmesh(g);
=refinemesh(g,p,e,t);
p=jigglemesh(p,e,t);
%绘制PDE三角形网格
pdemesh(p,e,t);
u=parabolic(C0,tlist,b,p,e,t,c,a,f,d); %计算得到的AC中任意时间任意位置DMSO浓度
%积分求解DMSO平均浓度的计算值
xi=linspace(0,3,35);yi=linspace(0,0.38,35);
for i=1:length(tlist)
Cc{1,i}=tri2grid(p,t,u(:,i),xi,yi);
Cc0=Cc{1,i};
Cc1(1,i)=dblquad(@Func,0,3,0,0.38,[],@quadl,xi,yi,Cc0);
Cc2(1,i)=Cc1(1,i)/(3*0.38);
end
C=Cc2-Cm;
%--------------------------------------------------------------------------
function f=Func(x,y,xi,yi,Cc0)
f=interp2(xi,yi,Cc0,x,y);
页:
[1]