• 提出实际问题

应用于刑事侦查中死亡时间的鉴定,最近一直在看一些经典的悬疑片,里面都会有警察来判断死者的死亡时间,就特别好奇是什么原理,去了解了一下,判断死亡时间是根据牛顿冷却定律推算出来的,那么我就打算用数值分析的方法来实现一下。

  • 基本思想或原理

牛顿冷却定律运用了常微分方程的知识,牛顿冷却定律在实际生活中可以解决好多实际问题。牛顿冷却定律的内容是:物体在空气中冷却的速度与物体温度和空气温度之差成正比。

人体体温受大脑中枢神经调节,人死亡后体温调节的功能消失,尸体的温度受外界环境温度的影响。那么我们已知尸体温度变化率服从牛顿冷却定律,即尸体温度的变化率与他周围的温度差成正比。

若物体在房间里,与物体相比,房间非常大,那么我们假设房间的温度为常温,即20摄氏度。物体对房间的温度改变忽略不计。那就可以直接将牛顿冷却定律应用于刑事侦查中死亡时间的鉴定。

当谋杀发生后,尸体温度从原来的36.5摄氏度按照牛顿冷却定律开始下降。周围空气温度始终保持20摄氏度不变,三小时后,尸体温度变为33.5摄氏度。如果尸体被发现时的温度为30摄氏度,假设现在的时间是下午的五点整,那么我们就可以大概知道谋杀是什么时候发生的。由题我们可以得出相应公式:

由分离变量得:

代入初始条件,可以求得C=16.5,所以得到初值问题的解为:

因为三个小时后尸体的温度为33.5摄氏度,那么我们可以求出

  • 运行环境

Idea/Java编程语言

  • 程序代码
import java.util.ArrayList;
import java.util.List;
/*** @author Sun* @version 2021.2* @date 2022/5/21 10:42*/
public class Runge_Kutta {public static void main(String[] args) {List<List<Double>> result = getEstimates(0.0,36.5,0.2,40);List<Double> xi = result.get(0);List<Double> yi = result.get(1);List<Double> reals = result.get(2);List<Double> miscount = result.get(3);for (int i = 0; i < xi.size(); i++ ) {System.out.println("x"+i+"="+xi.get(i)+"\t"+"y"+i+"="+yi.get(i)+"\t"+"real="+reals.get(i)+"\t"+"mis="+miscount.get(i));}}public static List<List<Double>> getEstimates(double x0,double y0,double h,int N) {List<List<Double>> result = new ArrayList<>();List<Double> xi = new ArrayList<>();List<Double> yi = new ArrayList<>();List<Double> reals = new ArrayList<>();//精确值List<Double> miscount = new ArrayList<>();//误差 real(n)-y(n)double x1,y1,yp,yc,real,mis,K1,K2,K3,K4;for (int i = 0 ; i < N ; i++ ) {x1 = x0 + h;K1 = f(x0,y0);K2 = f(x0+h/2,y0+h*K1/2);K3 = f(x0+h/2,y0+h*K2/2);K4 = f(x1,y0+h*K3);y1 = y0 + h*(K1 + 2*K2 + 2*K3 + K4)/6;real = getReal(x0);mis = Math.abs(real - y1);xi.add(x1);yi.add(y1);reals.add(real);miscount.add(mis);x0 = x1;y0 = y1;}result.add(xi);result.add(yi);result.add(reals);result.add(miscount);return result;}private static double getReal(double x) {//精确值 报告中温度函数公式return 20+(16.5*Math.pow(2.718281,-0.06689*x));}private static double f(double x0, double y0) {//拟合出的数值解 y‘return -1*0.06689*(y0-20);}
}
  • 运行过程和运行结果
  • 实际问题结果

和使用高数里面的常微分方程得到的结果相同,当H=30代入温度函数中,  t=7.4小时,那么我们可以判断谋杀发生的大概时间下午五点前的7.4个小时,也就是早上9时36分。

龙格库塔方法在实际生活中的应用(数值计算Java)相关推荐

  1. matlab:使用4阶龙格库塔方法求解常微分方程组

