У меня есть очень базовая модель, управляющая падающим объектом:
# ODE modelling velocity of a falling object
def field(t, v):
v_dot = 9.8 - (gamma / mass) * v
return v_dot
Я решил и построил этот ODE для нескольких различных начальных условий. Я хотел бы наложить график с полем уклона, используя matplotlib.quiver ().
Мне сложно разобраться с аргументами U и V. Я понимаю, что это направления x и y, на которые должна указывать каждая стрелка.
Вот то, что я попробовал, тактика, которую я почерпнул из другого ответа:
x = np.linspace(0, 50, 6)
y = np.linspace(0, 150, 16)
X, Y = np.meshgrid(x, y)
f = 9.8 - (gamma / mass) * Y
U, V = np.gradient(f)
Q = plt.quiver(X, Y, U, V)
Однако,На этом графике показано следующее:
![enter image description here](https://i.stack.imgur.com/JqitJ.png)
Что, безусловно, неправильно, не говоря уже о безобразии. Разумеется, моя главная проблема в том, что я не знаю, как правильно найти U и V. Я просмотрел несколько других вопросов, но большинство людей делают что-то гораздо более сложное, чем я, и я не могу уменьшить их ответы на мою более простую проблему.
# ODE modelling velocity of a falling object
def field(t, v):
v_dot = 9.8 - (gamma / mass) * v
return v_dot
# gamma is the coefficient for air resistance
gamma = 0.392
mass = 3.2
# declare interval and step size
t_0 = 0.
t_n = 100.
delta = 0.05
time = np.arange(t_0, t_n, delta)
fig, axs = plt.subplots(figsize=(10, 6))
fig.suptitle("A Simple Model: Falling Object")
axs.set_title(r"Solution to $\dot{v} = 9.8 - \frac{\gamma}{m}v$")
axs.set_ylabel('Velocity')
axs.set_xlabel('Time')
for x_0 in np.arange(0., 101., 20):
# Solve for each initial condition x_0
x = rk4(delta, time, field, x_0)
# Plot results
axs.plot(time, x, label=r"$v_0=$%.3f" % x_0)