Я вычисляю путь частицы около черной дыры, выполняя Runge Kutta на ODE (подробности не нужны, доказано, что они работают правильно).Функция имеет параметры h
, которые я ввожу как функцию b
и v
.Я пробегаю путь через все v = np.arange(0.001,1,0.01)
и для каждого ви меняю b
.Я хочу определить минимум b
, для которого частица в каждом v не будет захвачена, т.е. радиус сначала НЕ достигнет r = 1, поэтому я увеличиваю его небольшими приращениями, используя цикл.
Проблема в моем коде, если даже если у меня будет разное h
в каждом случае v
, минимальный b
, который мне требуется, рассчитывается как одинаковый для всех v
.Вы видите, где возникает эта проблема?
Рунге Кутта четвертого порядка для решения производной 2-го порядка
#vary v from 0 to 1
def obtainBCRIT():
vel = np.arange(0.001, 1, 0.01)
b = 0.01
bvalues = []
for i in vel:
radii = remove_negatives(calcCoords(1, b, i)[1])
while len([*filter(lambda x: x < 1, remove_negatives(radii))]) > 0:
b += 0.01
radii= remove_negatives(calcCoords(1, b, i)[1])
bvalues.append(b)
print("for velocity = " +str(i) + " final b = " + str(b) )
print(" radii = " + str(radii))
print(" b values = " +str(bvalues))
return(bvalues, vel)