我试图用Sellmeier方程计算蓝宝石的refracrive指数。我定义了方程,但现在我无法弄清楚如何以纳米为单位输入波长。见下面的代码...
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.]
答案 0 :(得分:1)
您使用的系数似乎基于千分尺,因此您还必须使用千分尺作为λ。只需使用
Lab=np.linspace(0.3,0.4,20)
因为看起来你想要300纳米到400纳米,这是0.3微米到0.4微米。
或者,您可以将系数转换为您想要使用的单位。
此外,系数周围的方括号是不必要的。