24小时热门版块排行榜    

查看: 883  |  回复: 5

805592836_01

铁虫 (初入文坛)

[求助] 未完成的matlab 已有2人参与

有实验测得的一系列时间点
t=(0,180,300,420,600,900,1200,1800,2400)
CA=(1.845,1.414,1.237,1.065,0.873,0.629,0.440,0.226,0.124)

微分方程:k(1)*k(2)*k(3)*CA0*(CB.^3)./(1+k(2)*CA+k(3)^(1/6)*CB.^(1/2)).^7
CB=0.4为定值
希望由此得到三个参数k(1),k(2),k(3),以及实验值与拟合值的比较图。现已经编了部分代码,但不是很确定对否,希望高手可以修改一下

clear all; clc
k0=[1,1,1];
lb=[0,0,0];
ub=[+inf,+inf,+inf];

tspan=[0,180,300,420,600,900,1200,1800,2400];

yexp=[1.414,1.237,1.065,0.873,0.629,0.440,0.226,0.124]';
y0=1.845;

% 使用fmincon()进行参数估计
[k,fval,flag]=fmincon(@ObjFunc4Fmincon,k0,lb,ub,option,tspan,y0,yexp);
fprintf('\tk1=%.4f\n',k(1)),  %本征动力学参数
fprintf('\tk2=%.4f\n',k(2)),  % A的吸附平衡常数KA
fprintf('\tk3=%.4f\n',k(3)),  % H2的吸附平衡常数KB
fprintf('The sum of the squares is:%.1e\n\n',fval),
k_fmincon=k;

