Мне нужно запустить 3 переменные, которые меняются во времени внутри функции odeint. У меня есть 3 массива с несколькими элементами, и я хочу, чтобы функция odeint использовала 1-й элемент массива для t = 0, 2-й элемент массива для t = 1 ...
Я попытался поместить "for" внутри "def", в результате чего он использовал только первый элемент массивов, а если я поместил "def" внутри "for", это привело бы к использованию только последнего элемента массива
Массивы с несколькими элементами: ur; utheta; uphi и они рассчитываются в другом месте кода
здесь я могу настроить количество элементов в массивах и время симуляции
Массивы с несколькими элементами: ur; utheta; uphi и они рассчитываются в другом месте кода
Количество элементов совпадает с числом «время», указанным в коде
time=10
def c(zc,t):
for cc in range(0, time):
x1=zc[0]
x2=zc[1]
x3=zc[2]
x4=zc[3]
x5=zc[4]
x6=zc[5]
dx1dt=x2
dx2dt= x1 * (x4 ** 2) * (sin(x5) ** 2) + x1 * (x6 ** 2) - (mu / (x1 ** 2)) + (3 / 2) * mu * J2 * (ae ** 2) * (3 * (((cos(x5)) ** 2) - 1) / (x1 ** 4)) + ur[cc]
dx3dt=x4
dx4dt= -((2*x2*x4) / x1) - 2 * x4 * x6 * cot(x5) + (utheta[cc] / (x1 * sin(x5)))
dx5dt=x6
dx6dt= -((2*x2*x6) / x1) + (x4 ** 2) * sin(x5) * cos(x5) + 3 * mu * J2 * ((ae ** 2) / (x1 ** 5)) * cos(x5) * sin(x5) + (uphi[cc] / x1)
print(ur[cc])
return [dx1dt, dx2dt, dx3dt, dx4dt, dx5dt, dx6dt]
z0 = [r, rdot, theta, thetadot, phi, phidot] #initial conditions provided elsewhere
t=np.linspace(0,time,time)
zc=odeint(c,z0,t)
используя "print (ur [cc])", я вижу, что "ur" не меняется во времени, как я хочу, чтобы