24小时热门版块排行榜    

查看: 2674  |  回复: 10
【悬赏金币】回答本帖问题,作者Evoly_z将赠送您 88 个金币
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

Evoly_z

银虫 (小有名气)

[求助] 求助代谢动力学系数模拟代码 1stOpt或者MATLAB 已有3人参与

求代谢动力学系数模拟
一级代谢物的动力学方程:dC2/dt=k1*C1-k2*C2
初始条件:t=0,C2=0
且C1=exp(-A*t)。A=0.2779

我尝试了用1stOpt(破解版)和MATLAB ODE方法,都没成功,想请教一下大神。
另外t不是严格的等差数列,取值如:t=0,1,2,4,6,10,15,24

1stOpt代码:

Title Kinetic_ave
Parameters k1[0,100], k2[0,100];
Variable t, C;

StartProgram
var i:integer;

begin
for i:=0 to DataLength -1 do begin
      if i ==0
         C=0;
         else
      C:=C[i-1]+k1*(t-t[i-1])*exp(-0.2779*t) - k2*C*(t-t[i-1]);
         end;
EndProgram;
Data;
//t    C
   0    xxx
   1    xxx
   2    xxx
   4    xxx
   6    xxx
   10  xxx
   15  xxx
   24  xxx


Matlab代码:
function ODE_ave
clear all;clc
format long
aveall;
t=T_h(;
yexp=OLEave(;

k0=[1 1];  

y0=0;
lb=[0 0];
ub=[+inf +inf];   
yy=[y0 yexp'];

tspan=0:1:24;

[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残差平方和= %.6f\n\n',resnorm)
ts=0:1:24;

[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-');
(作图这块儿是copy的,没有做修改)
%---------------------------------------------------------
function f = ObjFunc(k,tspan,y0,yexp)           
[t Xsim] = ode45(@KineticsEqs,tspan,y0,[],k) ;
ysim = Xsim(2:end);
size(ysim);
size(yexp);
f=ysim(1,1)+ysim(2,1)+ysim(4,1)+ysim(6,1)+ysim(10,1)+ysim(15,1)+ysim(24,1) - sum(yexp(:,1));
%----------------------------------------------------------

function dydt = KineticsEqs(t,y,k)
beta(1)=k(1);
beta(2)=k(2);
dydt = beta(1)*exp(-0.2779*t)-beta(2)*y;

求求啦,被这个问题卡了两个多月了,不知道怎么解出k1 k2
回复此楼
RELEASE/ME/FROM/THE/PRISON!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wlfc

新虫 (初入文坛)

【答案】应助回帖

用OpenLu求解,Lu脚本代码:
!!!using["luopt","math"]; //使用命名空间
f(x,y,dy, params::k1,k2)=
{
    dy=k1*(0.701*exp(-3.211*x)+0.299*exp(-0.067*x))-k2*y,
    0 //必须返回0
};
目标函数(_k1,_k2 : i,s,tyz : tyArray,tA,max,k1,k2)=
{
    k1=_k1, k2=_k2, //传递优化变量
    //最后一个参数50表示gsl_ode函数在计算时,最多循环计算50次,这样可以提高速度
    tyz=gsl_ode[@f,nil,0.0,tA,ra1(0), 1e-6, 1e-6, 2, 1e-6,50],
    i=0, s=0, while{++i<max, s=s+[tyz(i,1)-tyArray(i,1)]^2},
    s
};
main(::tyArray,tA,max)=
{
    tyArray=matrix{ //存放实验数据xi,yi
        "0         0
0.33      0.061043
1         0.03675
2         0.05932
4         0.095993
6         0.072057
10        0.05085
15        0.04678
24        0.047673
30        0.034973
48        0.030375
72        0"
    },
    len[tyArray,0,&max], tA=tyArray(all:0), //用len函数取矩阵的行数,tA取矩阵的列
    Opt1[@目标函数] //Opt1函数全局优化
};

结果:
0.1325616120497096        0.358508535326814         3.242596823546582e-003
11楼2021-08-09 21:27:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

独孤神宇

版主 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
参数拟合C2缺少数据
1stOpt容易实现,1.5不支持微分方程拟合,需要下载5.0版本的

发自小木虫Android客户端
数值计算
2楼2021-03-24 07:20:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Evoly_z

银虫 (小有名气)

引用回帖:
2楼: Originally posted by 独孤神宇 at 2021-03-24 07:20:06
参数拟合C2缺少数据
1stOpt容易实现,1.5不支持微分方程拟合,需要下载5.0版本的

谢谢回复。

有C2的数据,因为C1服从指数方程,直接把方程写在程序里了。C2的数据就写在了下面的数据表里。

能分享5.0版的1stOpt下载么?我在网上实在找不到了,我这里也没有校内bbs之类的东西。。

谢谢了
RELEASE/ME/FROM/THE/PRISON!
3楼2021-03-24 11:13:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
C2数据给出来看看
4楼2021-03-24 16:12:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +33 医学老男孩 2026-08-13 80/4000 2026-08-17 14:40 by yq199112088
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +12 Ldrop2023 2026-08-13 14/700 2026-08-17 14:38 by Ldrop2023
[基金申请] 感觉是下周放榜了 +3 angus9576 2026-08-17 6/300 2026-08-17 14:32 by 启萌科技
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 EWi2p09MOOv8 2026-08-16 6/300 2026-08-17 14:02 by EYK67XJMj64E
[博后之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 6GojgJvkDudM 2026-08-16 6/300 2026-08-17 13:58 by EYK67XJMj64E
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 i7NFEVbjQMM5 2026-08-16 4/200 2026-08-17 12:10 by 4GBAYCdVQoK3
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 6GojgJvkDudM 2026-08-16 3/150 2026-08-17 09:49 by xLVPIRuSvCUe
[论文投稿] 岩土工程学报什么时候才能终审完呐 25+3 yeager111 2026-08-10 4/200 2026-08-16 20:42 by tfang
[基金申请] 时间戳又变了8-15 +13 archvillain 2026-08-15 25/1250 2026-08-16 20:13 by zhaosm1982
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 6/300 2026-08-16 20:07 by 奶牛小黑
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +3 Tide man 2026-08-14 3/150 2026-08-16 17:47 by jurkat.1640
[基金申请] 有时候,自然基金真的不能太认真 (我的申报经验) +10 majunge000 2026-08-11 12/600 2026-08-16 08:18 by xli1984
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] filecode +15 documentary 2026-08-10 17/850 2026-08-14 10:08 by kissu88
[基金申请] 静等基金结果 +8 gjjjzhong 2026-08-10 21/1050 2026-08-13 17:56 by 且听虎啸
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 分享一下我之前已中青C的计划书的filecode +4 布布和一二 2026-08-11 5/250 2026-08-13 12:56 by cratir
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
信息提示
请填处理意见