Python 用sellmeier方程计算蓝宝石的折射率
我试图用塞尔迈耶方程计算蓝宝石的折射率。我定义了这个方程,但现在我不知道如何输入波长,以纳米为单位。请参阅下面的代码Python 用sellmeier方程计算蓝宝石的折射率,python,numpy,Python,Numpy,我试图用塞尔迈耶方程计算蓝宝石的折射率。我定义了这个方程,但现在我不知道如何输入波长,以纳米为单位。请参阅下面的代码 import numpy as np import matplotlib.pyplot as plt def nsell( lam ): B1=1.023798 B2=1.058264 B3=5.280792 C1=0.0614482 C2=0.110700 C3=17.92656 lam=lam*10**-9 nsq = 1 + [B1] * lam**2 / (l
import numpy as np
import matplotlib.pyplot as plt
def nsell( lam ):
B1=1.023798
B2=1.058264
B3=5.280792
C1=0.0614482
C2=0.110700
C3=17.92656
lam=lam*10**-9
nsq = 1 + [B1] * lam**2 / (lam **2 - [C1])
nsq = nsq + [B2] * lam**2 / (lam **2 - [C2])
nsq = nsq + [B3] * lam**2 / (lam **2 - [C3])
return nsq**0.5
Lab=np.linspace(300,400,20)
test=nsell(Lab)
print(test)
我得到了奇怪的结果,或者我只是不明白
runfile('C:/Users/Kevin/Documents/Python Scripts/ligei.py', wdir='C:/Users/Kevin/Documents/Python Scripts')
[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1.]
您使用的系数似乎是基于微米的,因此您也必须使用微米来表示lambda。只用
Lab=np.linspace(0.3,0.4,20)
因为看起来你想要300纳米到400纳米,也就是0.3微米到0.4微米
或者,可以将系数转换为要使用的单位
此外,系数周围的方括号是不必要的。可见光的波长通常以nm为单位,我从您对
Lab
的定义中了解到,您坚持这一约定(尽管它几乎不在可见范围内)。从未听说过这个Sellmeier方程,但给出了波长的系数,单位为µm。您应该将lam/=1000
的波长转换为µm。我会先用BK7值进行计算,然后将计算结果与维基百科图表中的结果进行比较。@Piinthesky感谢您的评论。我按照你的建议计算了600-2000纳米的BK7值,结果成功了。我想我的单位超过了我的头。如果你建议这样做,那么你也必须调整步长。np.linspace
使用步长,而不是步长(不像np.arange
)。