import sympy as sp
sp.init_printing()
t, t0, t1, g, r0x, r0y, r1x, r1y = sp.symbols('t t_0 t_1 g r_0x r_0y r_1x r_1y')
adat=[(t0, 0), (t1, 1), (g,9.81), (r0x, 0), (r0y, 0), (r1x, 4.6), (r1y, 1)]
adat
v0x, v0y = sp.symbols('v_0x v_0y')
a = sp.Matrix([0,-g])
a
v0 = sp.Matrix([v0x, v0y])
v = sp.integrate(a,t) + v0
v
r = sp.integrate(v,t) + sp.Matrix([r0x, r0y])
r
megov0=sp.solve(r.subs(t,t1)-sp.Matrix([r1x, r1y]),[v0x, v0y])
megov0
v0.subs(megov0).subs(adat)
v0.subs(megov0).subs(adat).norm()
v1 = v.subs(t,t1).subs(megov0).subs(adat)
v1
v1.norm()
x = sp.Symbol('x')
megot = sp.solve([x-r[0]],[t])
megot
y = r[1].subs(megot).subs(megov0)
y
y.subs(adat)
A pálya csúcspontja
megoxcsucs=sp.solve([sp.diff(y,x)],[x])
megoxcsucs
x.subs(megoxcsucs).subs(adat)
y.subs(megoxcsucs).subs(adat)
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rc('font', size = 12)
plt.figure(figsize = (18/2.54,20/2.54))
tLista = np.linspace(float(t0.subs(adat)),float(t1.subs(adat)),10)
cmap = mpl.cm.get_cmap('viridis')
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin=0, vmax=1))
# fake up the array of the scalar mappable. Urgh...
sm._A = []
plt.colorbar(sm)
plt.plot([0,5],[-5,6],alpha=0)
for i in np.arange(0,len(tLista)):
plt.arrow(0,0,
float(v[0].subs(t,tLista[i]).subs(megov0).subs(adat)),
float(v[1].subs(t,tLista[i]).subs(megov0).subs(adat)),
color = cmap(tLista[i]), head_width = 0.2)
plt.xlim([0,5])
plt.ylim([-5,6])
plt.grid()
plt.xlabel(r'$v_x \, \left[\mathrm{m/s}\right]$')
plt.ylabel(r'$v_y \, \left[\mathrm{m/s}\right]$')
plt.axis('scaled')
plt.show()
et1 = (v1/v1.norm())
et1
at1 = et1*(a.dot(et1)).subs(t,t1).subs(adat)
at1
an1 = (a - at1).subs(t,t1).subs(adat)
an1
en1 = an1.normalized()
en1
a1 = a.subs(t,t1).subs(adat)
a1
plt.figure(figsize = (18/2.54,20/2.54))
ax = plt.gca()
plt.plot([-10,15],[-15,0], alpha = 0) # belerajzolunk egy áttetsző vonalat, hogy a nyilak helyesen jelenjenek meg
plt.arrow(0,0,float(at1[0,0]),float(at1[1,0]),linestyle = ':',color = '#FF0000', head_width = 1)
plt.arrow(0,0,float(an1[0,0]),float(an1[1,0]),linestyle = ':',color = '#FF0000', head_width = 1)
plt.arrow(0,0,float(a1[0,0]),float(a1[1,0]),color = '#FF0000', head_width = 1)
plt.plot([float(an1[0,0]),float(a1[0,0])],[float(an1[1,0]),float(a1[1,0])],linestyle = ':',color = '#FF0000')
plt.plot([float(at1[0,0]),float(a1[0,0])],[float(at1[1,0]),float(a1[1,0])],linestyle = ':',color = '#FF0000')
plt.arrow(0,0,2*float(v1[0,0]),2*float(v1[1,0]),color = '#0000FF', head_width = 1)
plt.arrow(0,0,5*float(et1[0,0]),5*float(et1[1,0]),color = '#FFA500', head_width = 1)
plt.arrow(0,0,5*float(en1[0,0]),5*float(en1[1,0]),color = '#FFA500', head_width = 1)
# plt.xlim(left = 0, right = 50)
# plt.ylim(bottom = -30, top = 60)
ax.set_xticklabels([])
ax.set_yticklabels([])
plt.axis('scaled')
plt.grid()
plt.show()
rho1 = v1.norm()**2/an1.norm()
rho1