IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Python光学仿真】光线在线性分层的变折射率介质中传播的规律 -> 正文阅读

[Python知识库]【Python光学仿真】光线在线性分层的变折射率介质中传播的规律

光线模型默许了一条基本的原则:即道路千万条,光只走最短的那条。

为了让问题充分简单,先考虑折射率分层分布的情况,即假设空间中折射率分布为

n = n 0 + k x n=n_0+kx n=n0?+kx

取光线传播方向为坐标平面,建立坐标系 x O y xOy xOy,记光束入射设介质折射率分布为 n ( x , y ) n(x,y) n(x,y),光束与 x x x轴夹角为 θ \theta θ

在这里插入图片描述

考虑折射率只在 x x x轴方向变化,即 n ( x ) n(x) n(x)。设介质中某点 ( x , y ) (x,y) (x,y)入射光线 ( x , y , θ ) (x,y,\theta) (x,y,θ),其临近的出射位置为 ( x + d x , y + d y ) (x+\text dx,y+\text dy) (x+dx,y+dy),有

n ( x ) sin ? θ ( x ) = n ( x + d x ) sin ? θ ( x + d x ) n(x)\sin\theta(x)=n(x+\text dx)\sin\theta(x+\text dx) n(x)sinθ(x)=n(x+dx)sinθ(x+dx)

记外界折射率为 n 0 n_0 n0?,入射角为 θ 0 \theta_0 θ0?,则对于任意一点,有

n ( x ) sin ? θ ( x ) = n 0 sin ? θ 0 n(x)\sin\theta(x)=n_0\sin\theta_0 n(x)sinθ(x)=n0?sinθ0?

d y = d x tan ? θ ( x ) = d x sin ? θ ( x ) 1 ? sin ? 2 θ ( x ) ( d y d x ) 2 = n 0 2 sin ? 2 θ 0 n ( x ) 2 ? n 0 2 sin ? 2 θ 0 \begin{aligned} \text dy&=\text dx\tan\theta(x)\\ &=\text dx\frac{\sin\theta(x)}{\sqrt{1-\sin^2\theta(x)}}\\ (\frac{\text dy}{\text dx})^2&=\frac{n_0^2\sin^2\theta_0}{n(x)^2-n_0^2\sin^2\theta_0}\\ \end{aligned} dy(dxdy?)2?=dxtanθ(x)=dx1?sin2θ(x) ?sinθ(x)?=n(x)2?n02?sin2θ0?n02?sin2θ0???

此即在折射率分层介质中,光的传播规律。

n ( x ) = n 0 + k x n(x)=n_0+kx n(x)=n0?+kx时,记 N 0 = n 0 sin ? θ 0 N_0=n_0\sin\theta_0 N0?=n0?sinθ0?,上式写为

( d y d x ) 2 = N 0 2 ( n 0 + k x ) 2 ? N 0 2 d y d x = 1 ( n 0 + k x N 0 ) 2 ? 1 \begin{aligned} (\frac{\text dy}{\text dx})^2&=\frac{N^2_0}{(n_0+kx)^2-N_0^2}\\ \frac{\text dy}{\text dx}&=\frac{1}{\sqrt{(\frac{n_0+kx}{N_0})^2-1}} \end{aligned} (dxdy?)2dxdy??=(n0?+kx)2?N02?N02??=(N0?n0?+kx?)2?1 ?1??

X = n 0 + k x N 0 X=\frac{n_0+kx}{N_0} X=N0?n0?+kx?,即 x = N 0 X ? n 0 k x=\frac{N_0X-n_0}{k} x=kN0?X?n0??,上式变为

