柯南案件时间推算:利用Matlab求解牛顿冷却定律
根据牛顿冷却定律,尸体温度的变化满足以下微分方程:
$ \frac{dT}{dt}=-k(T-T_0) $
其中,$T$为尸体温度,$T_0$为室内温度,$k$为常数。
由题意可知,当$t=0$时,$T=26$;当$t=2$时,$T=18$,因此可列出以下方程组:
$\begin{cases} 26=T_0+(T_0-26)e^{-2k} \ 18=T_0+(T_0-26)e^{-4k} \end{cases}$
将两式相减,消去$T_0$,得到:
$8=(T_0-26)(e^{-2k}-e^{-4k})$
令$x=e^{-2k}$,则上式可化为:
$8=(T_0-26)(x-\frac{1}{x^2})$
整理可得:
$8x^3-(T_0-26)x^2-8x+T_0-26=0$
利用matlab,可以求解出$x$的值:
syms x T0;
eqn = 8*x^3-(T0-26)*x^2-8*x+T0-26 == 0;
solx = solve(eqn,x);
将$x$的值代入原方程组,可以求解出$T_0$的值:
T0 = double(solve(subs(26==T0+(T0-26)*solx(1)^(-1),solx(1))));
T0 % 输出T0的值
得到$T_0=9.6$。
再利用微分方程求解$k$的值:
syms t T;
eqn2 = diff(T,t) == -k*(T-9.6);
cond = T(0) == 26;
solT = dsolve(eqn2,cond);
solT % 输出T关于t的表达式
由于题目要求估计凶案发生时间,因此只需要将求得的$T$与实际测量到的温度值比较,即可得到凶案发生时间。
原文地址: https://www.cveoy.top/t/topic/nSbZ 著作权归作者所有。请勿转载和采集!