QQ登录

只需一步,快速开始

微信登录

手机微信,扫码同步

用户名登录

用户名,密码登录

搜索
浙江汇甬

[求助] 求会matlab的化工大佬帮我看一下这个动力学模型是否有问题

[复制链接]
1K |1
阅读字号:
啦啦啦1525VIP会员 VIP会员 | 显示全部楼层 |阅读模式       最后访问IP福建省
海川小学1年  |  头衔:  TA未设置 
已绑手机   ★悬赏任务→ 发悬赏(0)  承接(0/0)   

加入五千万化工人社群

您需要 登录 才可以下载或查看,没有账号?注册

x
function nihe_0316
%   微分方程的参数估计
%
clear all;
clc;
format long;
global t0;
% k10,E,Ka 对应k(1)、k(2)、k(3)
k0 =[5.33E9;93.06;0.0437]; % 参数初值,重要!,可将结果反复代入迭代计算!!
x0 = 0.63713;  %初始状态,没有就取第一行数据
lb = [0 0 0];   % 参数下限,根据拟合结果,适当调整
ub = [+inf +inf +inf];    % 参数上限
% 实验数据:
expdata= ...
[0        0.63713
60        0.79642
120        0.87377
240        0.90782
360        0.91735];
t0=expdata(:,1);
yexp =expdata(:,2);         % yexp: 对应实验数据[Xb]

% ------------------------------------------------------------------
% 使用函数lsqnonlin()进行参数估计
k=lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp);   

fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk10 = %.8f\n',k(1))
fprintf('\tE = %.8f\n',k(2))
fprintf('\tKa = %.8f\n',k(3))

% ----------------------------------------------------
tspan = [t0(1) t0(end)];  
[t,xx] = ode45(@KineticEqs,tspan,x0,[],k);
x=spline(t,xx,t0); %插值,使理论值和实验值个数一致

% 计算相关系数
A=corrcoef(yexp,x(:,1));
fprintf('\nXb的相关系数R为:\n')
fprintf('\tR = %.8f\n',A(1,2))
%
% 计算决定系数
r(1)=1-sum((yexp-x(:,1)).^2)./sum((yexp-mean(yexp)).^2);
% ********************************决定系数
fprintf('\nXb的决定系数R^2为:\n')
fprintf('\tR^2 = %.8f\n',r(1))

% 计算均方根误差
rmse(1)=sqrt(sum((yexp-x(:,1)).^2)/length(t0));
fprintf('\nXb的均方根误差RMSE为:\n')
fprintf('\tRMSE = %.8f\n',rmse(1))
%
% 计算残差平方和 SSE(Sum of Squares for Error)
ssr(1)=sum((yexp(:,1)-x(:,1)).^2);
fprintf('\nXb的残差平方和为:\n')
fprintf('\tSSE = %.8f\n',ssr(1))
% ----------------------------------------------------
figure(1)
plot(t,xx(:,1),'b-',t0,yexp,'ro'),legend('理论值','实验值','Location','best')
xlabel('时间');ylabel('实验值N');

% ------------------------------------------------------------------
function f = ObjFunc4LNL(k,x0,yexp)
tspan = [t0(1) t0(end)];   
[t,xx] = ode45(@KineticEqs,tspan,x0,[],k);
x=spline(t,xx,t0);
f = x - yexp; % 理论值与实验值的差值,残差
end

% ------------------------------------------------------------------
function dXbdt = KineticEqs(t,Xb,k)   % 微分方程, k10,E,Ka 对应k(1)、k(2)、k(3)
T=358.15;
m=3;
N0=0.1467;
Cb0=0.5564;
Ca=Cb0*(3-Xb);
Cb=Cb0*(1-Xb);
Cc=Cb0*Xb;
Keq=exp(4873/T-13.813);
Kb=5.2112*k(3);
Kc=2.2695*k(3);
dXbdt = (m*k(1)*exp(-k(2)/8.314*T)*(Ca*Cb-Cc/Keq))/(N0*(1+k(3)*Ca+Kb*Cb+Kc*Cc)^2);
end
% ------------------------------------------------------------------
end

结果算出来的X的计算值不随时间变化,理论上是一个dx/dt=f(x)的方程,我看书上dc/dt=f(c)的方程用RK法可以计算加拟合,不知道为什么我这个就不行,请大家帮我看一下

 

发表于 2020-3-16 23:58:50

评分

参与人数 1财富 +4 收起 理由
qy576100527 + 4 发起议题

查看全部评分

声明:

本站是提供个人知识管理及信息存储的网络存储空间,所有内容均由用户发布,不代表本站观点。

请注意甄别主题及回复内容中的联系方式、诱导购买等信息,谨防诈骗。内容及翻译仅供参考

当前内容由会员用户名 啦啦啦1525 发布!权益归其或其声明的所有人所有 仅代表其个人观点, 仅供个人学习、研究之用。

本主题及回复中的网友及版主依个人意愿的点评互动、推荐、评分等,均不代表本站认可其内容或确认其权益归属,

如发现有害或侵权内容,可联系我站举证删除,我站在线客服信息service@hcbbs.com 电话188-4091-1640 

哦,神呢吗十多年没碰这个了,只能坐观。

 

发表于 2020-3-22 20:42:34

回复

使用道具 举报


          特别提示:

          本站系信息发布平台,仅提供信息内容存储服务。

         禁止发布上传, 包括但不限于:不能公开传播或无传播权的出版物、无传播权的在行标准规范、涉密内容等
          不听劝告后果自负!造成平台或第三方损失的,依法追究相关责任。

          请遵守国家法规;不要散播涉爆类、涉黄毒赌类、涉及宗教、政治议题、谣言负面等信息   

     

您需要登录后才可以回帖 登录 | 注册

本版积分规则

【发主题】高级

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français Español العربية Persian

联系

0411-88254066

18840911640

(工作时间09:00-17:00)

其它时间请联【微信客服】

或 电子信箱信箱

service@hcbbs.com

微信群

先加微信

再说要入何种专业群

拉你入群  勿发广告

100多个海川专业微信群

还有QQ大群:7990017
申请时注明你的QQ号


 

关于我们  -  隐私协议    -  网站声明   -  广告服务   -  企业会员   -  个人会员  -   主题竞价   -   专家智库  -  服务市场    -  APP和微信   -  分类信息   -     -  在线计算  -  单位换算


不良信息举报 0411-88254066  举报中心       在线客服#微信号:  18840911640    电子信箱   service@hcbbs.com   【QQ客服】3153267246   


海川化工论坛网(hcbbs) @Discuz! X3  加载0.054996 second(s), 57 queries , Redis On. | 网站统计 | 


辽公安备21100302203002号  | 辽ICP备17009251号  |  辽B2证-20170197