求助……matlab数学实验(给药方案)

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:42:26
给药方案:某药物在血液中浓度低于10时,没有疗效;高于25(μg/ml)时,又会导致药物中毒,所以有效浓度为(10,25),制定给药方案:(1)血药浓度变化规律c=c(t)是什么?(2)初始剂量D0多大?(3)间隔多长时间τ给药?(4)每次重复剂量D多大?

实验数据:一次注射300mg后,一定时间t采样测得血浓度c(μg/ml)如下表

时间
0.25
0.5
1
1.5
2

血浓度
19.21
18.15
15.36
14.10
12.89

时间
3
4
6
8

血浓度
9.32
7.45
5.24
3.01

建模提示:给药方案的解决

1. 设血药浓度降低的速率与当时浓度成正

比:dc/dt=-kc 。

2. 体内血液容积V不变:d=300时,c(0)= d/V。

3. 得到解为:c(t)=(d/V)*e^(-k*t) ,解出V。

4. 初始剂量D0=Vc2,D=V(c2-c1); m=(1/k)ln(c2/c1)


对了,要的是程序设计……我才一级,身上没几分,烦劳各位GGJJ了~

用非线性回归曲线拟合方法,nlinfit函数。

function blood
clc;clear;
d=300;c1=10;c2=25;
t=[0.25 0.5 1 1.5 2 3 4 6 8]'
c=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01]'

beta = NLINFIT(t,c,@fun,[1 1]);
d_V=beta(1);k=beta(2),V=d/d_V
tt=0:0.1:8;
C=d_V*exp(-k*tt);
plot(t,c,'o',tt,C)
D0=V*c2,D=V*(c2-c1),m=(1/k)*log(c2/c1)

function ct=fun(beta,t)
d_V=beta(1);k=beta(2);
ct=d_V*exp(-k*t);

结果:
t =

0.2500
0.5000
1.0000
1.5000
2.0000
3.0000
4.0000
6.0000
8.0000

c =

19.2100
18.1500
15.3600
14.1000
12.8900
9.3200
7.4500
5.2400
3.0100

k = 0.2420
V = 14.8212
D0 = 370.5291
D = 222.3175
m = 3.7868

另外,可以用符号计算,求出浓度与时间的关系:
>> c=dsolve('Dc=-k*c','c(0