(引用;名探偵コナン「甘く冷たい宅配便」) Als Conan seinen Körper findet, denkt er ganz am Anfang an die verstrichene Zeit nach dem Tod, oder? Wenn Sie den voraussichtlichen Zeitpunkt des Todes kennen, können Sie die Verdächtigen erheblich eingrenzen. \ (^ O ^) / Dieses Mal werde ich Ihnen vorstellen, wie Sie mehr über die verstrichene Zeit nach dem Tod erfahren können!
In einem Kühlwagen mit einer Raumtemperatur von 16 ° C befand sich die Leiche eines Mannes. Der Mann wog 86 kg und als Conan die Temperatur im Rektum des Körpers maß, waren es 27 ° C. Finden Sie die verstrichene Zeit nach dem Tod eines Mannes.
Betrachten Sie zunächst ein vereinfachtes Phänomen. Betrachten Sie das Problem, dass heißer Kaffee in einer Tasse durch die Umgebungstemperatur (Luft) gekühlt wird. Zu diesem Zeitpunkt wird gesagt, dass das folgende "Newtonsche Kühlgesetz" ungefähr gilt. Die Differentialgleichung, die das Newtonsche Gesetz der Kühlung ausdrückt, lautet
Es wird vertreten durch. Hier ist jedes Zeichen
$ T $: Heißwassertemperatur
$ T_s $: Umgebungstemperatur
$ \ gamma $: Kühlkonstante
Repräsentiert. Diese Differentialgleichung kann analytisch gelöst werden. Teilen Sie zunächst beide Seiten von Gleichung (1) durch $ T-T_s $.
Wenn beide Seiten integriert sind und die Integrationskonstante C ist,
Wenn die Anfangsbedingung $ T (0) = T_0 $ auferlegt wird, wird die Integrationskonstante C.
Es wird sein. Wenn man dies in Gleichung (2) einsetzt, ist die analytische Lösung unten angegeben.
(Transformiere dies auch)
Verwenden Sie als nächstes das Newtonsche Gesetz der Abkühlung, um die verstrichene Zeit nach dem Tod zu bestimmen. Gemäß "Schätzung der verstrichenen Zeit nach dem Tod durch kontinuierliche Messung der Rektaltemperatur (Wasedain Advanced Science and Technology)" wird im Fall eines Körpers die Differentialgleichung wie folgt transformiert.
import sympy
def death_time(Tr,Te,W):
Tr=Tr
Te=Te
W=W
B = sympy.Symbol('B')
t = sympy.Symbol('t')
To = 37.2
b = 1
E = sympy.S.Exp1
equation1 = 1.25*(E**(B*t))-0.25*(E**(5*B*t))-(Tr-Te)/(To-Te)
equation2 = 1.11*(E**(B*t))-0.11*(E**(10*B*t))-(Tr-Te)/(To-Te)
equation3 = -1.2815*((b*W)**(-0.625))+0.0284-B
if Te <= 23.2:
print(sympy.solve([equation1,equation3]))
else:
print(sympy.solve([equation2,equation3]))
death_time(27,16,86) #Einstellen dieses Problems
Gemäß der $$ -Referenz verwendet $ T_e $ den Durchschnitt der Umgebungstemperatur, aber dieses Mal wurde die Raumtemperatur von 16 ° C zum Zeitpunkt der Entdeckung auf $ T_e $ eingestellt. Sie können das Ergebnis verstehen, ohne es zu sagen, aber scipy konnte die Berechnung einschließlich einer solchen Leistungsvariablen nicht direkt durchführen, und selbst als ich morgens aufwachte, berechnete ich weiter (weinte). Ich beschloss, es auf der Grundlage der Idee der Trial-and-Error-Methode gemäß der Referenz zu lösen.
(引用KrylovSubspaceAcceleratedNewtonAlgorithm:ApplicationtoDynamicProgressiveCollapseSimulationofFrames)
Da der Prozess des Findens des Differentials der Funktion und des Lösens der Gleichung bei jeder Wiederholung groß ist, haben wir uns entschlossen, mit der Krilov-Teilaustauschmethode zu berechnen, die das Differential durch die Differenz approximiert, wie in der obigen Abbildung gezeigt.
import math
from scipy.optimize import newton_krylov
import sympy
#(3)Entspricht der Formel. Körpergewicht(kg)Berechnen Sie die Newtonsche Kühlkonstante B aus. Zu(Rektale Temperatur beim Tod)37.2
def predict_B(W):
W=W
B = sympy.Symbol('B')
b = 1
equation3 = -1.2815*((b*W)**(-0.625))+0.0284-B
B = sympy.solve([equation3])[B]
return B
#(1)(2)Entspricht einem Ausdruck. Fallklassifizierung nach Umgebungstemperatur Te
def predict_deathtime(W,Tr,Te,ta):
Bx = predict_B(W)
Tr,Te,ta = Tr,Te,ta
E = sympy.S.Exp1
To = 37.2
def F(x):
if Te <= 23.2:
return 1.25*(E**(Bx*x))-0.25*(E**(5*Bx*x))-(Tr-Te)/(To-Te)
else:
return 1.11*(E**(Bx*x))-0.11*(E**(10*Bx*x))-(Tr-Te)/(To-Te)
guess = ta
sol = newton_krylov(F, guess, method='lgmres')
print(sol)
#(Körpergewicht,Rektale Temperatur,Umgebungstemperatur,Anfangswert der verstrichenen Zeit nach dem Tod)Geben Sie in der Reihenfolge von ein
#Beachten Sie, dass der Differenzwert nicht erhalten werden kann, indem der Anfangswert der nach dem Tod verstrichenen Zeit auf 0 gesetzt wird.
predict_deathtime(86,27,16,2)
Ausgabeergebnis 17.19191007875492
Daher stellte sich in diesem Beispiel heraus, dass er vor ungefähr 17 Stunden gestorben ist!
[Beginnen wir mit der Computerwissenschaft! Newtons Kühlgesetz ①](https://dekfractal.com/2018/09/23/%E8%A8%88%E7%AE%97%E7%A7%91%E5%AD%A6%E3%82% 92% E3% 81% AF% E3% 81% 98% E3% 82% 81% E3% 82% 88% E3% 81% 86% EF% BC% 81% E3% 80% 80% E3% 83% 8B% E3% 83% A5% E3% 83% BC% E3% 83% 88% E3% 83% B3% E3% 81% AE% E5% 86% B7% E5% 8D% B4% E6% B3% 95% E5% 89% 87 /) Schätzung der verstrichenen Zeit nach dem Tod durch kontinuierliche Messung der Rektaltemperatur (Waseda University Advanced Science and Technology) ○ (Studie) Mikiyasu Inoue * (Richtig) Kiyotaka Sakai (Waseda Univ.) Jun Kintake
Recommended Posts