我用蒙特卡罗法模拟光在沙尘环境中的多次散射问题,编写了如下的程序,程序可以运行,但是感觉运行结果不正确。希望写过类似程序的高手可以指点一下。

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,用蒙特卡罗法模拟光散射问题相关推荐

  1. 2021-04-09 随机模拟—蒙特卡洛方法 Matlab代码实现

    随机模拟-蒙特卡洛方法 Matlab代码实现 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出 ...

  2. 粒子的散射模拟matlab程序,基于Matlab的α粒子的散射实验模拟.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab 基于Matlab的α粒子的散射实验模拟.pdf3页 ...

  3. 蒙特卡洛方法 matlab 实现

    蒙特卡洛方法 matlab 实现 已有 12594 次阅读 2010-10-22 14:12 |个人分类:MATLAB|系统分类:科研笔记|关键词:蒙特卡洛方法 matlab 蒙特卡罗(Monte C ...

  4. V2G汽车的蒙特卡洛模拟matlab代码,可以从电网充电也可以向电网放电

    V2G汽车的蒙特卡洛模拟matlab代码,可以从电网充电也可以向电网放电. 充电开始时刻.放电时刻.日行驶里程等参数可以自己设置,易于修改. _:3120644246447334浪迹天涯

  5. V2G汽车的蒙特卡洛模拟matlab代码,可以从电网充电也可以向电网放电。 充电开始时刻、放电时刻、日行驶里程等参数可以自己设置,易于修改。

    V2G汽车的蒙特卡洛模拟matlab代码,可以从电网充电也可以向电网放电. 充电开始时刻.放电时刻.日行驶里程等参数可以自己设置,易于修改. :4720644246447334浪迹天涯

  6. 蒙特卡洛积分 matlab,菜鸟之路——数学建模之蒙特卡罗积分(投点法,平均值法)+牛顿法解方程组MATLAB实现...

    蒙特卡罗方法这里不再赘述 1,例题 Matlab代码: %蒙特卡罗法求积分 N=1000; %随机选取1000个点 x=rand(1,N); y=rand(1,N); S=sum(y<=sin( ...

  7. 【Matlab】蒙特卡罗法模拟圆周率+对应解析的GIF生成【超详细的注释和解释】

    文章目录 前言 模拟思路 GIF模拟动图的生成 GIF动图生成的基本思路 单张静态图的生成 GIF的生成 尾声 前言 因为博主最近要准备数学建模大赛了,在学习matlab和python之余,博主也会继 ...

  8. 数学建模多元线性回归内生性问题的蒙特卡洛模拟matlab代码

    回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决.回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预 ...

  9. 蒙特卡洛 股票 matlab,风险管理matlab蒙特卡洛模拟股票价格

    1. 蒙特卡洛模拟用于风险分析 蒙特卡洛模拟是风险评价.评估中常用的一种方法. 主要用于,当在项目评价中输入的随机变量个数多于3个,每个输入变量可能出现3个以上以致无限多种状态时(如连续随机变量),就 ...

  10. matlab腔内光子寿命,mcFORnp matlab环境下,利用蒙特卡洛模拟光子包在生物组织内的光路传输 271万源代码下载- www.pudn.com...

    文件名称: mcFORnp下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 215 KB 上传时间: 2014-12-29 下载次数: 8 提 供 者: 徐某 ...

最新文章

  1. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法
  2. 【安全漏洞】朝鲜InkySquid APT组织是怎么利用浏览器漏洞感染受害者
  3. 计算机将成为学生们的老师英语,七年级英语(牛津版)第一学期7A完成句子练习题...
  4. 【练习】c++用链栈实现计算器
  5. WinCE6.0的EBOOT概要
  6. php设置session 生命周期,设置session的生命周期(php)
  7. php mysql while循环,PHP_MySQL教程-第二天while循环与数据库操作第2/2页
  8. PAT乙级(1022 D进制的A+B )
  9. Spring入门示例及相关概念介绍
  10. Git 输入命令git branch -a 后怎么返回
  11. xml转matlab目标检测,将Cityscape转换为PASACAL VOC格式的目标检测数据集
  12. 2022全国高中数学联赛A1卷T2几何答案
  13. nginx架构(修改版)
  14. Idea中Git和SVN如何切换
  15. ubuntu14.04LTS下搜狗输入法问题汇总 (搜狗输入法崩溃,搜狗输入法候选区乱码,没有搜狗输入法皮肤)
  16. 告别Anaconda: Pycharm最简单的通过pip下载python包的方法(没有之一)
  17. VS2017 某项目无法打开包含文件
  18. 多种UI和界面设计汇总(一)
  19. 前端获取后端的数组对象处理(去重,排序,转为树状结构)
  20. 获取本机CPU,硬盘等使用情况

热门文章

  1. 【转】贴片晶振挖空敷铜
  2. 微信渐变国旗头像,最全版本来了!!
  3. 鸿蒙系统桌面壁纸,华为鸿蒙桌面怎么设置好看
  4. 计算机专业哪些竞赛含金量高,盘点国内五大高含金量的编程赛事
  5. 计算机走进画图世界课件,windowsxp走进画图世界教案
  6. 重构碎片化知识_黄建锋:碎片化学习策略研究
  7. 小米平板刷机shell怎么退_黑龙江省宁安市小米平板1的刷机经历刷入DotOS并退回MIUI-最懂产品的运维...
  8. OpenNLP入门实验
  9. 物业平台借力OA系统,实现报修管理数字化
  10. Oracle18c 快速上手