私はSellmeier方程式でサファイアの屈折率を計算しようとしています。私は方程式を定義しましたが、今はナノメートル単位で波長を入力する方法を理解できません。下記のコードを参照してください...sellmeier方程式でサファイアの屈折率を計算する
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.]
可視光線の波長は通常nmで与えられますが、私はあなたがこの条約に固執していることをあなたの定義から理解しています(可視範囲にほとんどありませんが)。このSellmeier方程式は決して聞こえませんでしたが、[Wikipediaは](https://en.wikipedia.org/wiki/Sellmeier_equation)係数がμm単位の波長に対して与えられると述べています。 'lam/= 1000 'の波長をμmに変換する必要があります。最初にBK7値で計算し、結果をWikipediaの図と比較します。 – MrT
@Piintheskyご意見ありがとうございます。私はあなたが600-2000 nmのBK7値を計算するように示唆したように、それは働いた。私はユニットが私の頭を越えて行ったと思う。 – kevin