Вычисления в циклах for и while создают список с тем же числом - PullRequest
1 голос
/ 28 сентября 2019

Я вычисляю путь частицы около черной дыры, выполняя 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)

...