首页 > 解决方案 > for 和 while 循环中的计算产生相同数字的列表

问题描述

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

我的代码中的问题即使我h在每种情况下都有不同的结果v,但我需要的最小值b计算为对所有情况都相同v。你看到这个问题出现在哪里了吗?

四阶龙格库塔求解二阶导数

#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)

标签: pythonlistfor-loopphysicsrunge-kutta

解决方案


推荐阅读