最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python光學(xué)仿真學(xué)習(xí)衍射算法初步理解

 更新時(shí)間:2021年10月20日 11:21:19   作者:微小冷  
這篇文章主要為大家介紹了Python光學(xué)仿真學(xué)習(xí)中對(duì)衍射算法的初步理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

對(duì)衍射最經(jīng)典的解釋是Huygens-Fresnel原理,Huygens認(rèn)為波陣面上每一點(diǎn)都會(huì)成為新的波源,這些子波源的相互干涉就形成了衍射。這顯然是一種離散的觀點(diǎn),仿佛是專(zhuān)門(mén)為程序員準(zhǔn)備的一樣。

假設(shè)一束光打在一個(gè)方形孔上,這個(gè)方形孔被細(xì)分成 n×n個(gè)網(wǎng)格,那么每個(gè)網(wǎng)格都相當(dāng)于是一個(gè)小孔,而這些小孔的互相干涉,即為衍射。隨著網(wǎng)格不斷被細(xì)分,最終可以逼近真實(shí)的衍射情形。那么,假設(shè)矩孔處為等相位面,其網(wǎng)格坐標(biāo)為  (i,j),到衍射屏距離為 d d d,那么對(duì)于衍射屏上任意一點(diǎn)P(x,y),其光強(qiáng)為

在這里插入圖片描述

同理,我們剛剛寫(xiě)下的平面矩孔光強(qiáng)疊加也出現(xiàn)了問(wèn)題,如果我們默認(rèn)矩孔上每個(gè)格點(diǎn)都是一個(gè)點(diǎn)光源,那么打在衍射屏上之后,應(yīng)該遵從球面波的衰減原則。又因?yàn)檫@種假設(shè)其實(shí)忽略了從光源射到矩孔過(guò)程中的光線(xiàn)的傳播方向,所以應(yīng)該有一個(gè)傾斜因子,即 ( i , j ) 點(diǎn)打在 ( x , y )點(diǎn)的光強(qiáng)為

在這里插入圖片描述

#基爾霍夫衍射,衍射屏坐標(biāo)范圍-dGrid:dGrid,光源坐標(biāo)(0,0)
#簡(jiǎn)單的矩孔衍射,dSource為光源到小孔的距離;dScreen為衍射屏到小孔距離
#dHole為矩孔網(wǎng)格尺寸;dGrid為衍射屏網(wǎng)格尺寸;nGrid為網(wǎng)格數(shù)目
def squareDiff(dSource=1,dScreen=1.4,dWave=1e-6,
            dHole=3e-5,nGrid=100,dGrid=1e-5):
    nX,nY = nGrid*np.array([1,1])
    axisX = np.arange(-nX,nX+1)*dGrid       
    axisY = np.arange(-nY,nY+1)*dGrid
    xAxis,yAxis = np.meshgrid(axisX,axisY)  #此為衍射屏的x坐標(biāo)
    axisX = np.arange(-nX,nX+1)*dHole       
    axisY = np.arange(-nY,nY+1)*dHole
    xHole,yHole = np.meshgrid(axisX,axisY)  #此為矩孔的x坐標(biāo)
    dArrS = np.sqrt(xHole**2+yHole**2+dSource**2)   #孔平面到光源的距離
    nSide = int(nGrid*2+1)              #格點(diǎn)個(gè)數(shù)
    pane = np.zeros([nSide,nSide])      #衍射屏強(qiáng)度
    for m in range(nSide):
        for n in range(nSide):
            dArr = np.sqrt((xHole-xAxis[m,n])**2+(yHole-yAxis[m,n])**2+dScreen**2)
            pane[m,n] = np.sum(
                np.cos(np.pi*2*(dArr+dArrS)/dWave)/dArr/dArrS)
    pane = np.abs(pane)
    pane = pane/np.max(np.array(pane))
    fig = plt.figure()
    ax = axd(fig)
    ax.plot_surface(xAxis,yAxis,pane)
    plt.show()
    return pane, xAxis, yAxis

其結(jié)果為

在這里插入圖片描述

在這里插入圖片描述

故可定義矩陣索引

#輸入對(duì)于M*M矩陣的第一個(gè)值到N*N矩陣的距離,返回M(m,n)的距離矩陣
def getDisMat(dMat,N,m,n):
    dMat = np.mat(dMat)
    A = dMat[1:m,1:n]
    B = dMat[1:m,0:N-n+1]
    C = dMat[0:N-m+1,1:n]
    D = dMat[0:N-m+1,0:N-n+1]
    return np.vstack((np.hstack((np.flip(A),np.flipud(B))),np.hstack((np.fliplr(C),D))))    #stack矩陣拼接,flip翻轉(zhuǎn)矩陣

