跳转到内容

怎么又是微分方程

在 MATLAB 里面大战微分方程(失败

Section titled “在 MATLAB 里面大战微分方程(失败”

前置复习:解方程,但是是微分方程

根据常识,我们知道物体的降温速度受到物体温度 T(t)T(t) 和室温 TsT_s 之差的影响,即

dTdt=k(TTs)\frac{dT}{dt} = -k(T - T_s)

其中 kk 是冷却系数,一个常数

由上面那个式子可以积分再整理就可以得到

T(t)=Ts+CektT(t) = T_s+Ce^{-kt}

此时题目应该会给一些可以代入的数值,代进去就能求解答案了

在 MATLAB 中,log(x)表示 lnx\ln xexp(x)表示 exe^x

设一次服药量为 AAc(t)c(t) 为血液中药物浓度,kk 为浓度衰减系数,那么对于单次服药显然有

dcdt=kc\frac{dc}{dt}=-kc

又由于 c(0)=Ac(0)=A,于是

c(t)=Aektc(t)=Ae^{-kt}

那对于多次服药呢?可以把第 nn 次服药后的浓度设为 CnC_n,服药间隔为 TT,于是就可以递推得到

C1=Ac(T)=C1ekTC2=C1ekT+ACn+1=CnekT+A\begin{aligned} C_1&=A \\ c(T)&=C_1e^{-kT} \\ C_2&=C_1e^{-kT} + A \\ &\cdots \\ C_{n+1} &= C_ne^{-kT}+A \end{aligned}

展开再展开可以发现

Cn=A(1+ekT+e2kT++e(n1)kT)C_n=A(1+e^{-kT}+e^{-2kT}+\cdots+e^{-(n-1)kT})

然后我们发现这就是个等比数列求和,得到

Cn=A1enkT1ekTC_n=A\frac{1-e^{-nkT}}{1-e^{-kT}}

显然 limn\lim_{n \to \infty} 时,enkT0e^{-nkT}\to 0,于是 Cmax=A1ekT\displaystyle C_{\text{max}} = \frac{A}{1-e^{-kT}}Cmin=CmaxekTC_{\text{min}} = C_{\text{max}}e^{-kT}