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);
else
 mid=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);
else
 mid=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名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详谈前端中常用的加/密算法

本文主要详细介绍了在前端开发中常用的加/解密算法,以及前端如何实现。 总的来说:前端加密无论使用哪个加密都一样是有可能性被他人获取到相关的公钥或密钥的(比如:拦截请求、查看源代码等),然后进行加密与…

深入理解网络 I/O:单 Selector 多线程|单线程模型

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

VG3225EFN压控晶体振荡器(VCXO)

5G脞2020年开始,商业服务正在全球范围内快速部署。5G通信网络需要保持高速率和可靠性,这2两者都需要低噪声,使用高频基模晶体振荡器(高达50MHz),该晶体振荡器可以提供低相位噪声参考时钟,从而降…

轻松制作健身预约小程序

如果你想制作一个健身预约小程序,实现高效预约与健身管理,可以按照以下步骤进行操作。 第一步:注册登录乔拓云平台,进入后台 第二步:点击【轻应用小程序】,进入设计小程序页面。 第三步:在设计小…

拼多多买家页面批量导出订单excel

拼多多买家页面批量导出订单excel 由于拼多多不支持订单导出excel清算起来很麻烦,就自己写了一个页面批量导出脚本代码。 首先打开拼多多手机端网站:https://mobile.pinduoduo.com/ 登录后点击我的订单打开f12审查元素 在控制台引入jquery,引…

Git中stash的使用

Git中stash的使用 stash命令1. stash保存当前修改2. 重新使用缓存3. 查看stash3. 删除 使用场景 stash命令 1. stash保存当前修改 git stash 会把所有未提交的修改(包括暂存的和非暂存的)都保存起来. git stashgit stash save 注释2. 重新使用缓存 #…

k8s中pod监控数据在grafana中展示

实现目标:将kubesphere[K8S]中运行的pod监控数据在grafana平台进行展示。 前提说明:需要在k8s每个集群中内置的prometheus配置中将pod指标数据远程写入到victoriametrics持久化数据库中。 实现效果如下: CPU使用量: round(sum by (namespace, pod) (irate(container_cpu…

YOLOv8改进 | Conv篇 | 轻量级下采样方法ContextGuided(涨点幅度)

一、本文介绍 本文给大家带来的是改进机制是一种替换Conv的模块Context Guided Block (CG block) ,其是在CGNet论文中提出的一种模块,其基本原理是模拟人类视觉系统依赖上下文信息来理解场景。CG block 用于捕获局部特征、周围上下文和全局上下文&#…

【Qt问题记录】使用QDebug类输出不带转义或双引号

问题 使用Qt进行编程时,需要借助输出信息验证编码的正确性。 默认情况下,如果输出的是字符串,qDebug() 会在字符串的两侧加上引号,有时还会转义。 如下所示: QString strInfo QStringLiteral("helloworld"…

宏基因组学及宏转录组学分析工具MOCAT2(Meta‘omic Analysis Toolkit 2)安装配置及常用使用方法

详细介绍 尽管这个工具已经暂停后续开发,但其工具功能还是挺好的,大家可以参考一下,尤其对于喜欢自定义开发流程的可以参考是流程。 MOCAT 2(Metaomic Analysis Toolkit 2)是一个用于宏基因组和宏转录组数据分析的工具…

怎么选择合适的3ds Max云渲染农场?

3ds Max 用户日常面临的一个共同挑战便是漫长的渲染周期。作为一个强大的三维建模和渲染软件,3ds Max 势必需处理大量的光照、材质和阴影计算任务,因此,良好的渲染方案对从业者而言尤为重口。 一、为何考虑3ds Max云渲染? 云渲染成为了解决…

小白学爬虫:根据商品ID或商品链接获取淘宝商品详情数据接口方法

小白学爬虫的准备工作包括以下几个方面: 学习Python基础知识:首先需要掌握Python编程语言的基本语法和数据类型,了解Python的常用库和模块,例如requests库等。了解HTTP协议和HTML语言:了解HTTP协议的基本概念和原理&a…

Tekton 克隆 git 仓库

Tekton 克隆 git仓库 介绍如何使用 Tektonhub 官方 git-clone task 克隆 github 上的源码到本地。 git-clone task yaml文件下载地址:https://hub.tekton.dev/tekton/task/git-clone 查看git-clone task yaml内容: 点击Install,选择一种…

innerHTML、innerText、textContent有什么区别

innerHTML、innerText、textContent有什么区别 在 HTML 中,innerHTML、innerText、 和textContent是 DOM(文档对象模型)的属性。它们允许我们读取和更新 HTML 元素的内容。 但它们在包含的内容以及处理 HTML 标签的方式有不同的行为。 读完…

人工智能与星际旅程:技术前沿与未来展望

人工智能与星际旅程:技术前沿与未来展望 一、引言 随着科技的飞速发展,人工智能(AI)在各个领域的应用越来越广泛。在星际旅程领域,AI也发挥着越来越重要的作用。本文将探讨人工智能与星际旅程的结合,以及…

智能优化算法应用:基于供需算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于供需算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于供需算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.供需算法4.实验参数设定5.算法结果6.参考文献7.MA…

大语言模型:开启自然语言处理新纪元

导言 大语言模型,如GPT-3(Generative Pre-trained Transformer 3),标志着自然语言处理领域取得的一项重大突破。本文将深入研究大语言模型的基本原理、应用领域以及对未来的影响。 1. 简介 大语言模型是基于深度学习和变压器&…

make没有更新最新的uImage

在 LCD 驱动的时候发现,linux logo一直弄不出来,猜想可能是因为uImage的问题,就看了一眼 uImage 时间: ​ 我现在的时间是 ,那可能就是没有更新make的时候没有更新,就上网搜了一下用下面的命令输出 uImage&…

存储拆分后,如何解决唯一主键问题?

之前我们讲到了分库分表,现在考虑这样一个问题:在单库单表时,业务 ID 可以依赖数据库的自增主键实现,现在我们把存储拆分到了多处,如果还是用数据库的自增主键,势必会导致主键重复。 那么我们应该如何解决…

普通二叉树和右倾斜二叉树--LeetCode 111题《Minimum Depth of Binary Tree》

本文将以解释计算二叉树的最小深度的思路为例,致力于用简洁易懂的语言详细描述普通二叉树和右倾斜二叉树在计算最小深度时的区别。通过跟随作者了解右倾斜二叉树的概念以及其最小深度计算过程,读者也将对左倾斜二叉树有更深入的了解。这将为解决LeetCode…