% 使用函数Isqnonlin()进行参数估计
yy=[y0 yexp'];
options = optimset('MaxFunEvals',100000)
[k,resmorm,residual,exitflag,output,lambda,jacobian]=...
   Isqnonlin(@ObjFunc4LNL,k0,lb,ub,options,tspan,y0,yexp);
ci=nlparci(k,residual,jacobian);
fprintf('n\n使用Iaqunonlin()估计得到的参数值:\n'),Output

% 以函数fmincon()估计得到的结果为初值,使用Isqnonlin()进行参数估计
k0=k_fmincon;
[k,resmorm,residual,exitflag,output,lambda,jacobian]=...
   Isqnonlin(@ObjFunc4LNL,k0,lb,ub,options,tspan,y0,yexp);
ci=nlparci(k,residual,jacobian);
fprintf('n\n以fmincon()结果为初值,使用函数Isqnonlin()估计得到的参数值为:\n')
Output




%------------------------------------------------------------

function f=ObjFunc4Fmincon(k,tspan,y0,yexp)
[t y]=ode45(@KineticsEqs,tspan,y0,yexp,k);

%----------------------------------------------------------

function f=Objfunc4LNL(k,tspan,yexp)
[t y]=ode45(@KineticEqs,tspan,tspan,[],k);



%----------------------------------------------------------
function dydt = KineticsEqs(t,y,k)
y0=1.845;
CB=y;
CB0=0.4;
CA0=y0;
k1=k(1);
KA=k(2);
KB=k(3);
dxdt=k(1)*k(2)*k(3)*CA0*(CB.^3)./(1+k(2)*CA0+k(3)^(1/6)*CB.^(1/2)).^7
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

加油加油加油……
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
k1, k2, k3要求都大于0的话效果会很差的。
2楼2014-03-12 09:56:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

805592836_01

铁虫 (初入文坛)

引用回帖:
2楼: Originally posted by dingd at 2014-03-12 09:56:13
k1, k2, k3要求都大于0的话效果会很差的。

嗯,都要大于0的……
加油加油加油……
3楼2014-03-12 10:02:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

引用回帖:
3楼: Originally posted by 805592836_01 at 2014-03-12 10:02:43
嗯,都要大于0的……...

不可能有好结果,检查下模型吧。
4楼2014-03-12 10:35:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

805592836_01

铁虫 (初入文坛)

引用回帖:
4楼: Originally posted by dingd at 2014-03-12 10:35:53
不可能有好结果,检查下模型吧。...

嗯,好的吧!同样感谢
加油加油加油……
5楼2014-03-12 11:31:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
805592836_01: 金币+15, ★★★很有帮助, 看来还是模型不合适,三个参数要都大于0,不过还是感谢大神的帮忙。 2014-03-12 21:06:07
原代码问题很多,比如MATLAB中不存在Isqnonlin函数,系拼写错误,正确的为 lsqnonlin;此外用fmincon函数算出来的结果输入给lsqnonlin函数作初值意义不是很大,单独调用lsqnonlin即可。
根据实验数据可知,数据呈单调递减的趋势,拟合公式是关于时间的导数,应小于0,所以k1 k2 k3不应该全部大于0,否则不可能有号的拟合效果。
在以下给出程序中,把k1的取值范围可为0,具体代码以及计算结果如下。
CODE:
function test_123
clear all;clc

format long

tspan=[0,180,300,420,600,900,1200,1800,2400];

yexp=[1.414,1.237,1.065,0.873,0.629,0.440,0.226,0.124]';




y0=1.845;

k0=[-1 1 1];
lb=-[inf 0 0];
ub=+[inf inf inf];        

yy=[y0 yexp'];

[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc,k0,lb,ub,[],tspan,y0,yexp);
ci = nlparci(k,residual,jacobian);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk1=%.4f\n',k(1)),  %本征动力学参数
fprintf('\tk2=%.4f\n',k(2)),  % A的吸附平衡常数KA
fprintf('\tk3=%.4f\n',k(3)),  % H2的吸附平衡常数KB
fprintf('  The sum of the squares is: %.1e\n\n',resnorm)
ts=0:1:max(tspan);

[ts ys]=ode45(@KineticsEqs,ts,y0,[],k);
[ttt XXsim] = ode45(@KineticsEqs,tspan,y0,[],k);
y=XXsim(2:end);
xexp=yexp;
R2=1-sum((xexp-y).^2)./sum((xexp-mean(y)).^2);
fprintf('\n\t相关系数之平方R^2 = %.6f',R2);
plot(ts,ys,'b',tspan,yy,'or'),legend('计算值','实验值','Location','best'),


%---------------------------------------------------------
function f = ObjFunc(k,tspan,y0,yexp)           % 目标函数
[t Xsim] = ode45(@KineticsEqs,tspan,y0,[],k) ;
ysim = Xsim(2:end);
f=ysim-yexp;
%----------------------------------------------------------

function dxdt = KineticsEqs(t,y,k)
y0=1.845;
CB=y;
CB0=0.4;
CA0=y0;
k1=k(1);
KA=k(2);
KB=k(3);
dxdt=k(1)*k(2)*k(3)*CA0*(CB.^3)./(1+k(2)*CA0+k(3)^(1/6)*CB.^(1/2)).^7;

使用函数lsqnonlin()估计得到的参数值为:
        k1=-1.0834
        k2=0.0598
        k3=5.6626
  The sum of the squares is: 7.8e-003


        相关系数之平方R^2 = 0.995002>>
未完成的matlab
附图1.jpg

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
6楼2014-03-12 13:56:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 805592836_01 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 申请回稿延期一个月,编辑同意了。但系统上的时间没变,给编辑又写邮件了,没回复 10+3 wangf9518 2026-03-17 4/200 2026-03-19 23:55 by babero
[考博] 申博26年 +3 八6八68 2026-03-19 3/150 2026-03-19 19:43 by nxgogo
[考研] 288求调剂,一志愿华南理工大学071005 +5 ioodiiij 2026-03-17 5/250 2026-03-19 18:22 by zcl123
[考研] 梁成伟老师课题组欢迎你的加入 +9 一鸭鸭哟 2026-03-14 11/550 2026-03-19 17:22 by !本暗一次!
[考研] 266求调剂 +5 阳阳哇塞 2026-03-14 10/500 2026-03-19 15:08 by 阳阳哇塞
[考研] 286求调剂 +6 lemonzzn 2026-03-16 10/500 2026-03-19 14:31 by lemonzzn
[考研] 材料专硕306英一数二 +10 z1z2z3879 2026-03-16 13/650 2026-03-18 14:20 by 007_lilei
[考研] 0854,计算机类招收调剂 +3 胡辣汤放糖 2026-03-15 6/300 2026-03-18 12:09 by 上岸上岸……..
[考研] 280求调剂 +6 咕噜晓晓 2026-03-18 7/350 2026-03-18 11:25 by 无际的草原
[考研] 303求调剂 +4 睿08 2026-03-17 6/300 2026-03-18 11:01 by Iveryant
[考研] 278求调剂 +5 烟火先于春 2026-03-17 5/250 2026-03-18 08:43 by 星空星月
[考博] 26博士申请 +3 1042136743 2026-03-17 3/150 2026-03-17 23:30 by 轻松不少随
[考研] 308求调剂 +4 是Lupa啊 2026-03-16 4/200 2026-03-17 17:12 by ruiyingmiao
[考研] 274求调剂 +5 时间点 2026-03-13 5/250 2026-03-17 07:34 by 热情沙漠
[考研] 东南大学364求调剂 +5 JasonYuiui 2026-03-15 5/250 2026-03-16 21:28 by 木瓜膏
[考研] 中科院材料273求调剂 +4 yzydy 2026-03-15 4/200 2026-03-16 15:59 by Gaodh_82
[考研] 26考研一志愿中国石油大学(华东)305分求调剂 +3 嘉年新程 2026-03-15 3/150 2026-03-15 13:58 by 哈哈哈哈嘿嘿嘿
[考研] 294求调剂 +3 Zys010410@ 2026-03-13 4/200 2026-03-15 10:59 by zhq0425
[考研] 材料与化工 323 英一+数二+物化,一志愿:哈工大 本人本科双一流 +4 自由的_飞翔 2026-03-13 5/250 2026-03-14 19:39 by hmn_wj
[考研] 266求调剂 +4 学员97LZgn 2026-03-13 4/200 2026-03-14 08:37 by zhukairuo
信息提示
请填处理意见