    %书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法,例10.14使用 %四阶龙格库塔方法 function [t,z] = rk4symeq(fun, t0, tf, ...

  2. matlab 数值计算课 二阶微分方程-龙格库塔方法 ODE45

    详见mathworks 龙格库塔方法 写成矩阵(状态方程)的形式更简洁一点(其实这两种方法结果是一样的,如果C是[1,0,0]的话,就很明显了) 例如:求系统在0-5s内的单位阶跃相应,已知传递函数: ...

  3. matlab:使用四阶龙格库塔方法求解微分方程组

    %书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法,例10.14使用 %四阶龙格库塔方法 function [t,z] = rk4symeq(fun, t0, tf, ...

  4. 【Hydro】龙格-库塔方法的公式推导

    一.龙格-库塔方法的公式推导 摘自<数值计算方法(MATLAB版)> 二.龙格-库塔方法在水库调洪演算的应用 一般库水面坡降很小,忽略动库容影响,近似看成静水面,水库蓄水量V只随坝前水位Z ...

  5. 如何用龙格库塔 方法求解 范德波振子的运动

    如何用龙格库塔 方法求解 范德波振子的运动 坑,没有想好. 这是一个非常好的线索: Generalized Forced Van Der Pol Oscillator Phase Plot - fun ...

  6. 计算方法实验(三):四阶龙格-库塔方法

    四阶Runge-Kutta数学原理 给定常微分方程初值问题 {dydx=f(x,y),a≤x≤by(a)=αh=b−aN\left\{ \begin{matrix} \frac{\text{dy}}{ ...

  7. 组合数学在计算机科学编码中的应用,组合数学的历史、方法及在生活中的应用...

    组合数学的历史.方法及在生活中的应用摘要:组合数学从数千年前开始萌芽,经历了著名的幻方问题和杨辉三角,直到莱布尼茨正式提出这一科学门类.组合数学也称为组合分析或者组合学. 简单地说, 组合数学是&qu ...

  8. 用四阶龙格-库塔方法求微分方程组

    最近一段时间再忙期末考试,小学期课程设计的东西,没怎么更新博客.... 更新一个用四阶龙格库塔方法求解脉冲微分方程,题目来源是一篇论文<Impulsive control of projecti ...

  9. matlab:使用4阶龙格库塔方法求微分方程组的值

    参考书目:<数值分析(matlab版)>  作者:周璐 翻译 %调用龙格库塔方法求解微分方程组,P399,9.7 微分方程组 function [t,z] = my_rk4b(f, t0, ...

  10. 龙格-库塔方法学习笔记

    1.龙格-库塔法简介    龙格-库塔法是一种在工程上应用广泛的高精度单步算法,其中包括著名的欧拉法,用于数值求解微分方程. 由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂. 在各种 ...

最新文章

  1. iPhone曝严重漏洞,用户接听FaceTime前或被“监听”!
  2. 结果方程模型(SEM)的理论和基本实现过程
  3. java字典序列化_Java对象序列化,Serialize Java Data Object,音标,读音,翻译,英文例句,英语词典...
  4. 4月13日学习笔记——jQuery动画
  5. 【arduino】arduino代码运行时间测试函数,代码性能运行时间测试方法
  6. android自定义图片文本,Android 实现文字与图片的混排
  7. secureCRT配置ssh -x
  8. Uncaught SyntaxError: Invalid shorthand property initializer
  9. linux下创建文件没有权限,分享一个Linux无法创建文件夹,但是目录权限却显示正常的问题和解决...
  10. .net调用c++方法时如何释放c++中分配的内存_C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)...
  11. 前端学习(1877)vue之电商管理系统电商系统之头部布局
  12. c++程序设计中多态与虚函数知识点
  13. 计算机视觉论文-2021-06-21
  14. 基于Spring Security的认证授权_连接数据库认证_Spring Security OAuth2.0认证授权---springcloud工作笔记128
  15. 利用 Google Chart API 生成二维码大小不一致
  16. 三元运算符最终结果的数据类型
  17. 为什么手机显示系统服务器异常退出游戏,为什么现在进入游戏会提示服务期异常...
  18. 2进制转16进制c语言库函数,单片机 avr c语言 二进制 十进制 十六进制 快速转换...
  19. 产品生命周期管理展望
  20. 记录你生活的点滴,体会分享的快乐

热门文章

  1. 抢走Salesforce大客户,国产CRM靠的不是运气
  2. python简易语音助手
  3. 视频教程-常见小票打印机打印故障及解决方法汇总视频教程-Windows
  4. ue4材质节点大全_UE4材质节点大全
  5. attention 文字识别算法_一文带你了解文字识别
  6. Detours学习之七:Detours示例程序构建
  7. 多核支持向量机原理及实现
  8. Equitrac智能打印管理软件中文版
  9. python等值线如何设置高度的范围和间隔_matlab 等值线间距问题
  10. 框架设计--第二章 Spring中的Bean--习题答案