Python 在"for& ;;而循环会产生相同编号的列表

Python 在"for& ;;而循环会产生相同编号的列表,python,list,for-loop,physics,runge-kutta,Python,List,For Loop,Physics,Runge Kutta,我通过在ODE上执行Runge Kutta来计算黑洞附近粒子的路径(不需要细节,证明工作正常)。该函数具有参数h,我将其作为b和v的函数输入。我在所有v=np.arange(0.001,1,0.01)中运行路径,并且对于每个v,我都会改变b。我想确定最小值b,对于该值,每个v处的粒子都不会被捕获,即半径首先没有达到r=1,因此我使用循环以小增量增加它 我的代码中的问题如果即使我在每种情况下的v都有不同的h,我要求的最小b对于所有v都是相同的。你知道这个问题是从哪里来的吗 求解二阶导数的四阶龙格库

我通过在ODE上执行Runge Kutta来计算黑洞附近粒子的路径(不需要细节,证明工作正常)。该函数具有参数
h
,我将其作为
b
v
的函数输入。我在所有
v=np.arange(0.001,1,0.01)
中运行路径,并且对于每个v,我都会改变
b
。我想确定最小值
b
,对于该值,每个v处的粒子都不会被捕获,即半径首先没有达到r=1,因此我使用循环以小增量增加它

我的代码中的问题如果即使我在每种情况下的
v
都有不同的
h
,我要求的最小
b
对于所有
v
都是相同的。你知道这个问题是从哪里来的吗

求解二阶导数的四阶龙格库塔法
#将v从0变为1
def获取BCRIT():
水平=np.arange(0.001,1,0.01)
b=0.01
b值=[]
对于i级:
半径=去除负电荷(计算字词(1,b,i)[1])
而len([*过滤器(λx:x<1,去除_负片(半径)))>0:
b+=0.01
半径=去除负电荷(计算字词(1,b,i)[1])
b值。追加(b)
打印(“for velocity=“+str(i)+”final b=“+str(b))
打印(“半径=”+str(半径))
打印(“b值=“+str(b值))
返回值(b值,级别)

你能给我一些测试用例吗?
b
v
h
的值应该是什么?最后的b应该随着v的增加而增加,但确切的趋势未知。h的计算是正确的,因此它产生的值是正确的。您不需要在for循环内初始化
b
?因此,每次迭代都将
b
设置回
0.01
。这确实会产生不同的
b
值,但我不知道它们是否正确。我该怎么做?
对于I in vel:b=0.01
。您删除了上面的
b=0.01
值=[]您能给我一些测试用例吗?
b
v
h
的值应该是什么?最后的b应该随着v的增加而增加,但确切的趋势未知。h的计算是正确的,因此它产生的值是正确的。您不需要在for循环内初始化
b
?因此,每次迭代都将
b
设置回
0.01
。这确实会产生不同的
b
值,但我不知道它们是否正确。我该怎么做?
对于I in vel:b=0.01
。您删除了上面的
b=0.01
值=[]
#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)