matlab eqs,matlab拟合数据 - 计算模拟 - 小木虫 - 学术 科研 互动社区

CODE:

function feixianxingnihe_0508

clear all;clc

format long

data=[2.42e-6 353.15

2.64e-6 363.15

2.71e-6 373.15

];

xspan=data(:,1);

Texp=data(:,2);

k0=[1e-1 -1e-5 1e-5];

lb=-[0 1 0]*1;

ub=[1 0 1]*1;

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

% 使用函数lsqnonlin()进行参数估计

OPTIONS=optimset('MaxFunEvals',1000);

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

lsqnonlin(@ObjFunc,k0,lb,ub,OPTIONS,xspan,Texp);

ci = nlparci(k,residual,jacobian);

%residual;

fprintf('\n\n拟合结果:\n')

fprintf('\n\t参数 a = %.16f',k(1))

fprintf('\n\t参数 b = %.16f',k(2))

fprintf('\n\t参数 c = %.16f',k(3))

y=KineticsEqs(xspan,k);

R2=1-sum((Texp-y).^2)./sum((Texp-mean(y)).^2);

fprintf('\n\t相关系数之平方R^2 = %.16f',R2);

figure(1)

mm=max(xspan)-min(xspan);

xspan1=min(xspan)-0.1*mm:1e-8:max(xspan)+0.1*mm;

plot(xspan1,KineticsEqs(xspan1,k),'b-',xspan,Texp,'or'),legend('计算值','实验值','Location','Best')

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

function f = ObjFunc(k,xspan,Texp)

f=KineticsEqs(xspan,k)-Texp;

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

function T = KineticsEqs(x,k)

R=8.314;p=101325;

V=x;

a=k(1);b=k(2);c=k(3);

T=(p+a./(V.*(V+b)+c*(V-b))).*(V-b)/R;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值