24小时热门版块排行榜    

查看: 130  |  回复: 0
当前主题已经存档。
【有奖交流】积极回复本帖子,参与交流,就有机会分得作者 Shoney 的 30 个金币

Shoney

木虫 (著名写手)

[交流] 【求助】大家帮忙看看这个求最优参数的程序问题在哪儿?

是一个根据实验i数据求最优扩散系数的问题,即有一种物质扩散入一个圆柱体内,实验测得各个时间点的浓度,方程是一个PDE方程。运行结果没提示错误,但结果就是不对,最优的Deff值老是等于初值,不知道问题出在哪儿。(附件是源程序)程序如下:

function ACdisc_Diffusion
clear all;clc;
global Cm;
%动力学数据
tlist=[0 1 2 5 10 20 30 60];    %测量的时间点,单位min
Cm=[0 4.30 5.20 6.17 7.53 8.41 8.80 9.04];    %测得的AC中DMSO平均浓度,单位%w/w

%非线性拟合
C0=0;
Deff0=0.0116;    %单位mm2/min
[Deff,resnorm,resid,exitflag,output,lambda,jacobian]=lsqnonlin(@OptObjFunc,Deff0,[],[],[],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;    %方程的系数

%网格化(三角形网格划分及网格细化)
[p,e,t]=initmesh(g);
[p,e,t]=refinemesh(g,p,e,t);
[p,e,t]=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,100);yi=linspace(0,0.38,100);
Cc2(1,1)=0;    %赋值0,因进行网格转化时,值由线性插值得到;结果Cc2(1,1)≠0(边界值=9.04)
for i=2: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);

运行结果如下:
Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.
Deff =

    0.0116


resnorm =

    2.7230


resid =

         0   -1.0917   -0.7775    0.4317    0.6481    0.5194    0.2249    0.0000


exitflag =

     1


output =

    firstorderopt: 0
       iterations: 0
        funcCount: 2
     cgiterations: 0
        algorithm: 'large-scale: trust-region reflective Newton'
          message: [1x137 char]


lambda =

    lower: 0
    upper: 0


jacobian =

   All zero sparse: 8-by-1


ci =

  1.0e+007 *

   -9.8973    9.8973

[ Last edited by Shoney on 2009-9-15 at 10:42 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Shoney 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 好奇怪的filecode +4 布布和一二 2026-08-08 5/250 2026-08-10 14:20 by 冰心玉壶晴
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +13 Lanmanbaby 2026-08-09 21/1050 2026-08-10 14:16 by 冰心玉壶晴
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +3 布布和一二 2026-08-10 3/150 2026-08-10 13:00 by smlz521
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +10 archvillain 2026-08-04 12/600 2026-08-10 12:45 by yudaoqian88
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
[基金申请] FileCode能看出啥? +3 要乐观耀哥 2026-08-10 6/300 2026-08-10 12:33 by 要乐观耀哥
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 5/250 2026-08-08 21:54 by 13586093586
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 娱乐 +6 Tide man 2026-08-03 6/300 2026-08-07 22:40 by 铁帽子农民
[基金申请] 化学口download_prp&fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] 听说今天filecode变了 +24 布布和一二 2026-08-06 47/2350 2026-08-07 16:02 by zhiyanjiang
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
信息提示
请填处理意见