さまざまな密度のシェルで構成される球を考えてみましょう。
2つの配列があります。1つは各シェルの外半径用(rad[]
)、もう1つは各シェルの密度用(den[]
)です。と呼ばれる、与えられた半径までの質量を計算したいと思いmass[]
ます。
次のforループアプローチでは、最初に最も内側のシェルの質量(内側の半径がゼロであるため、球体)を見つけ、次に後続の各シェルの質量を前の(合計された)質量に追加することで、目的の結果を達成します。
mass = numpy.zeros(len(rad)) # create array
mass[0] = den[0]**(rad[0]**3) # find inner sphere mass
for i in range(1,len(mass)):
mass[i] = mass[i-1] + den[i]*(rad[i]**3 - rad[i-1]**3) # Find mass out to shell i
注:必要なのはスケーリングだけなので、円周率の要因については心配していません。
次のスライス結果が同じ結果を達成しない理由を誰かが説明できますか?
mass = numpy.zeros(len(rad))
mass[0] = den[0]*(rad[0]**3)
mass[1:] = mass[0:-1] + den[1:]*(rad[1:]**3-rad[0:-1]**3)