考虑一个由不同密度的壳组成的球体。
我有两个数组,一个用于每个壳的外半径 ( rad[]
),一个用于每个壳的密度 ( 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
注意:我只需要缩放,所以我不担心 pi 的因素。
谁能解释为什么下面的切片结果没有达到相同的结果?
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)