相應(yīng)地算法改為(其他位置不變)

    dArrS = np.sqrt(xHole**2+yHole**2+dSource**2) #孔平面到光源的距離
    dScreen = np.sqrt(                             #衍射平上第(0,0)個(gè)點(diǎn)的距離矩陣
        (xHole-xAxis[0,0])**2+(yHole-yAxis[0,0])**2+dScreen**2)
    nSide = int(nGrid*2+1)              #格點(diǎn)個(gè)數(shù)
    pane = np.zeros([nSide,nSide])      #衍射屏強(qiáng)度
    for m in range(nSide):
        for n in range(nSide):
            dArr = getDisMat(dScreen,nSide,m,n)

但這種優(yōu)化是極其有限的,這是直觀無(wú)腦的思維方式所帶來(lái)的麻煩。在接下來(lái)的傅里葉光學(xué)中,我們將繼續(xù)處理衍射的計(jì)算問(wèn)題。

以上就是Python光學(xué)仿真學(xué)習(xí)衍射算法初步理解的詳細(xì)內(nèi)容,更多關(guān)于Python光學(xué)仿真衍射算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 中的divmod數(shù)字處理函數(shù)淺析

    python 中的divmod數(shù)字處理函數(shù)淺析

    這篇文章主要介紹了python divmod數(shù)字處理函數(shù)的相關(guān)資料,感興趣的朋友一起看看吧
    2017-10-10
  • ubuntu系統(tǒng)下 python鏈接mysql數(shù)據(jù)庫(kù)的方法

    ubuntu系統(tǒng)下 python鏈接mysql數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了ubuntu系統(tǒng)下 python鏈接mysql數(shù)據(jù)庫(kù)的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • python smtplib模塊自動(dòng)收發(fā)郵件功能(一)

    python smtplib模塊自動(dòng)收發(fā)郵件功能(一)

    這篇文章主要為大家詳細(xì)介紹了python smtplib模塊自動(dòng)收發(fā)郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • scikit-learn線(xiàn)性回歸,多元回歸,多項(xiàng)式回歸的實(shí)現(xiàn)

    scikit-learn線(xiàn)性回歸,多元回歸,多項(xiàng)式回歸的實(shí)現(xiàn)

    這篇文章主要介紹了scikit-learn線(xiàn)性回歸,多元回歸,多項(xiàng)式回歸的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python在命令行中使用?pdb?實(shí)現(xiàn)斷點(diǎn)調(diào)試功能

    python在命令行中使用?pdb?實(shí)現(xiàn)斷點(diǎn)調(diào)試功能

    在命令行中設(shè)置斷點(diǎn)通常需要使用調(diào)試工具來(lái)實(shí)現(xiàn),下面以 Python 為例介紹如何在命令行中使用pdb實(shí)現(xiàn)斷點(diǎn)調(diào)試,這篇文章主要介紹了python在命令行中使用pdb實(shí)現(xiàn)斷點(diǎn)調(diào)試,需要的朋友可以參考下
    2023-06-06
  • Pytorch 實(shí)現(xiàn)凍結(jié)指定卷積層的參數(shù)

    Pytorch 實(shí)現(xiàn)凍結(jié)指定卷積層的參數(shù)

    今天小編就為大家分享一篇Pytorch 實(shí)現(xiàn)凍結(jié)指定卷積層的參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 基于Python使用永中文檔轉(zhuǎn)換服務(wù)的方式

    基于Python使用永中文檔轉(zhuǎn)換服務(wù)的方式

    這篇文章主要介紹了基于Python使用永中文檔轉(zhuǎn)換服務(wù)的方式,本文給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Python自定義模塊的創(chuàng)建與使用

    Python自定義模塊的創(chuàng)建與使用

    這篇文章主要給大家介紹了關(guān)于Python自定義模塊創(chuàng)建與使用的相關(guān)資料,文中還給大家分享了python打包用戶(hù)自定義模塊的方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 用Python將庫(kù)打包發(fā)布到pypi

    用Python將庫(kù)打包發(fā)布到pypi

    這篇文章主要介紹了用Python將庫(kù)打包發(fā)布到pypi,文中有很詳細(xì)的代碼作參考,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-04-04
  • node命令行服務(wù)器(http-server)和跨域的實(shí)現(xiàn)

    node命令行服務(wù)器(http-server)和跨域的實(shí)現(xiàn)

    本文主要介紹了node命令行服務(wù)器(http-server)和跨域的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評(píng)論

栾城县| 深泽县| 石城县| 台北市| 云南省| 大荔县| 曲阜市| 东乡县| 遵义县| 沙田区| 铜陵市| 新干县| 得荣县| 宁晋县| 历史| 长寿区| 墨脱县| 河曲县| 怀远县| 济源市| 塘沽区| 民勤县| 嘉鱼县| 波密县| 小金县| 商水县| 吴桥县| 汽车| 班戈县| 玉溪市| 嘉兴市| 饶阳县| 肇庆市| 峡江县| 南郑县| 定远县| 轮台县| 奉新县| 乐山市| 贞丰县| 察哈|