蒙特卡洛 光 matlab,用蒙特卡罗法模拟光散射问题
我用蒙特卡罗法模拟光在沙尘环境中的多次散射问题,编写了如下的程序,程序可以运行,但是感觉运行结果不正确。希望写过类似程序的高手可以指点一下。
fai_T=45*pi/180;%发散角
sita_T=10*pi/180;%发射仰角 45
fai_R=45*pi/180;%接收角
sita_R=10*pi/180;%接收仰角 45
Ksray=0.1;%瑞利散射系数 0.145
Ksmie=1.5;%米氏散射系数 0.261a
Ka=0.6;%吸收函数 0.039
Ks=Ksray+Ksmie;%消光系数
K=Ka+Ks; %吸收散射之和
w=1;%权重
A=1;%存活率0.01
g=0.7;%不对称因子0.2
f=0.5;%散射因子
Ar=1.8*10^(-2);%接收孔径
r=4.8;
gama=0.017;%非对称因子 大气粒子尺寸分布?
L=10;%传输距离
%for i=1:1:1000
%%发射端初始位置%%
w=1;
x=0;y=0;z=0;
ux=0;uy=0;uz=1;
while 1
ksi=unifrnd(0,1);
s=-log(ksi)/K;
x=x+ux*s;y=y+uy*s;z=z+uz*s;
if (z>0)&&(z
w=Ks/K.*w; %改变权重
if w>0.0001 %权重是否太小
ksi=unifrnd(0,1);
fai=2*pi*ksi;
temp=(1-g.^2)/(1-g+2*g*ksi);
cos_sita=(1+g.^2-temp.^2)/(2*g);
sin_sita=sqrt(1-cos_sita.^2);
ux1=ux;uy1=uy;uz1=uz;
if abs(uz1)>0.99999
ux=sin_sita*cos(fai);
uy=sin_sita*sin(fai);
uz=uz1/abs(uz1)*cos(fai);
else
temp1=sqrt(1-uz1.^2);
ux=sin_sita*(ux1*uz1*cos(fai)-uy1*sin(fai))/temp1+ux1*cos_sita;
uy=sin_sita*(uy1*uz1*cos(fai)+ux1*sin(fai))/temp1+uy1*cos_sita;
uz=-sin_sita*cos(fai)*temp1+uz1*cos_sita;
end %确定下一个光子的方向
else
ksi=unifrnd(0,1);
if ksi<=1/10
w=10*w;
ksi=unifrnd(0,1);
fai=2*pi*ksi;
temp=(1-g.^2)/(1-g+2*g*ksi);
cos_sita=(1+g.^2-temp.^2)/(2*g);
sin_sita=sqrt(1-cos_sita.^2);
ux1=ux;uy1=uy;uz1=uz;
if abs(uz1)>0.99999
ux=sin_sita*cos(fai);
uy=sin_sita*sin(fai);
uz=uz1/abs(uz1)*cos(fai);
else
temp1=sqrt(1-uz1.^2);
ux=sin_sita*(ux1*uz1*cos(fai)-uy1*sin(fai))/temp1+ux1*cos_sita;
uy=sin_sita*(uy1*uz1*cos(fai)+ux1*sin(fai))/temp1+uy1*cos_sita;
uz=-sin_sita*cos(fai)*temp1+uz1*cos_sita;
end
%确定下一个光子的方向
else
break%此光子结束,追踪下一个光子
end
end
else
sita_i=1/cos(uz);
n_i=1;n_t=2;%ni nt 分别是介质和空气中光子的折射率
sita_t=asin(n_i*sin(sita_i)/n_t); %菲涅尔定律
R=0.5.*((sin(sita_i-sita_t)/sin(sita_i+sita_t)).^2+(tan(sita_i-sita_t)/tan(sita_i+sita_t)).^2);
ksi=unifrnd(0,1);
if ksi
w=w*R;
if z<0
z=-z;
else
z=2*L-z;
end
uz=-uz;
else
w=w*(1-R);
break
end
end
end
%receive(i)=w;
%end
蒙特卡洛 光 matlab,用蒙特卡罗法模拟光散射问题相关推荐
- 2021-04-09 随机模拟—蒙特卡洛方法 Matlab代码实现
随机模拟-蒙特卡洛方法 Matlab代码实现 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出 ...
- 粒子的散射模拟matlab程序,基于Matlab的α粒子的散射实验模拟.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > matlab 基于Matlab的α粒子的散射实验模拟.pdf3页 ...
- 蒙特卡洛方法 matlab 实现
蒙特卡洛方法 matlab 实现 已有 12594 次阅读 2010-10-22 14:12 |个人分类:MATLAB|系统分类:科研笔记|关键词:蒙特卡洛方法 matlab 蒙特卡罗(Monte C ...
- V2G汽车的蒙特卡洛模拟matlab代码,可以从电网充电也可以向电网放电
V2G汽车的蒙特卡洛模拟matlab代码,可以从电网充电也可以向电网放电. 充电开始时刻.放电时刻.日行驶里程等参数可以自己设置,易于修改. _:3120644246447334浪迹天涯
- V2G汽车的蒙特卡洛模拟matlab代码,可以从电网充电也可以向电网放电。 充电开始时刻、放电时刻、日行驶里程等参数可以自己设置,易于修改。
V2G汽车的蒙特卡洛模拟matlab代码,可以从电网充电也可以向电网放电. 充电开始时刻.放电时刻.日行驶里程等参数可以自己设置,易于修改. :4720644246447334浪迹天涯
- 蒙特卡洛积分 matlab,菜鸟之路——数学建模之蒙特卡罗积分(投点法,平均值法)+牛顿法解方程组MATLAB实现...
蒙特卡罗方法这里不再赘述 1,例题 Matlab代码: %蒙特卡罗法求积分 N=1000; %随机选取1000个点 x=rand(1,N); y=rand(1,N); S=sum(y<=sin( ...
- 【Matlab】蒙特卡罗法模拟圆周率+对应解析的GIF生成【超详细的注释和解释】
文章目录 前言 模拟思路 GIF模拟动图的生成 GIF动图生成的基本思路 单张静态图的生成 GIF的生成 尾声 前言 因为博主最近要准备数学建模大赛了,在学习matlab和python之余,博主也会继 ...
- 数学建模多元线性回归内生性问题的蒙特卡洛模拟matlab代码
回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决.回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预 ...
- 蒙特卡洛 股票 matlab,风险管理matlab蒙特卡洛模拟股票价格
1. 蒙特卡洛模拟用于风险分析 蒙特卡洛模拟是风险评价.评估中常用的一种方法. 主要用于,当在项目评价中输入的随机变量个数多于3个,每个输入变量可能出现3个以上以致无限多种状态时(如连续随机变量),就 ...
- matlab腔内光子寿命,mcFORnp matlab环境下,利用蒙特卡洛模拟光子包在生物组织内的光路传输 271万源代码下载- www.pudn.com...
文件名称: mcFORnp下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 215 KB 上传时间: 2014-12-29 下载次数: 8 提 供 者: 徐某 ...
最新文章
- python引入jit_从numba导入jit
- QGraphicsItem获取不到鼠标事件
- 动态页面加载速度太慢
- Spring整合mybatis 1 查询
- Javascript 解析,格式化日期
- 写出完美CSS代码的5个重要方面
- [Gamma阶段]展示博客
- apache域名本地映射
- 你需要知道的基础算法知识——STL和基础数据结构(二)
- Spring : Spring @Transactional-事物回滚
- oracle初始化化表空间用户权限
- 数据结构专题(二):2.4链表的插入操作,头插法
- 关于四元数的个人理解
- Flink SQL中的函数
- WPF 美化界面,样式的使用
- 17. 3D移动 transform:translateX(100px);transform:translateY(100px);transform:translateZ(100px);
- 微信小游戏和微信小程序的区别与共同
- Word页眉页码、公式编号、引用文献编号
- 自动驾驶轨迹预测论文阅读(二)TPNet: Trajectory Proposal Network for Motion Prediction
- 电脑怎么搜索重复文件?如何快速找到重复文件?