Я попробовал это:
Метод rk4: как мне обновить значения p и phi на каждом временном интервале, чтобы rk4 повторялся через данный интервал времени
phi0 = 5.0*math.pi/180 #rad
p0 = 0
def f(t,p):
return 1/(2*Ixx)*rho*V^2*S*b*C
def g(t,phi):
return p
def rk4(p, phi, t0, phi0, p0, t, h):
h=0.05
n = int((t-t0)/h)
p= p0
phi = phi0
p_hat = p*b/(2*V)
C = -0.06*phi+0.033*p_hat+0.073*p_hat^3-0.36*p_hat*phi^2+1.47*p_hat^2*phi
for i in range (1, int(n+1)):
k1 = h * f(t,p)
k2 = h * f(t + 0.5 * h, p + 0.5 * k1)
k3 = h * f(t + 0.5 * h, p + 0.5 * k2)
k4 = h * f(t + h, p + k3)
t[i+1]= t[i] + i * h
p[i+1] = p[i] + (k1 + k2 + k2 + k3 + k3 + k4) / 6
k11 = h * g(t,phi)
k22 = h * g(t + 0.5 * h, phi + 0.5 * k1)
k33 = h * g(t + 0.5 * h, phi + 0.5 * k2)
k44 = h * g(t + h, phi + k3)
phi[i+1] = phi[i] + (k11 + k22 + k22 + k33 + k33 + k44) / 6
return t, p, phi