d y d X k 2 N 0 = 1 X 2 ? 1 → y = 2 N 0 k ∫ 1 X 2 ? 1 d x → X = 1 cos ? α = 2 N 0 k ∫ d α cos ? α = 2 N 0 k ln ? ∣ 1 + sin ? α cos ? α ∣ → X = 1 cos ? α = 2 N 0 k ln ? ∣ X + X 2 ? 1 ) ∣ \begin{aligned} \frac{\text dy}{\text dX}\frac{k}{2N_0}&=\frac{1}{\sqrt{X^2-1}}\\ \to y&=\frac{2N_0}{k}\int\frac{1}{\sqrt{X^2-1}}\text dx\\ \xrightarrow{X=\frac{1}{\cos\alpha}}&=\frac{2N_0}{k}\int\frac{\text d\alpha}{\cos\alpha}\\ &=\frac{2N_0}{k}\ln|\frac{1+\sin\alpha}{\cos\alpha}|\\ \xrightarrow{X=\frac{1}{\cos\alpha}}&=\frac{2N_0}{k}\ln|X+\sqrt{X^2-1})| \end{aligned} dXdy?2N0?k?yX=cosα1? ?X=cosα1? ??=X2?1 ?1?=k2N0??X2?1 ?1?dx=k2N0??cosαdα?=k2N0??lncosα1+sinα?=k2N0??lnX+X2?1 ?)?

解得

y = 2 N 0 k ln ? ∣ n 0 + k x N 0 + ( n 0 + k x N 0 ) 2 ? 1 ) ∣ + C y=\frac{2N_0}{k}\ln|\frac{n_0+kx}{N_0}+\sqrt{(\frac{n_0+kx}{N_0})^2-1})| + C y=k2N0??lnN0?n0?+kx?+(N0?n0?+kx?)2?1 ?)+C

设入射位置为 ( 0 , 0 ) (0,0) (0,0),则上式变为

y = 2 N 0 k ln ? n 0 + k x + ( n 0 + k x ) 2 ? N 0 2 n 0 + n 0 2 ? N 0 2 y=\frac{2N_0}{k}\ln\frac{n_0+kx+\sqrt{(n_0+kx)^2-N_0^2}}{n_0+\sqrt{n_0^2-N_0^2}} y=k2N0??lnn0?+n02??N02? ?n0?+kx+(n0?+kx)2?N02? ??

代码为

def linearRefractive(n0=1,k=0.01,theta0=0.5):
    x = np.arange(400)
    nx = n0 + k*x
    N0 = n0*np.sin(theta0)
    y = 2*N0/k*np.log(
        (nx+np.sqrt(nx**2-N0**2))/(n0+np.sqrt(n0**2-N0**2)))
    Y = 1/np.tan(theta0)*x+y[0]

    #折射率场
    N,_ = np.meshgrid(x,np.arange(np.max(Y)))
    N = n0 + k*N

    plt.imshow(N.T)
    plt.plot(y,x)
    plt.plot(Y,x)

    plt.show()

得到光线的传播图像为

在这里插入图片描述

图中两条线分别表示光线轨迹和光线的入射方向。

所谓分层介质,当然不必处处折射率梯度恒定,即 n ( x ) n(x) n(x)可以选取更加复杂的变化规律,而此时下列方程不一定存在解析解

( d y d x ) 2 = n 0 2 sin ? 2 θ 0 n ( x ) 2 ? n 0 2 sin ? 2 θ 0 (\frac{\text dy}{\text dx})^2=\frac{n_0^2\sin^2\theta_0}{n(x)^2-n_0^2\sin^2\theta_0} (dxdy?)2=n(x)2?n02?sin2θ0?n02?sin2θ0??

故选取其差分方式

d y = n 0 sin ? θ 0 n ( x ) 2 ? n 0 2 sin ? 2 θ 0 d x \text dy=\frac{n_0\sin\theta_0}{\sqrt{n(x)^2-n_0^2\sin^2\theta_0}}\text dx dy=n(x)2?n02?sin2θ0? ?n0?sinθ0??dx

当折射率周期变化时,有

def triangleRefractive(n0=1,k=0.5,theta0=0.5):
    x = np.arange(400)
    nx = n0 + 1 + k*np.sin(x/20)
    N0 = n0*np.sin(theta0)
    y = x*1.0
    for i in x[1:]:
        y[i] = N0/np.sqrt(nx[i]**2-N0**2)+y[i-1]
    Y = 1/np.tan(theta0)*x+y[0]

    #折射率场
    N,_ = np.meshgrid(x,np.arange(np.max(y)))
    N = n0 + k*np.sin(N/20)

    plt.imshow(N)
    plt.plot(x,y)
    plt.plot(x[Y<np.max(y)],Y[Y<np.max(y)])

    plt.show()

如图所示

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-23 00:52:48  更:2022-06-23 00:52:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 15:03:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码