2019年第八届数学建模国际赛小美赛A题放射性产生的热量解题全过程文档及程序

2019年第八届数学建模国际赛小美赛

A题 放射性产生的热量

原题再现:

  假设我们把一块半衰期很长的放射性物质做成一个特定的形状。在这种材料中,原子核在衰变时会以随机的方向释放质子。我们假设携带质子的能量是一个常数。质子在穿过致密物质时,会释放出所携带的能量并将其转化为热量。质子的能量释放速率与其在材料中的行进距离之间的关系符合布拉格峰曲线1,即当质子行进到一定的恒定距离时,大部分能量被释放。我们把这种材料放在水中,我们可以假设质子在水中的布拉格峰曲线与材料中的相同。问题是,为了最大限度地提高材料中质子释放的总能量,材料的形状是什么?
在这里插入图片描述

整体求解过程概述(摘要)

  当原子核衰变时,它将沿着随机方向释放质子。质子的能量释放速率与质子在材料中的路径长度之间的关系符合布拉格峰值曲线,该曲线广泛应用于医学化疗、航空航天监测等领域。因此,研究材料的形状,最大限度地提高质子在材料中释放的总能量,具有重要的价值和意义。
  根据Mohammad Reza Rezaie[1]研究的Rn 222及其α粒子在空气、水等介质中的能量损失实验,利用实验拟合的三次多项式粒子能量方程,再现了Rn 222及α粒子在不同材料中的Bragg峰曲线分布(图3)。从Rn 222开始,证实了在小误差范围内,质子处于稠密材料中运动的布拉格峰值曲线与水中运动的合理假设相同。
  为了得到解析Bragg峰值曲线的函数方程,我们使用美国国家航空航天局空间辐射实验室现有的H55.25MeV布拉格峰值曲线的散射数据来拟合Bortfeld T[2]提出的近似函数关系。拟合可以分为上升段和下降段。通过在MATLAB中编程lsqcurvefi函数,得到能量损失方程的参数。上升段α=0.0001,p=2.1808;下降段α=0.3528,p=0.1586。
  鉴于质子能量损失的复杂性,本文主要建立了描述非弹性能量损失的方程。为了获得材料的最佳形状,碰撞方程的散射角θ近似均匀分布在[0,2𝜋],并通过蒙特卡罗方法模拟材料形状(图7)。基于上述H55.25MeV的Bragg峰曲线方程,结合Biersack[3]提出的碰撞方程的几何解,建立了碰撞参数均匀分布[0,1]的散射角θ近似方程,并用蒙特卡罗方法模拟了材料形状(图9)。
  最后,我们比较了最小二乘法和模拟退火算法对能量损失方程参数的拟合效果,其中下降段α=0.3529,p=0.1584,对比度误差在2%以内。
  本文的材料形状优化是基于H55.25MeV布拉格峰曲线的分析公式。对于α粒子(5.49MeV)在空气中的Bragg峰值曲线,上述方法也适用。

模型假设:

  本文研究的粒子是质子,在建模之前需要做以下假设[5]:
  (1) 原子的核外电子可视为静止的自由电子;
  (2) 忽略轨道大小和形状的统计波动,因为此处考虑“平均轨道”,路径视为位移。
  (3) 材料中质子的能量损失只考虑质子为高能质子,而不考虑低能质子。
  (4) 能量损失主要考虑非弹性能量损失。

问题重述:

  题目说原子核在衰变时随机释放质子。我们假设质子携带的能量是恒定的,当质子穿过致密物质本身时,质子释放出它们携带的能量并将其转化为热量。质子能量释放速率与其在材料中传播距离之间的关系符合布拉格峰曲线,即大部分能量在传播到一定恒定距离时释放。考虑到材料在水中运动与材料中的布拉格峰曲线一致,我们需要设计材料的形状,以使质子在材料中释放的总能量最大化。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

