如何在matlab里加stop,1stop能模拟优化12个参数吗,下面是我的matlab的程序,怎么用1stop优化...

function kk

format long e

k0=[230,0.3,50,0.3,1.2,0.001,0.1,0.001,0.1,0.001,0.1,0.1];

lb=[230,0.3,50,0.3,1.2,0.001,0.1,0.001,0.1,0.001,0.1,0.1];

ub =[300,1,100,3,10.4, 1.2,2.4,1.2,0.8, 0.1,4.5,4.5];

data=...

[0        34.2775          0              0         0.562205354

6        33.9805          0              0            0.618817941

12        31.941          0                  0     0.797936454

18        28.739        0.9935          0            1.554008384

24        26.3835        1.3815          0            2.141789344

30        23.8955        1.5745        1.4795        2.543955264

36        21.334        1.908        1.7625        3.017273616

42        19.128        2.9885        2.038        3.295696176

60        11.2065        4.693        3.262        3.274041088

66        8.9005        5.1295        3.581        3.4070652

72        6.4395        5.6395        4.041        3.753546608

84        1.496        6.6735        4.71        3.595773824];

x0=data(1,2:end);

tspan=data(:,1);

yexp = [data(2:end,2) data(2:end,3) data(2:end,4) data(2:end,5)];

[k,resnorm,residual,nlparci,jacobian] =lsqnonlin(@ObjFunc,k0,lb,ub,[],tspan,x0,yexp);

ts=[0,84];

[ts ,ys] = ode23s(@KineticsEqs,ts,x0,[],k);

yy = [data(:,2) data(:,3) data(:,4) data(:,5)];

plot(ts,ys(:,1),'b',tspan,yy(:,1),'bo');

hold on

plot(ts,ys(:,2),'r',tspan,yy(:,2),'r*');

plot(ts,ys(:,3),'k',tspan,yy(:,3),'k+');

plot(ts,ys(:,4),'g',tspan,yy(:,4),'g+');

legend('C1的计算值','C1的实验值','C2的计算值','C2的实验值','C3的计算值','C3的实验值','C4的计算值','C4的实验值')

end

function dCdt = KineticsEqs(t ,C,k)              % ODE模型方程,C为浓度,k为微分方程中的系数,t为导数

dC1dt =0.19*C(4)/(C(4)+0.78+C(4)^2/300.8)*(1-C(2)/k(1))^k(2)*(1-C(3)/k(3))^k(4)*C(1);%第一个微分方程,等号前面是C(1)对t的微分

dC2dt =k(5)*dC1dt+k(6)*C(1);%第二个微分方程,等号前面是C(2)对t的微分

dC3dt =k(7)*dC1dt+k(8)*C(1);%第三个微分方程,等号前面是C(3)对t的微分

dC4dt =-(1/k(9)*dC1dt+k(10)*C(1)+1/k(11)*dC2dt+1/k(12)*dC3dt);%第四个微分方程,等号前面是C(4)对t的微分

dCdt = [dC1dt; dC2dt;dC3dt;dC4dt];%微分方程组

function f = ObjFunc(k0,tspan,x0,yexp)           % 目标函数

[t, Xsim] = ode23s(@KineticsEqs,tspan,x0,[],k0);% 求解常微分方程,其中tspan为t的取值点,x0为微分方程组的初始值,k为微分方程的系数,返回t为微分方程组解的取值点,Xsim为微分方程组的解

Xsim1=Xsim(:,1);%提取Xsim的第一列

Xsim2=Xsim(:,2);%提取Xsim的第二列

Xsim3=Xsim(:,3);%提取Xsim的第三列

Xsim4=Xsim(:,4);%提取Xsim的第四列

ysim(:,1) = Xsim1(2:end);%微分方程的第一个变量,从第二个解到最后一个解赋值给ysim的第一列

ysim(:,2) = Xsim2(2:end);%微分方程的第二个变量,从第二个解到最后一个解赋值给ysim的第二列

ysim(:,3) = Xsim3(2:end);%微分方程的第三个变量,从第二个解到最后一个解赋值给ysim的第三列

ysim(:,4) = Xsim4(2:end);%微分方程的第四个变量,从第二个解到最后一个解赋值给ysim的第四列

f = [(ysim(:,1)-yexp(:,1)) (ysim(:,2)-yexp(:,2)) (ysim(:,3)-yexp(:,3)) (ysim(:,4)-yexp(:,4))];%形成目标优化函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值