我被卡住了,试图将dx/dt与时间的关系图变成每个bin与时间关系中x的关系图。
我有一个庞大的星系数据集。每个星系都有一个数组,它是质量随时间变化的速率,即dM/dt。因此,每个银河系都有一个一维数组,表示在特定时间间隔的dM/dt。我还有一个时间数组。我可以绘制dM/dt与时间的关系图,并看到宇宙过程中的变化率。
然而,现在我想用每次星系的质量来绘制一个不同的图。即在每个时间间隔内形成了多少质量。我试图对每个数组进行积分,但这只是给出了最终的总质量。我想要每个间隔的质量,这样我就可以画一个图。
这是galaxy 1的dM/dt数组。
`[ 1.34162134e+10 1.00928939e+11 6.60376576e+10 3.42446745e+11
2.73107925e+11 1.91493528e+11 6.73213607e+11 8.64649622e+11
2.05433614e+11 8.47043150e+11 3.87556687e+11 1.67345819e+11
5.12216609e+11 1.87612654e+12 7.74310416e+11 -5.22415543e+09
-1.25683250e+11 -5.54250651e+10 -3.76655769e+10 -1.59683145e+10
2.82219633e+11 6.00554078e+11 3.44238577e+11 2.79598376e+11
1.05315182e+11 -3.21916236e+11 -1.50353059e+10 4.55187056e+10
-3.65908025e+10 7.60636622e+10 6.41365631e+10 7.13690729e+10
1.05199767e+11]`
这是时间数组。单位在Gyr中,但不重要。
`[ 0.418 0.547 0.687 0.844 1.036 1.282 1.54 1.944 2.384 2.839
3.285 3.744 4.206 4.657 5.115 5.577 6.073 6.522 6.998 7.453
7.932 8.432 8.902 9.389 9.837 10.299 10.834 11.323 11.824 12.337
12.795 13.328 13.803]`
当然,我可以画出这两个的图表:graph of galaxy
现在我想画出在每个间隔中形成的质量的图形,并绘制它与时间的关系(我希望这是有意义的)。所以我需要在每个时间间隔内对第一个数组进行积分。不过,我还是遇到了麻烦。这是我到目前为止所拥有的
` for i in range(galaxyarray.shape[0]): # for i in number of galaxies
for j in range(galaxyarray.shape[1]): # for j in each element
result = integrate.trapz((Mhdotarr[i,j]), time)`
但这并不管用。我可以通过对整个阵列进行积分来获得随时间形成的总质量,但我想获得每个间隔的质量。我希望这是合理的?
看起来像这样:example
如有任何帮助,我们不胜感激!
发布于 2021-07-25 21:57:27
我认为您正在寻找累积集成。要执行此操作,请用cumtrapz
替换trapz
for i in range(galaxyarray.shape[0]): # for i in number of galaxies
for j in range(galaxyarray.shape[1]): # for j in each element
result = integrate.cumtrapz((Mhdotarr[i,j]), time)
这将返回一个随时间变化的质量数组,其中最后一个元素是最终质量。
https://stackoverflow.com/questions/68518003
复制相似问题