动力学 matlab,用Matlab求反应动力学参数

中间先拟合为一段一级和一段二级,并求出各点的导数,最后拟合出需要的参数。拟合过程中出现导数为负数,求各位大神指导!

代码如下:

clc;

clear all;

format short g

%%%分段求解  一级

expE1=[0        2054.794521

300        903.6835616

600        449.3047945];

t1=expE1(:,1);

C0=expE1(1,2);

C1=expE1(:,2);

LCO=log(C0);

LC=log(C1);

d=LCO-LC;

K0=[0.02];

K=lsqcurvefit(@FunS,K0,t1,d);

mdcdt1=K.*C1;

%%%%分段求解 二级

expE2=[900        200.3150685

1200        107.0773973

1500        78.67123288

2100        57.00136986

2700        47.67328767

3300        38.26164384

3900        28.4

4500        21.78219178];

C02=expE2(1,2);

C2=expE2(:,2);

t2=expE2(:,1);

RC2=1./C2;

d2=RC2-1/C02;

K20=[0.02];

K2=lsqcurvefit(@FunS2,K20,t2,d2);

mdcdt2=K2.*(C2.^2);

%%%%合并求参数

mdcdt=[mdcdt1;mdcdt2];

C=[C1;C2];

%%%% T=250C下,mnts初值P0

P0=[89 0.0328 110 2284.62585];

P=lsqcurvefit(@FunP,P0,C,mdcdt)

mdcdt3=(P(1)+P(2).*C)./(P(3)+1/P(4)./C./C)

figure

plot(C,mdcdt,'r-');

hold on;

plot(C,mdcdt3,'b*')

function f=FunS(K,t1)

f=K(1).*t1;

function f=FunS2(K2,t2)

f=K2(1).*t2;

function f=FunP(P,C)

f=(P(1)+P(2).*C)./(P(3)+1/P(4)./C./C);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值