Python光学仿真数值分析怎么求解波动方程绘制波包变化图

技术Python光学仿真数值分析怎么求解波动方程绘制波包变化图本篇内容介绍了“Python光学仿真数值分析怎么求解波动方程绘制波包变化图”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大

介绍了“如何在Python光模拟数值分析中求解波动方程并绘制波包变化图”的知识。很多人在实际案例的操作中会遇到这样的困难。让边肖带领你学习如何处理这些情况。希望大家认真阅读,学点东西!

00-1010波动方程是三个物理方程之一,即弦振动方程,其特征是时间和空间上的二阶偏导数。它的自由空间解是众所周知的三角函数形式,也可以写成自然虚数指数的形式。

一般来说,既然有精确的解析解,就不需要做不精确的数值模拟,但数值模拟的优势是双重的。一是避免无穷小,这样在思维上更直观。二是有启发性,对于一些没有解决方案的情况有一定的处理能力。

在这方面,我们首先考虑一维波动方程。

Python光学仿真数值分析怎么求解波动方程绘制波包变化图

importnumpayasnp

importmatplotlib.pyplotasplt

defset_y0(x,k,L):

y=NP . zero _ like(x)

y[Xl]=NP . sin(k * x[Xl])* NP . sin(NP . ABS(x[Xl]* NP . pi/L))

返回

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()的形状是。

Python光学仿真数值分析怎么求解波动方程绘制波包变化图

现在考虑让这个光波在[0,L]范围内来回传播。这里采用狄利克雷边界条件。

Python光学仿真数值分析怎么求解波动方程绘制波包变化图

此时,我们已经获得了光场的所有信息,并且可以从原理上预测这个波包的所有行为。迭代过程如下。

defwave1d(x,t,k,L):

dx=x[1]-x[0]

dt=t[1]-t[0]

d2=(dt/dx)**2

y=NP . zero([len(t),len(x)])

y[0,]=set_y0(x,k,L)

y[1,]=set_y0(x-dt,k,L)

for inrange(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是随时间变化的参量,现有的matplotlib.pyplot已经无法满足我们绘制动态图片的需求,所以引入animation来进行绘制,其代码为

import matplotlib.animation as animation
#输入时间,自变量,因变量,图题标记
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
    # 动态图绘制命令
    # 输入分别为画图窗口,动画函数,动画函数输入变量,延时,初始函数
    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)

得到结果为

Python光学仿真数值分析怎么求解波动方程绘制波包变化图

这个图虽然很符合我们的预期,但有些物理过程并不清晰,我们不妨把初始波包设置为只有一个波峰的孤波

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

其图像为

Python光学仿真数值分析怎么求解波动方程绘制波包变化图

我们可以清晰地看到,正弦波通过腔壁后,其震动方向发生了变化,此即半波损失。

“Python光学仿真数值分析怎么求解波动方程绘制波包变化图”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/38072.html

(0)

相关推荐

  • 写朋友深厚友情的诗句,10 形容友谊深厚的诗句

    技术写朋友深厚友情的诗句,10 形容友谊深厚的诗句为什么我首先想到的是孔子的“无友不如已者”……当然,这个观点容易带偏人写朋友深厚友情的诗句。古人:朋友,以义合者 ——朱熹
    近代:在背后称赞我们的人,就是我们的良友。

    生活 2021年10月28日
  • 抖音刷点赞,全网最强抖音点赞平台!

    技术抖音刷点赞,全网最强抖音点赞平台!若要购买抖音点赞、抖音粉丝,要看平台,平台不同,价格也不一样,深入了解用户是做好内容的前提,想要深入了解用户必须成为其圈子的一员才能真正看到自己的喜好,屌丝不能做豪车,矮穷不能做高端

    测评 2021年10月26日
  • 分析iOS中的实时远程配置全纪录

    技术分析iOS中的实时远程配置全纪录本篇内容介绍了“分析iOS中的实时远程配置全纪录”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年11月4日
  • HTML002

    技术HTML002 HTML_002/*
    时间:2021/11/25
    功能:HTML
    目录: 一: 模板注释二: 常用标签三: 列表四: 表格五: 表单 六: 提交表单
    */一: 模板注释!--

    礼包 2021年11月26日
  • 如何使用VBS遍历文件或文件夹路径输入文件的所有绝对路径

    技术如何使用VBS遍历文件或文件夹路径输入文件的所有绝对路径这篇文章给大家分享的是有关如何使用VBS遍历文件或文件夹路径输入文件的所有绝对路径的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。源码

    攻略 2021年11月1日
  • Python基础知识-1.6数据类型

    技术Python基础知识-1.6数据类型 Python基础知识-1.6数据类型一、引入
    在数学中我们知道有整数、小数、复数等,简言之数据是有类型之分的
    同样,在Python编程语言中,数据也是有类型的

    礼包 2021年12月5日