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菲涅尔公式)

import matplotlib.pyplot as plt

from matplotlib.ticker import FuncFormatter


#数学公式包
""" 
np.pi
np.cos(此处输入的是弧度制)
np.sqrt()
np.sin()
平方是**
"""

import numpy as np


"""
def 函数名字(输入参数)
    return 
"""


#公式
def fresnel(theta, n1, n2):
    theta = theta*np.pi/180
    xTheta = np.cos(theta)
    mid = np.sqrt(1-(n1/n2*np.sin(theta))**2)   #中间变量
    rp = (n2*xTheta-n1*mid)/(n2*xTheta+n1*mid)  #p分量振幅反射率
    rs = (n1*xTheta-n2*mid)/(n1*xTheta+n2*mid)  #
    tp = 2*n1*xTheta/(n2*xTheta+n1*mid)
    ts = 2*n1*xTheta/(n1*xTheta+n2*mid)
    return rp, rs, tp, ts


#画图
def testFres1(n1=1,n2=1.45):         #默认n2为1.45
    theta = np.arange(0,90,0.1)+0j  #
    a = theta*np.pi/180
    rp,rs,tp,ts = fresnel(theta,n1,n2)

    fig = plt.figure(1)
    plt.subplot(1,2,1)
    plt.plot(theta,rp,'-',label='rp')
    plt.plot(theta,rs,'-.',label='rs')
    plt.plot(theta,np.abs(rp),'--',label='|rp|')
    plt.plot(theta,np.abs(rs),':',label='|rs|')
    plt.legend()

    plt.subplot(1,2,2)
    plt.plot(theta,tp,'-',label='tp')
    plt.plot(theta,ts,'-.',label='ts')
    plt.plot(theta,np.abs(tp),'--',label='|tp|')
    plt.plot(theta,np.abs(ts),':',label='|ts|')
    plt.legend()
    plt.show()


def testFres2(n1=1,n2=1.5):
    theta = np.arange(0,90,0.1)+0j
    a = theta*np.pi/180
    rp,rs,tp,ts = fresnel(theta,n1,n2)

    Rp = np.abs(rp)**2
    Rs = np.abs(rs)**2
    Rn = (Rp+Rs)/2

    fig = plt.figure(1)
    plt.subplot(1,2,1)
    plt.plot(theta,Rp,'-',label='R_p')
    #plt.plot(theta,Rs,'-.',label='R_s')
    plt.plot(theta,Rn,'-',label='R_n')
    plt.legend()

    plt.show()

def testFres3(n1=1.5,n2=1):
    theta = np.arange(0,90,0.1)+0j
    a = theta*np.pi/180
    rp,rs,tp,ts = fresnel(theta,n1,n2)

    Rp = np.abs(rp)**2
    Rs = np.abs(rs)**2
    Rn = (Rp+Rs)/2

    fig = plt.figure(2)
    plt.subplot(1,2,1)
    plt.plot(theta,Rp,'-',label='R_p')
    plt.plot(theta,Rs,'-.',label='R_s')
    plt.plot(theta,Rn,'-',label='R_n')
    plt.legend()

    plt.show()



def testFres():
    theta = np.arange(0,90,0.1)+0j  #
    a = theta*np.pi/180
    
    rp,rs,tp,ts = fresnel(theta,1,2)
    Rp = np.abs(rp)**2
    Rs = np.abs(rs)**2
    Rn = (Rp+Rs)/2

    plt.suptitle("202008010110-homework")

    plt.subplot(1,2,1)
    plt.title("n1 = 1, n2 = 2")
    plt.plot(theta,Rp,'-',label='R_p')
    plt.plot(theta,Rs,'-',label='R_s')
    plt.plot(theta,Rn,'-.',label='')

    plt.ylim(0,1)#y轴上限为1,下限为0
    def to_percent(temp, position):#百分比上下限
        return '%1.0f'%(100*temp) + '%'
    plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))
    plt.legend()        #图例
    plt.xlabel("Incident angle (θ1/°)")
    plt.ylabel("Reflectivity (%)")
    #设置注释
    plt.annotate('Brewster angle (%.2f)'%(180*np.arctan(2)/np.pi), xy=(180*np.arctan(2)/np.pi, 0), xytext=(35, 0.6),
                xycoords='data',
                arrowprops=dict(facecolor='black',
                    arrowstyle = "->",)
                )


    rp,rs,tp,ts = fresnel(theta,2,1)
    Rp = np.abs(rp)**2
    Rs = np.abs(rs)**2
    Rn = (Rp+Rs)/2

    plt.subplot(1,2,2)
    plt.title("n1 = 2, n2 = 1")
    plt.plot(theta,Rp,'-',label='R_p')
    plt.plot(theta,Rs,'-',label='R_s')
    plt.plot(theta,Rn,'-.',label='')

    plt.ylim(0,1)#上限为1,下限为0
    def to_percent(temp, position):#百分比上下限
        return '%1.0f'%(100*temp) + '%'
    plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))
    plt.legend()        #图例
    plt.xlabel("Incident angle (θ1/°)")
    plt.ylabel("Reflectivity (%)")
    #设置注释
    plt.annotate('Brewster angle(%.2f)'%(180*np.arctan(0.5)/np.pi), xy=(180*np.arctan(0.5)/np.pi, 0), xytext=(35, 0.6),
                xycoords='data',
                arrowprops=dict(facecolor='black',
                    arrowstyle = "->",)
                )
    plt.annotate('Critical angle(%.2f)'%(180*np.arcsin(0.5)/np.pi), xy=(180*np.arcsin(0.5)/np.pi, 0), xytext=(60, 0.4),
                xycoords='data',
                arrowprops=dict(facecolor='black',
                    arrowstyle = "->",)
                )
    

    plt.show()



#主函数
#testFres2()
#testFres3()
testFres()



(14条消息) python光学仿真之菲涅耳公式_微小冷的博客-CSDN博客_菲涅尔公式

(14条消息) Python学习笔记(4)——Matplotlib中的annotate(注解)的用法_赵赵赵颖的博客-CSDN博客_annotate

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:50:48  更:2022-03-21 20:54:33 
 
开发: 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年11日历 -2024/11/26 13:48:00-

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