full_output을 활성화하는 것은 쉬운 일이 아니지만 일반적으로 문제는 다소 복잡합니다. 불행히도 내 코드를 보여주는 것 외에 다른 문제를 쉽게 설명 할 수있는 방법이 없습니다.ODEINT에서 full_output을 활성화하는 데 문제가 있음
Traceback (most recent call last):
th1 = [ylist[j][0] for j in range(0,len(t))]
KeyError: 0
나는이 가정 :
y_initial = pylab.array([th1,th2,th3,phi1,phi2,phi3])
t = pylab.arange(0.0, tmax, dt)
ylist = odeint (derivs, y_initial, t)
th1 = [ylist[j][0] for j in range(0,len(t))]
th2 = [ylist[j][1] for j in range(0,len(t))]
th3 = [ylist[j][2] for j in range(0,len(t))]
phi1 = [ylist[j][3] for j in range(0,len(t))]
phi2 = [ylist[j][4] for j in range(0,len(t))]
phi3 = [ylist[j][5] for j in range(0,len(t))]
odeint 쓰기 (derivs을 y_initial, t는, full_output는 = 0)에는 문제가 있지만 쓰기 odeint이 (derivs는 y_initial, t는, full_output 1 =) 제공하지 않습니다 원인 오류는 odeint (배열 등)를 정의한 방식 때문에 발생합니다. odeint 값을 계산하고 배열에 저장하기 위해 루프를 작성한 다음이 행을 다음 행으로 진행 시키려면이 문제가 해결됩니까? 그렇다면 어떤 코드가 생겼을까요? 당신은 내가 그런 이상한 방법으로 그것을 작성한 whay 이해하지 않는 경우
여기에 이유 :
def dth2dt (t,th1,th2,th3,phi1,phi2,phi3):
return *some math dependent on switching the six variables around*
def dphi2dt (t,th1,th2,th3,phi1,phi2,phi3):
return **some math dependent on switching the six variables around**
def derivs(y,t):
dydt[0] = dth2dt(t,y[2],y[1],y[0],y[5],y[4],y[3])
dydt[3] = dphi2dt(t,y[2],y[1],y[0],y[5],y[4],y[3])
dydt[1] = dth2dt(t,y[0],y[1],y[2],y[3],y[4],y[5])
dydt[4] = dphi2dt(t,y[0],y[1],y[2],y[3],y[4],y[5])
dydt[2] = dth2dt(t,y[1],y[2],y[0],y[4],y[5],y[3])
dydt[5] = dphi2dt(t,y[1],y[2],y[0],y[4],y[5],y[3])
return dydt
나는이 방법이 필요없이 주변 변수를 전환 할 날 수 있음에 분명하다 희망 반복적으로 수학을 써라. 하지만 이제는 odeint에서 full_output을 활성화 할 수 없습니다.
감사합니다. 답변 해 주셔서 감사합니다.
류