clc,clear
close all;
%% Energy distance function curve of 222Rn in different media
figure(1);
x=0:80; 
% Air
E1=5.49-0.081.*x-0.0009333*x.^2-0.000007997*x.^3;
plot(x,E1,'LineWidth',2)
xlabel('Path Length [mm]')
ylabel('Alpha Energy [MeV]')
grid on
hold on
axis([0 60 0 6]);
% Water
E2=5.49-0.0792.*x-0.000915*x.^2-0.00000764*x.^3;
plot(x,E2,'LineWidth',2)
% Hexane
E3=5.49-0.06.*x-0.00012*x.^2-0.000012*x.^3;
plot(x,E3,'LineWidth',2)
% Cyclohexane
E4=5.49-0.07548.*x-0.000114*x.^2-0.0000204*x.^3;
plot(x,E4,'LineWidth',2)
% Olive Oil
E5=5.49-0.072.*x-0.0007*x.^2-0.0000715*x.^3;
plot(x,E5,'LineWidth',2)
% CR-39
E6=5.49-0.10148.*x-0.000589*x.^2-0.00004206*x.^3;
plot(x,E6,'LineWidth',2)
legend('Air','Water','Hexane','Cyclohexane','Olive Oil','CR-39')
%% Partial Bragg peak curve of 222Rn in different media
figure(2);
x=0:80; 
% Air
y1=-(-0.081-2*0.0009333*x-3*0.000007997*x.^2);
plot(x,y1,'LineWidth',2)
xlabel('Path Length [mm]')
ylabel('Stopping Power [MeV/mm]')
grid on
hold on
% Water
y2=-(-0.0792-2*0.000915*x-3*0.00000764*x.^2);
plot(x,y2,'LineWidth',2)
% Hexane
y3=-(-0.06-2*0.00012*x-3*0.000012*x.^2);
plot(x,y3,'LineWidth',2)
% Cyclohexane
y4=-(-0.07548-2*0.000114*x-3*0.0000204*x.^2);
plot(x,y4,'LineWidth',2)
% Olive Oil
y5=-(-0.072-2*0.0007*x-3*0.0000715*x.^2);
plot(x,y5,'LineWidth',2)
% CR-39
y6=-(-0.10148-2*0.000589*x-3*0.00004206*x.^2);
plot(x,y6,'LineWidth',2)
legend('Air','Water','Hexane','Cyclohexane','Olive Oil','CR-39')
%% Fit using the lsqcurvefit function
clc,clear
close all;
tic;
%% Ascent stage
xdata1=[0,1,1.5,2,2.25,2.4,2.5,2.525,2.55]; % unit(cm)
ydata1=[1,1.215,1.398,1.793,2.29,3.001,4.489,5.141,5.291]*1.162*10; % 
unit(MeV/cm)
canshu1=[0.1,0.1]; % Set the initial fitting point.
options=optimset('TolFun',1e-8,'TolX',1e-8,'MaxFunEvals',300,'Algorithm','trustregion-reflective','display','iter');
% The optimset command creates or edits the optimization options structure variable
% TolFun - termination tolerance for function values.
% Termination tolerance at TolX -- x.
% MaxFunEvals - maximum number of function evaluations.
% Algorithm is choosing trust-region-reflective.
% Display - Display level. Select 'off' to show no output. Select 'iter' to display the 
output of each iteration process; 
% Select 'final' to display the final result. Print the diagnostic information for the 
minimization function.
lb1=[0.0001,0.0001]; % Lower limit
ub1=[10,10]; % Upper limit
fitted_value1=lsqcurvefit(@fun,canshu1,xdata1,ydata1,lb1,ub1,options);
%% Descent stage
xdata2=[2.55,2.575,2.6,2.7,2.75,3]; % unit(cm)
ydata2=[5.291,4.349,3.412,0.032,0.001,0.001]*1.162*10; % unit(MeV/cm)
canshu2=[0.1,0.1]; % Set the initial fitting point
options=optimset('TolFun',1e-8,'TolX',1e-8,'MaxFunEvals',300,'Algorithm','trustregion-reflective','display','iter');
lb2=[0.0001,0.0001]; % Lower limit
ub2=[10,10]; % Upper limit
fitted_value2=lsqcurvefit(@fun,canshu2,xdata2,ydata2,lb2,ub2,options);
toc;
%% Visual output
R=3;
x1=0:0.05:2.55;
x2=2.55:0.05:3.00;
x=0:0.05:3;
alpha1=fitted_value1(1)
p1=fitted_value1(2)
alpha2=fitted_value2(1)
p2=fitted_value2(2)
Stopping_Power1=1./(alpha1.*p1).*((alpha1./(R-x1)).^(1-1./p1)); 
Stopping_Power2=1./(alpha2.*p2).*((alpha2./(R-x2)).^(1-1./p2)); 
if Stopping_Power1(end)>=Stopping_Power2(1)mid=Stopping_Power1(end);
elsemid=Stopping_Power2(1);
end
Stopping_Power=[Stopping_Power1(1:end-1),mid,Stopping_Power2(2:end)];
plot(x,Stopping_Power,'LineWidth',1.2)
title('Fit using the lsqcurvefit function')
xlabel('Path length [cm]')
ylabel('Stopping Power [MeV/cm]')
grid on
%% Fitting using simulated annealing algorithm
clc,clear
close all;
tic;
%% Ascent stage
xdata1=[0,1,1.5,2,2.25,2.4,2.5,2.525,2.55]; % unit(cm)
ydata1=[1,1.215,1.398,1.793,2.29,3.001,4.489,5.141,5.291]*1.162*10; % 
unit(MeV/cm)
F1=@(canshu1)norm(fun(canshu1,xdata1)-ydata1);
% Canshu1 is the parameter to be fitted.
% Norm function is used to calculate the 2-norm of fun(canshu1,xdata1)-ydata1
% 2- norm square root of the sum of squares of each element
canshu1=[5,5]; % Set the initial fitting point.
lb1=[0,0]; % Lower limit
ub1=[10,10]; % Upper limit
options= saoptimset('Display','iter'); % shows the results of each optimization iteration 
(intermediate process)
[fitted_value1,fval1,exitFlag,output] = simulannealbnd(F1,canshu1,lb1,ub1,options);
%% Descent stage
xdata2=[2.55,2.575,2.6,2.7,2.75,3]; % unit(cm)
ydata2=[5.291,4.349,3.412,0.032,0.001,0.001]*1.162*10; % unit(MeV/cm)
F2=@(canshu2)norm(fun(canshu2,xdata2)-ydata2);
% Canshu2 is the parameter to be fitted.
% Norm function is used to calculate the 2-norm of fun(canshu2,xdata2)-ydata2
canshu2=[5,5]; % Set the initial fitting point.
lb2=[0,0]; % Lower limit
ub2=[10,10]; % Upper limit
options= saoptimset('Display','iter'); % shows the results of each optimization iteration 
(intermediate process)
[fitted_value2,fval2,exitFlag,output] = simulannealbnd(F2,canshu2,lb2,ub2,options);
toc;
%% Visual output
R=3;
x1=0:0.05:2.55;
x2=2.55:0.05:3.00;
x=0:0.05:3;
alpha1=fitted_value1(1)
p1=fitted_value1(2)
alpha2=fitted_value2(1)
p2=fitted_value2(2)
Stopping_Power1=1./(alpha1.*p1).*((alpha1./(R-x1)).^(1-1./p1)); 
Stopping_Power2=1./(alpha2.*p2).*((alpha2./(R-x2)).^(1-1./p2)); 
if Stopping_Power1(end)>=Stopping_Power2(1)mid=Stopping_Power1(end);
elsemid=Stopping_Power2(1);
end
Stopping_Power=[Stopping_Power1(1:end-1),mid,Stopping_Power2(2:end)];
plot(x,Stopping_Power,'LineWidth',1.2,'color','r')
title('Fitting using simulated annealing algorithm')
xlabel('Path length [cm]')
ylabel('Stopping Power [MeV/cm]')
grid on
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重生奇迹MU翅膀合成方法

