У меня проблемы с решением системы нелинейных обыкновенных дифференциальных уравнений. Кажется, они не дают моего правильного результата.
Вот уравнения, которые мне нужно решить:
![asdadsasd](https://imgur.com/tk5mm96.png)
И вот результат, который я пытаюсь получить:
![asdadsasd](https://imgur.com/scM1iIK.png)
Вот мой вывод:
![output](https://i.stack.imgur.com/xva4O.png)
"" "
def model(t, z):
#Variables
r, zeta, phi, V, Gamma, psi = z
print(t)
#Simplify
rho = planet.density(r)
gr = planet.g(r)
w = planet.angular_rotation_rate
#Postition
drdt = V*np.sin(Gamma)
dzetadt = (V*np.cos(Gamma)*np.cos(psi))/(r*np.cos(phi))
dphidt = (V*np.cos(Gamma)*np.sin(psi))/r
#Forces
dVdt = -1*(rho*V**2)/(2*beta) - gr*np.sin(Gamma) + r*w**2*np.cos(phi)*(np.sin(Gamma)*np.cos(phi) - np.cos(Gamma)*np.sin(phi)*np.sin(psi))
dGammadt = (-1*gr*np.cos(Gamma) + V**2*np.cos(Gamma)/(r) + 2*w*V*np.cos(phi)*np.cos(psi) + r*w**2*np.cos(phi)*(np.cos(Gamma)*np.cos(phi) + np.sin(Gamma)*np.sin(phi)*np.sin(psi)))/(V)
dpsidt = (-1*(V**2*np.cos(Gamma)*np.cos(psi)*np.tan(phi))/r + 2*w*V*(np.tan(Gamma)*np.cos(phi)*np.sin(psi) - np.sin(phi)) - (r*w**2*np.sin(phi)*np.cos(phi)*np.cos(psi))/(np.cos(Gamma)))/V
#Pack into dzdt
dzdt = [drdt, dzetadt, dphidt, dVdt, dGammadt, dpsidt]
return dzdt
def hit_ground(t, y):
return y[0]
hit_ground.terminal = True
hit_ground.direction = -1
#Solv print("Solving trajectory for beta = {}.".format(beta))
sol = solve_ivp(model, t_span = [start, end], y0 = z0, events = hit_ground, max_step = dt)
"" "
Из того, что я могу сказать, термин V**2*np.cos(Gamma)/r
вызывает некоторые проблемы, так как, когда я умножаю это на 0, результат выглядит больше как правильный.
В моем коде есть и другие части (например, начальные условия и постобработка), но я недавно разместил здесь сообщение, и оказалось, что это не правильный способ задать вопрос. Пожалуйста, скажите мне, если вам нужно что-нибудь еще.
Спасибо.