2023CUPT第四题彩色线思路与解法 | 您所在的位置:网站首页 › 彩色线怎样搭配颜色最好看 › 2023CUPT第四题彩色线思路与解法 |
这是一道很彻底的光学题,可以参考
5.7 振幅型平面透射光栅 光学(第三版)郭永康 主编 朱建华 副主编 CUPT前国赛队员倾情写作 英文题目When a compact disc or DVD is illuminated with light coming from a filament lamp in such a way that only rays with large angles of incidence are selected, a clear green line can be observed. The colour varies upon slightly changing the angle of the disc. Explain and investigate this phenomenon. 不翻译了,搞物理的同学不需要别人的翻译 符号规定符号 含义 D 观察点 S 光源 P 反射点 O 光盘的圆心 a 光盘刻槽宽度 𝑑 O点到SD的距离 𝑟 SP之间的距离 光盘中心环半径 𝛼 角SPD的一半 𝛽 光盘与 水平方向的夹角 理论推导01装置示意图(由一美丽的工科女提供): ![]() ![]() ![]() [597*10**-9,577*10**-9],[577*10**-9,492*10**-9],\ [492*10**-9,450*10**-9],[450*10**-9,435*10**-9],\ [435*10**-9,390*10**-9]] 源代码 import matplotlib.pyplot as plt import numpy as np import matplotlib matplotlib.rcParams["font.sans-serif"] = ["SimHei"] matplotlib.rcParams["axes.unicode_minus"] = False #120型号光盘 C = 1 a = 1.5 * 10**-6 N = int((120-15)* 10**-3/a) alpha = 0.22 #(arccos alpha \apx 30) beta = 0.32 plt.title("归一化前特定角度下观察到的可见光光强分布") color = ["红光","橙光","黄光","绿光","青色","蓝光","紫光"] color_wavelength = [[760*10**-9,622*10**-9],[622*10**-9,597*10**-9],\ [597*10**-9,577*10**-9],[577*10**-9,492*10**-9],\ [492*10**-9,450*10**-9],[450*10**-9,435*10**-9],\ [435*10**-9,390*10**-9]] for i in range(7): plt.scatter(color_wavelength[i],[0,0],c="black",s=3) plt.text(color_wavelength[i][0]*1/4+color_wavelength[i][1]*3/4,0,color[i],size=5) Lambda = np.linspace(390*10**-9,780*10**-9,1000) I = np.zeros(1000) for i in range(1000): I[i] = C*np.sin((N+1)*np.pi*a*np.cos(beta)/Lambda[i]/np.cos(alpha))**2/np.sin(np.pi*a*np.cos(beta)/Lambda[i]/np.cos(alpha))**2 plt.plot(Lambda,I,label="alpha:"+str(round(alpha,2))+"beta:"+str(round(beta,2)),c="red") plt.legend() plt.show() 效果图![]() ![]() 国标: CD光盘中两个相邻螺旋光道之间的间距为 1.5 微米 DVD光盘中两个相邻螺旋光道之间的间距为 0.74 微米 120型光盘(内外径):15mm----120mm 小型光盘(内外径):21mm----80mm 如果需要现象明显的话,我们只需要找到 不同光盘 相同的两个角参数 不同的反射光 即可说明 其实这样依然是不严谨的,必须用CCD才能很好的说明这个问题 实验数据与验证 按照CUPT的一般操作,你懂的。。。。其实,从统计学的角度来看,如果你的数据是通过取了一大堆平均之后得出的一个很合理的值,比如 预期(0.5) 实测(0.2,0.3,0.7,0.8),那么大概率是伪造的或者有操作错误的 数据归一化处理 其实这一步可做可不做,但是为了比分好看一点,最好还是做一下的 import matplotlib.pyplot as plt from numba import jit import numpy as np import matplotlib matplotlib.rcParams["font.sans-serif"] = ["SimHei"] matplotlib.rcParams["axes.unicode_minus"] = False @jit def fun120(alpha,beta,C=1,a = 1.5 * 10**-6): #120型号光盘 N = int((120-15)* 10**-3/a) plt.title("归一化后特定角度下观察到的可见光光强分布") color = ["红光","橙光","黄光","绿光","青色","蓝光","紫光"] color_wavelength = [[760*10**-9,622*10**-9],[622*10**-9,597*10**-9],\ [597*10**-9,577*10**-9],[577*10**-9,492*10**-9],\ [492*10**-9,450*10**-9],[450*10**-9,435*10**-9],\ [435*10**-9,390*10**-9]] for i in range(7): plt.scatter(color_wavelength[i],[0,0],c="black",s=3) plt.text(color_wavelength[i][0]*1/4+color_wavelength[i][1]*3/4,0,color[i],size=5) Lambda = np.linspace(390*10**-9,780*10**-9,1000) I = np.zeros(1000) for i in range(1000): I[i] = C*np.sin((N+1)*np.pi*a*np.cos(beta)/Lambda[i]/np.cos(alpha))**2/np.sin(np.pi*a*np.cos(beta)/Lambda[i]/np.cos(alpha))**2 SUM = sum(I) I = [i/SUM for i in I] plt.plot(Lambda,I,label="alpha:"+str(round(alpha,2))+"beta:"+str(round(beta,2)),c="red") plt.legend() plt.pause(0.2) plt.cla() if __name__ == "__main__": for i in np.linspace(0.1,0.8,40): for j in np.linspace(0.1,0.8,40): fun120(i,j) 效果归一化光强 22年12月2日 CUPT |
CopyRight 2018-2019 实验室设备网 版权所有 |