✨ Einfach mit Python ☆ Geschätzte verstrichene Zeit nach dem Tod ✨

Was wäre, wenn eine Leiche vor Ihnen wäre?

(引用;名探偵コナン「甘く冷たい宅配便」) 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!

Beispiel

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.

Newtons Gesetz der Kühlung

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

\frac{dT}{dt} = -γ(T - T_s) (1)

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 $. \frac{1}{T-T_s}dT = -γdt

Wenn beide Seiten integriert sind und die Integrationskonstante C ist, log (T - T_s) = -γt + C Es wird sein. Das Lösen dieser Gleichung nach T ergibt die folgende Gleichung. T = T_s + e^{-γt + C} (2)
Wenn die Anfangsbedingung $ T (0) = T_0 $ auferlegt wird, wird die Integrationskonstante C. C = log (T_0-T_s)

Es wird sein. Wenn man dies in Gleichung (2) einsetzt, ist die analytische Lösung unten angegeben. T(t) = T_s + (T_0 - T_s) e^{-γt}

(Transformiere dies auch) \frac{T(t)-T_s}{T_0-T_s} = e^{-γt}

Schätzung der verstrichenen Zeit nach dem Tod durch kontinuierliche Messung der Rektaltemperatur

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. \frac{T_r-T_e}{T_o-T_e}=1.25e^{B*t}-0.25e^{5B*t} (T_e\le23.2) \frac{T_r-T_e}{T_o-T_e}=1.11e^{B*t}-0.11e^{10B*t} (T_e\ge23.2) B=-1.2815(bW)^{-0.625}+0.0284 Jedoch, $ T_r $ ist die Rektaltemperatur ℃ $ T_e $ ist die Umgebungstemperatur ℃ $ T_o $ ist die Rektaltemperatur zum Zeitpunkt des Todes und beträgt 37,2 ° C. $ T_e $ ist konstant beim Durchschnittswert der Messzeit bei Umgebungstemperatur ℃ $ W $ Körpergewicht kg $ b = 1 $ ist der Korrekturfaktor $ B $ ist Newtons Kühlkonstante $ t $ ist die verstrichene Zeit nach dem Tod (h) Wird besorgt. Lösen wir dieses Beispiel sofort basierend darauf!

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!

Verweise

[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

✨ Einfach mit Python ☆ Geschätzte verstrichene Zeit nach dem Tod ✨
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Einfache Ordnersynchronisation mit Python
Messung der Ausführungszeit mit Python With
Einfache Python-Kompilierung mit NUITKA-Utilities
Einfacher HTTP-Server mit Python
Zeitsynchronisation (Windows) mit Python
Einfache Vorhersage von Zeitreihen mit Prophet
[Python] Einfache Parallelverarbeitung mit Joblib
Einfache Python + OpenCV-Programmierung mit Canopy
Einfache Mailübertragung mit Eile Python3
Bayesianische Optimierung, die mit Python sehr einfach ist
Visualisieren Sie Ihre Daten ganz einfach mit Python Seaborn.
Einfache parallele Ausführung mit Python-Unterprozess
[Python] Super einfacher Test mit Assert-Anweisung
[Python] Einfache Überprüfung des Argumenttyps mit Datenklasse
Drucken Sie einfach die in Python verstrichene Zeit in Sekunden
[Easy Python] Lesen von Excel-Dateien mit openpyxl
Einfache Web-App mit Python + Flask + Heroku
Einfaches Web-Scraping mit Python und Ruby
[Python] Probieren Sie mit Keras-RL ganz einfach erweitertes Lernen (DQN) aus
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
CSV-Ausgabe der Google-Suche mit [Python]! 【Einfach】
[Python3] Eine Geschichte, die bei der Zeitzonenkonvertierung steckt
Verwenden Sie vorerst Logger mit Python
So messen Sie die Ausführungszeit mit Python Teil 1
Einfache LASSO-Regressionsanalyse mit Python (keine Theorie)
So messen Sie die Ausführungszeit mit Python Part 2
Statistik mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Python-Zeitmessung
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
Erster Python
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Mikrocomputer mit Python
Mit Python besetzen
Stoppen Sie EC2 für eine bestimmte Zeit + beginnen Sie mit Lambda (Python)
Führen Sie es vorerst mit CentOS7 + Apache2.4 + Python3.6 aus
Laden Sie mp4 einfach teilweise mit Python und youtube-dl herunter!
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
Einfache Möglichkeit, mit Google Colab mit Python zu kratzen
So messen Sie die Wiedergabezeit von MP3-Dateien mit Python
Um Zeit damit zu verbringen, mit Python gezeichnete Figuren zu färben
[Zeitreihen mit Handlung] Dynamische Visualisierung mit Handlung [Python, Aktienkurs]