24小时热门版块排行榜    

CyRhmU.jpeg
查看: 791  |  回复: 1
【悬赏金币】回答本帖问题,作者szy242424将赠送您 15 个金币

szy242424

新虫 (初入文坛)

[求助] 1stop能模拟优化12个参数吗,下面是我的matlab的程序,怎么用1stop优化已有1人参与

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))];%形成目标优化函数
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
12参数需要专业版以上版本才能运行

发自小木虫Android客户端
数值计算
2楼2020-12-08 19:45:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 szy242424 的主题更新
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见