You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python通过距离和角度计算波长?代码结果不符求解

问题分析与修正方案

你的代码有三个关键问题导致结果与示例差距极大:

  1. 变量名混淆:你把输入的距离(对应公式中的光栅/晶面间距d)存在nm变量,角度存在d变量,后续公式引用完全错位。
  2. 角度未转弧度:Python的math.sin()函数仅接受弧度作为参数,直接传入角度值会导致三角函数计算错误。
  3. 公式错误:根据示例输入输出反推,正确公式为布拉格衍射公式的简化形式:λ = 2 * d * sinθ(d是间距,θ是衍射角)。代入示例数值验证:2 * 0.025 * sin(25°) ≈ 2*0.025*0.4226 ≈ 0.0211,和教授的输出完全一致。

修正后的代码

import math

print("This program calculates the wavelength given distance and angle")
d = float(input("Please enter the distance (nm): "))
theta_deg = float(input("Please enter the angle (degrees): "))
theta_rad = math.radians(theta_deg)
wavelength = 2 * d * math.sin(theta_rad)
print(f"Wavelength is {wavelength:.4f} nm")

验证说明

输入示例中的0.025(距离)和25(角度),运行后会输出Wavelength is 0.0211 nm,与教授的示例完全匹配。代码中用math.radians()完成角度到弧度的转换,用格式化字符串控制输出小数点后四位,保证格式一致。

内容的提问来源于stack exchange,提问作者Yo Yo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:10:32