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

Python光學(xué)仿真數(shù)值分析求解波動方程繪制波包變化圖

 更新時間:2021年10月20日 14:02:01   作者:微小冷  
這篇文章主要為大家介紹了Python光學(xué)仿真通過數(shù)值分析求解波動方程并繪制波包變化圖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助

波動方程數(shù)值解

波動方程是三大物理方程之一,也就是弦振動方程,其特點是時間與空間均為二階偏導(dǎo)數(shù)。其自由空間解便是我們熟知的三角函數(shù)形式,也可以寫成自然虛指數(shù)形式。

一般來說,既然有了精確的解析解,那也就沒必要再去做不精確的數(shù)值模擬,但數(shù)值模擬的好處有兩個,一是避免無窮小,從而在思維上更加直觀;二是頗具啟發(fā)性,對于一些解析無解的情況也有一定的處理能力。

對此,我們首先考慮一維波動方程

在這里插入圖片描述

import numpy as np
import matplotlib.pyplot as plt
def set_y0(x,k,L):
    y = np.zeros_like(x)
    y[x<L] = np.sin(k*x[x<L])*np.sin(np.abs(x[x<L]*np.pi/L))
    return y

if __name__ == "__main__":
    x = np.linspace(0,10,1000)
    k = np.pi*2/1.064
    L = 5
    y = set_y0(x,k,L)

    plt.plot(x,y)
    plt.show()

其形狀為

在這里插入圖片描述

現(xiàn)考慮讓這個光波在 [ 0 , L ] 范圍內(nèi)往返傳播,在此采用Dirichlet邊界條件,取

在這里插入圖片描述

至此,我們得到了光場的所有信息,原則上可以預(yù)測這個波包的所有行為,其迭代過程為

def wave1d(x,t,k,L):
    dx = x[1]-x[0]
    dt = t[1]-t[0]
    d2 = (dt/dx)**2
    y = np.zeros([len(t),len(x)])
    y[0,:] = set_y0(x,k,L)
    y[1,:] = set_y0(x-dt,k,L)
    for n in range(2,len(t)):
        y[n] = 2*y[n-1] - y[n-2] - d2*2*y[n-1]
        y[n,1:] += d2*y[n-1,:-1]
        y[n,:-1] += d2*y[n-1,1:]
        #邊界條件
        y[n,0] = 0
        y[n,-1] = 0   
    return y

由于 y y y是隨時間變化的參量,現(xiàn)有的matplotlib.pyplot已經(jīng)無法滿足我們繪制動態(tài)圖片的需求,所以引入animation來進行繪制,其代碼為

import matplotlib.animation as animation
#輸入時間,自變量,因變量,圖題標(biāo)記
def drawGif(t,x,ys,mark="time="):
    tAxis = np.linspace(0,len(t)-1,100).astype(int)
    fig = plt.figure()
    ax = fig.add_subplot(111,xlim=(0,10),ylim=(-1.5,1.5))
    ax.grid()
    line, = ax.plot([],[],lw=0.2)
    time_text = ax.text(0.1,0.9,'',transform=ax.transAxes)
    def init():
        line.set_data([],[])
        time_text.set_text("")
        return line, time_text   
    def animate(i):
        y = ys[i]
        line.set_data(x,y)
        time_text.set_text(mark+str(t[i]))
        return line, time_text
    # 動態(tài)圖繪制命令
    # 輸入分別為畫圖窗口,動畫函數(shù),動畫函數(shù)輸入變量,延時,初始函數(shù)
    ani = animation.FuncAnimation(fig, animate, tAxis,
        interval=200, init_func=init)
    #通過imagemagick引擎來保存gif
    ani.save('wave.gif',writer='imagemagick')
    plt.show()
if __name__ == "__main__":
    x = np.linspace(0,10,1000)
    t = np.linspace(0,12,2041)
    k = np.pi*2/1.064
    L = 5
    y = wave1d(x,t,k,L)
    drawGif(t,x,y)

得到結(jié)果為

在這里插入圖片描述