重生奇迹MU翅膀,攻击力和吸收伤害都相当强大,但是合成难度极高,下面给大家详解怎么合成! 方法/步骤 1、先到商店买加4追4物品,级别越高越好,可以买多个,数量越多,合成几率越高&…

【PWN】学习笔记(一)【二进制基础】

目录 课程教学一次简单的Hack程序的编译与链接Linux下的可执行文件格式ELF进程虚拟地址空间程序的编译与链接程序的装载与进程的执行x86&amd64汇编简述 课程教学 课程链接:https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12…

基于ssm的疫情物质管理系统论文

摘 要 进入信息时代以来,很多数据都需要配套软件协助处理,这样可以解决传统方式带来的管理困扰。比如耗时长,成本高,维护数据困难,数据易丢失等缺点。本次使用数据库工具MySQL和编程技术SSM开发的疫情物资管理系统&am…

全能数据分析软件Tableau Desktop 2019 mac功能亮点

Tableau Desktop 2019 mac是一款专业的全能数据分析工具,可以让用户将海量数据导入并记性汇总,并且支持多种数据类型,比如像是编程常用的键值对、哈希MAP、JSON类型数据等,因此用户可以将很多常用数据库文件直接导入Tableau Deskt…

光栅化渲染:优化技巧

我们在前面的章节中介绍的所有技术都是光栅化算法的基础。 不过,我们只是以非常基本的方式实现了这些技术。 GPU 渲染管道和其他基于光栅化的生产渲染器使用相同的概念,但它们使用这些算法的高度优化版本。 展示用于加速算法的所有不同技巧远远超出了介绍…

富时中国a50指数期货:探寻涨跌脉络

富时中国A50指数期货是衡量中国大陆50家最具代表性上市公司的指数。作为衍生品交易市场的重要一环,A50指数期货是投资者关注的焦点之一。其涨跌走势直接反映了中国大陆股市的整体表现和投资者情绪。 A50指数期货简介 富时中国A50指数期货由新加坡交易所&#xff0…

免费且好用的 MySQL 客户端

