matlab模型参数不匹配怎么办,matlab求模型参数有错误,求指导 - 计算模拟 - 小木虫 - 学术 科研 互动社区...

CODE:

function KineticsEst1_Int_modified_by_Yuezhilan

clear all;clc

format long

tspan=[31 32 33 34 35 36 37 38 39 40 41 42 43 44 45]-31;

yexp=[22.73032 24.55624 25.88679 26.69019 27.16334 27.45866 27.64919 27.57615 27.70635 27.77303 27.86195 27.91911 27.95721 27.98897]';

beta0=[100 10 0.1 ];

y0=20.4122;

lb=[-1 -1 -1]*1e6;

ub=[1e9 1e9 1e2];

yy=[y0 yexp'];

k0=beta0;

[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...

lsqnonlin(@ObjFunc,k0,lb,ub,[],tspan,y0,yexp);

fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')

fprintf('\t待拟合参数 k1 = %.6f\n',k(1))

fprintf('\t待拟合参数 k2 = %.6f\n',k(2))

fprintf('\t待拟合参数 k3 = %.6f\n',k(3))

fprintf('  残差平方和= %.6f\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-Square = %.6f',R2);

figure(1)

plot(ts,ys,'b',tspan,yy,'or'),legend('计算值','实验值','Location','best');

yr=y-yexp;

figure(2)

plot(tspan(2:end),yr,'r*',[-1 15],[0 0]),axis([-1 15 -0.5 0.5]);

figure(3)

plot(yexp,y,'ro',[21 29],[21 29],'b-');

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

function f = ObjFunc(k,tspan,y0,yexp)           % 目标函数

[t Xsim] = ode45(@KineticsEqs,tspan,y0,[],k) ;

ysim = Xsim(2:end);

size(ysim);

size(yexp);

f=ysim-yexp;

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

function dydt = KineticsEqs(t,y,k)

beta(1)=k(1);

beta(2)=k(2);

beta(3)=k(3);

dydt = 0.001414/(1/(4.5727*10^4*beta(1)*(1-0.02119*y)^beta(2))+1/beta(3)/45727);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值