用 numpy + matplotlib 写一个完整可运行的仿真,不要用 scipy: 【物理场景】不透明圆盘(半径 ...
Prompt
用 numpy + matplotlib 写一个完整可运行的仿真,不要用 scipy: 【物理场景】不透明圆盘(半径 R = 0.5 mm)被平面波(λ = 633 nm)垂直照明, 观察圆盘后方不同距离 z 处的衍射图样——目标是复现泊松亮斑。 【技术要求】 1. 二维角谱法(ASM)传播,用 FFT 实现。注意传递函数的采样: H(fx,fy) = exp(i·2π·z·sqrt(1/λ² - fx² - fy²)),超过截止频率的必须置零, 且要说明你的采样是否满足 Nyquist(给出判断式)。 2. 计算域 8 mm × 8 mm,网格 2048 × 2048。 3. 圆盘用硬边不透明(振幅置零)。 4. 传播距离 z 从 0.05 m 扫到 1.0 m,共 120 步。 【必须输出/画出】 (a) z = 0.25 m 处的二维强度图(对数色标,能看出中心亮斑和同心环) (b) 沿 x 轴的径向剖面(线性 + 对数两张) (c) 轴上强度 I(0,0,z) 随 z 的变化曲线(120 个点) (d) 一个 GIF 动画:z 变化时衍射图样的演化 (e) 打印关键数值: - z = 0.25 m 处轴上强度 I(0,0,z)/I₀ - 中心亮斑的半高全宽(FWHM,单位 μm) - 理论 FWHM 预测值(说明你用的公式) 【自检,必须做】 1. 理想不透明圆盘的轴上强度在【任何 z】都应当严格等于 I₀(泊松亮斑的定义)。 请验证你的结果,如果偏离超过 2%,说明采样或边界处理有问题, 请调试到达标,并在回答里写清楚你调整了什么。 2. 验证能量守恒:传播前后总能量比应该 ≈ 1。 3. 说明为什么"圆盘挡光,中心反而是亮的",用菲涅耳半波带的语言解释。
Response not available
Response not available