DBeaver 支持 Mac、Windows、Linux,提供 Eclipse 插件。社区版免费,支持主流的关系型数据库 官网地址:DBeaver Community | Free Universal Database Tool MySQL WorkBench MySQL WorkBench 是官方出品的客户端,支持 Mac、Windo…

AntDB数据库参加ACDU中国行杭州站,分享数据库运维实践与经验

关于ACDU与中国行: ACDU是由墨天轮社区举办的中国数据库联盟的品牌活动之一,在线下汇集数据库领域的行业知名人士,共同探讨数据库前沿技术及其应用,促进行业发展和创新的平台,也为开发者们提供友好交流的机会。 AntD…

SpringCloud微服务(简略笔记二)

Docker 概念 docker和虚拟机的差异 * docker是一个系统进程;虚拟机是在操作系统中的操作系统 * docker体积小,启动速度,性能好,虚拟机体积大,启动速度慢,性能一般 镜像和容器 镜像(image&…

使用 Python 实现简单的爬虫框架

爬虫是一种自动获取网页内容的程序,它可以帮助我们从网络上快速收集大量信息。在本文中,我们将学习如何使用 Python 编写一个简单的爬虫框架。 一、请求网页 首先,我们需要请求网页内容。我们可以使用 Python 的 requests 库来发送 HTTP 请…

【STM32F103】ADC 模拟数字转换器

ADC ADC(Analog-to-Digital Converter),模拟-数字转换器,也叫模数转换器,可以将连续变化的模拟信号转换为离散的数字信号。 我们可以外接上将采集信号转为模拟信号的模块,如光敏电阻传感器,热…

仓库拣货应用案例

多个订单的光挑选 PTL用于WIP(正在工作)机架 首先,我们的过程。 制造工厂很大,有大量的制造工具,非常密集,而且大量的高设备可能会阻碍无线电 晶片储存在一个密封的载体中,它们从一台机器运输…

Windows CMD cd命令无法使用,路径无法更改解决方法

故障表现: 1.cmd使用命令cd更改路径后,路径仍然显示为初始路径 解决方法: 1.先更改至指定盘符,再使用cd命令 2.使用cd命令后,再更改至指定盘符

[C++进阶]---AVL树模拟实现

目录 1.AVL树的概念2.AVL树模拟实现2.1AVL树节点的定义2.2AVL的插入2.3AVL树的旋转2.3.1左单旋2.3.2右单旋2.3.3右左双旋2.3.3.1旋转情况分析2.3.3.2平衡因子更新分析 2.3.4右左双旋2.3.4.1旋转情况分析2.3.4.2平衡因子更新分析 2.3.5AVL树的验证 3.AVL模拟实现源码4.总结 1.AV…

jetpack compose 学习(2)

jetpack compose 学习(1) 学会了如何创建一个compose项目,并成功run了起来 今天学习run起来的界面配置 找启动界面,当然是先找到界面的配置文件: androidManifest.xml 这个文件,然后通过启动项找到主界面, 第二步 按住ctrl 鼠标指向MainActivity 即可跳转主界面 进入后的界面…

_try_finally原理探究

无论try结构体中是什么代码,都会执行finally里面的代码 局部展开 当try里面没有异常,而是return、continue、break等语句时,就不会走_except_handle3这个函数,而是调用_local_unwind2进行展开 然后调用[ebx esi*4 8] 跟进去就到…

MySQL低版本中:字符串中的数字、英文字符、汉字提取

我们如何提醒一个字段中的汉字和数字呢 高版本指mysql8.0以上 使用sql语句 SELECT REGEXP_REPLACE(column_name, [^\\p{Han}], ) AS chinese_characters FROM table_name;其中 column_name指名称列,table_name是表名 2.低版本使用 需要新建函数 DELIMITER $$DR…

Java调用百度翻译API和调用有道翻译API进行翻译

目录 界面编写 调用百度API 调用有道API 源代码 界面编写 我们首先需要设计出这个翻译程序的GUI界面,我们写一个类继承自JFrame类,用来展示程序的主窗口,设置好窗口的名称和大小,设置在关闭窗口时终止程序,为了界…

高效数组处理的Numpy入门总结

NumPy是Python中一个重要的数学库,它提供了高效的数组操作和数学函数,是数据科学、机器学习、科学计算等领域的重要工具。下面是一个简单的NumPy学习教程,介绍了NumPy的基本用法和常用函数。 安装NumPy 在使用NumPy之前,需要先安…

删除Tencent files

QQ或者TIM卸载后,它还会残留在电脑上.要修改会说需要权限,修改权限又会重新变回去.这时候可以把整个文档放到其它盘,然后就可以删除Tencent files 方法是右键文档 选中属性–位置 然后就可以改掉了