這個圖雖然很符合我們的預(yù)期,但有些物理過程并不清晰,我們不妨把初始波包設(shè)置為只有一個波峰的孤波

def set_y0(x,k,L):
    y = np.zeros_like(x)
    y[x<L] = np.sin(np.abs(x[x<L]*np.pi/L))
    return y

其圖像為

在這里插入圖片描述

我們可以清晰地看到,正弦波通過腔壁后,其震動方向發(fā)生了變化,此即半波損失。

以上就是Python光學(xué)仿真數(shù)值分析求解波動方程繪制波包變化圖的詳細內(nèi)容,更多關(guān)于Python數(shù)值分析求解波動方程繪制波包變化圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python調(diào)用JavaScript代碼的方法

    Python調(diào)用JavaScript代碼的方法

    這篇文章主要介紹了Python調(diào)用JavaScript代碼的方法,幫助大家在不同場景里,采用的最佳調(diào)用方式,提高程序的性能,感興趣的朋友可以了解下
    2020-10-10
  • Python 二叉樹的概念案例詳解

    Python 二叉樹的概念案例詳解

    這篇文章主要介紹了二叉樹的概念案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Python語法def語句及復(fù)雜用法實例探究

    Python語法def語句及復(fù)雜用法實例探究

    在 Python 中,def?是用于定義函數(shù)的關(guān)鍵字,本文將深入介紹def的用法和特點,詳細說明如何定義函數(shù)、傳遞參數(shù)、返回值以及更復(fù)雜的用法
    2024-01-01
  • Django自帶用戶認證系統(tǒng)使用方法解析

    Django自帶用戶認證系統(tǒng)使用方法解析

    這篇文章主要介紹了Django自帶用戶認證系統(tǒng)使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • python中pyqtgraph知識點總結(jié)

    python中pyqtgraph知識點總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python中pyqtgraph知識點總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 由Python運算π的值深入Python中科學(xué)計算的實現(xiàn)

    由Python運算π的值深入Python中科學(xué)計算的實現(xiàn)

    這篇文章主要介紹了由Python運算π的值深入Python中科學(xué)計算的實現(xiàn),由簡單的計算發(fā)散出各種算法的講解,需要的朋友可以參考下
    2015-04-04
  • Python列表和集合的效率大比拼

    Python列表和集合的效率大比拼

    程序的運行效率分為兩種:第一種是時間效率,第二種是空間效率,這篇文章主要介紹了Python列表和集合的效率對比,需要的朋友可以參考下
    2022-07-07
  • Python?計算機視覺編程進階之OpenCV?圖像銳化及邊緣檢測

    Python?計算機視覺編程進階之OpenCV?圖像銳化及邊緣檢測

    計算機視覺這種技術(shù)可以將靜止圖像或視頻數(shù)據(jù)轉(zhuǎn)換為一種決策或新的表示。所有這樣的轉(zhuǎn)換都是為了完成某種特定的目的而進行的,本篇我們來學(xué)習(xí)下如何對圖像進行銳化處理以及如何進行邊緣檢測
    2021-11-11
  • opencv-python基本圖像處理詳解

    opencv-python基本圖像處理詳解

    這篇文章主要介紹了Python Opencv圖像處理基本操作代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-08-08
  • python基于物品協(xié)同過濾算法實現(xiàn)代碼

    python基于物品協(xié)同過濾算法實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了python基于物品協(xié)同過濾算法實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論

岢岚县| 乌苏市| 陈巴尔虎旗| 吴川市| 三河市| 乌什县| 汉源县| 泸州市| 长葛市| 天峨县| 延长县| 景宁| 津市市| 达日县| 抚宁县| 南木林县| 德惠市| 凤庆县| 伊通| 达孜县| 南京市| 建德市| 保山市| 合作市| 遵化市| 黄龙县| 吕梁市| 保康县| 阜宁县| 镇平县| 舒城县| 徐闻县| 阜新| 仁化县| 北宁市| 临澧县| 六盘水市| 巴彦县| 乡城县| 平安县| 乌什县|