Метод rk4: как мне обновить значения p и phi на каждом временном интервале, чтобы rk4 повторял этот интервал времени - PullRequest
0 голосов
/ 19 апреля 2020

Я попробовал это:

Метод 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
...