发光太阳聚光器的蒙特卡洛光线追踪研究(Matlab代码实现)

这篇具有很好参考价值的文章主要介绍了发光太阳聚光器的蒙特卡洛光线追踪研究(Matlab代码实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码及文章


💥1 概述

蒙特卡罗技术是一种通过统计方法模拟光子在系统中传播的方法。随机数、累积分布函数(CDF)和概率密度函数(PDF)被用来从函数或谱线(如太阳AM 1.5)中进行抽样。通过这种方式,随机数决定了光子的行进方式,从而避免了复杂的辐射传输方程。

如果x是从均匀分布[0,1]中抽取的随机数,那么CDF可以被设定为x,并可以重新排列以便获得需要随机选择的变量。通过这种方式,CDF下的面积将等于从均匀分布中选择的随机数下的面积,当足够多次地进行抽样选择时,随机选择的变量将能够重新创建原始的概率密度函数。

表面相互作用是该程序的核心。首先确定光子与LSC的哪个面进行相互作用,然后通过调用is_TIR函数检查光子是反射还是透射。如果光子完全内部反射,则根据光子在反射后是否在LSC内或是否与另一个边界相交来设置PH_ACTION的状态。
首先通过whichSurface()函数确定光子与哪个面相交,并返回面的编号。Which surface首先检查光子是否与一个平面相交,然后通过确定光子和平面的交点是否在LSC边界内进行第二次检查。

Is_TIR.m
确定面后,需要确定光子是否在空气/LSC边界发生反射或透射。在光子撞击LSC的一个面后,表面相互作用调用is_TIR函数来确定光子是否完全内部反射(total internal reflection)或透过表面传输。首先从主程序中获取全反射的临界角:

详细讲解见第4部分。

📚2 运行结果

发光太阳聚光器的蒙特卡洛光线追踪研究(Matlab代码实现),matlab,算法,机器学习

发光太阳聚光器的蒙特卡洛光线追踪研究(Matlab代码实现),matlab,算法,机器学习

发光太阳聚光器的蒙特卡洛光线追踪研究(Matlab代码实现),matlab,算法,机器学习

部分代码:

%% Calculate the CDF of an emission spectrum 

A = csvread('LumRed305_Emission_Spectrum.csv');
wavelength = A(:,1);  % Reads wavelengths from first column 
em = A(:,2); % Reads extinction coef from second column
num = 0;
k = length(em);
sum_Em =0;

P = trapz(em)
 % Numerical integration using trapezoidal method

    for i=1:1:(k-1)
        sum_Em = sum_Em + 0.5*(em(i+1) +em(i))*(wavelength(i+1) - wavelength(i));
    end

    % sumEm is the numerical integral of Flux over all wavelengths
    % calculate CDF_em(i) the cumulative distribution function for any wavelength i
    % Divide C(i) by integral over all wavelengths to normalise the inegral of
    % C(i) to equal 1

    % The following for loop normalises the numerical integration 
    for i=(1:1:(k))
        num =0;
        for(j=1:1:(i-1))
        
            num = num + 0.5*(em(j+1) +em(j))*(wavelength(j+1) - wavelength(j));
        end
     
    CDF_Em(i) = num /sum_Em; % Cumulative distribution function of the Emission spectrum
   
    end
    
    plot(wavelength,CDF_Em) %Plots CDF of emission spectrum
    % The following for loop returns randomly selected emission wavelengths
    % based on the CDF calculated above. The number of randomly emitted photons
    % will equal the length of the vector QY_selected_lambdas
    
    % Save CDF as CSV file for use in photons_emitted function
    t = transpose(CDF_Em);
    w = transpose(wavelength);
    dataToSave = [ wavelength transpose(CDF_Em) ]
    csvwrite('CDF_Emission_Spectrum.csv',dataToSave)

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。文章来源地址https://www.toymoban.com/news/detail-683425.html

🌈4 Matlab代码及文章

到了这里,关于发光太阳聚光器的蒙特卡洛光线追踪研究(Matlab代码实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 强化学习:蒙特卡洛方法(MC)

       以抛硬币为例,将结果(正面朝上或反面朝上)表示为作为随机变量 X X X ,如果正面朝上则 X = + 1 X=+1 X = + 1 ,如果反面朝上,则 X = − 1 X=-1 X = − 1 ,现在要计算 E [ X ] E[X] E [ X ] 。    我们通常很容易想到直接用定义来计算,因为我们知道正面朝上和反面朝上的概率都是

    2024年02月08日
    浏览(49)
  • 【机器学习】强化学习(三)蒙特卡洛算法

    策略迭代算法和价值迭代算法为什么可以得到理论上的最优解,在实际问题中使用价值有限? 无模型算法 三、蒙特卡洛算法 蒙特卡洛(Monte Carlo)方法是一种基于样本的强化学习算法,它通过执行和学习代理(也就是我们编程的AI)环境交互的样本路径来学习。它不需要初始知

    2024年01月19日
    浏览(57)
  • 蒙特卡洛方法的数学基础-1

    蒙特卡洛方法的数学基础-1 Bayes 公式 常用分布 Binominal Distribution Poisson Distribution Gaussian Distribution  Exponential Distribution Uniform Distribution 大数定理 均匀概率分布随机地取 N 个数 x i , 函数值之和的算术平均收敛于函数的期望值 算术平均收敛于真值 中心极限定理 n个相互独立分布

    2024年02月07日
    浏览(56)
  • 蒙特卡洛方法的收敛性和误差

    目录 1.收敛性 2.误差 3.减少方差的各种技巧 4.效率 5.优缺点 蒙特卡罗方法作为一种计算方法,其收敛性与误差是普遍关心的一个重要问题。由此可以总结出蒙特卡洛方法的优缺点。

    2024年02月06日
    浏览(40)
  • 多数问题求解之蒙特卡洛与分治法

    多数问题(Majority Problem)是一个有多种求解方法的经典问题,其问题定义如下: 给定一个大小为 n n n 的数组,找出其中出现次数超过 n / 2 n/2 n /2 的元素 例如:当输入数组为 [ 5 , 3 , 5 , 2 , 3 , 5 , 5 ] [5, 3, 5, 2, 3, 5, 5] [ 5 , 3 , 5 , 2 , 3 , 5 , 5 ] ,则 5 5 5 是多数(majority)。 本文将

    2024年03月14日
    浏览(47)
  • 蒙特卡洛积分、重要性采样、低差异序列

    渲染的目标在于计算周围环境的光线有多少从表面像素点反射到相机视口中。要计算总的反射光,每个入射方向的贡献,必须将他们在半球上相加: 为入射光线  与法线  的夹角,为方便计算可以使用法线向量和入射向量(单位化)的乘积表示。  对于基于图像的光照,入射

    2024年02月03日
    浏览(62)
  • 16. 蒙特卡洛强化学习基本概念与算法框架

    蒙特卡洛强化学习(简称MC强化学习)是一种 无模型 强化学习算法,该算法无需知道马尔科夫决策环境模型,即不需要提前获得立即回报期望矩阵R(维度为(nS,nA))、状态转移概率数组P(维度为(nA,nS,nS)),而是通过与环境的反复交互,使用统计学方法,利用交互数据直接进行

    2024年01月21日
    浏览(48)
  • 【Python数学建模常用算法代码——蒙特卡洛模型】

    蒙特卡洛方法的理论支撑其实是概率论或统计学中的大数定律。基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果。下面我们以三个经典的小实验来学习下蒙特卡洛算法思想。 实验原理 在正方形内部有一

    2024年02月02日
    浏览(52)
  • Python学习28:计算圆周率——蒙特卡洛法

    描述 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 蒙特卡洛(M

    2024年02月08日
    浏览(50)
  • C# 随机法求解线性规划问题 蒙特卡洛

    线性规划问题: max=3 x1+2 x2 x1+2 x2=5 2 x1+x2=4 4 x1+3 x2=9 x1=0 x2=0 正确的结果:x1=1.5; x2=1, max z=6.5

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包