Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 588
import matplotlib.pyplot as plt from numpy import linspace, full_like, array, arange # 3 from mpmath import degrees, radians # 1 from sympy import * from sympy import N as Num # 4 # pie is better than pi pie = 2*pi # 5 # SI units: m = Symbol("m", positive=True) s = Symbol("s", positive=True) kg = Symbol("kg", positive=True) print("\n--- User input -----------------------") symbolic = True symbolic = False if symbolic: # quantity = symbol: alpha= var("alpha") g = var("g") h, xP = var("h, x_P") else: # variable = quantity: # quantity = factor times unit: # pie/12 = 30 deg # pie = 2 pi alpha = pie/12 g = 10 *m/s/s h = 1 *m xP = 3 *m print("\n--- a: -------------------------------") sa = sin(alpha) ca = cos(alpha) ta = tan(alpha) ss = sa*sa cc = ca*ca s2a = sin(2*alpha) [pprint(latex(x)) for x in [sa,ss,ca,cc,ta,s2a]] x = var("x") v0 = var("v0", positive=True) z1 = -g/2/v0/v0/cc *x*x + ta*x pprint(latex(z1)) print("\n--- b: -------------------------------") rhs = z1.subs(x, 3*m) eq = Eq(-h, rhs) sol = solve(eq,v0) vs1 = sol[0] pprint("\nv0^2:") pprint(latex(vs1*vs1)) pprint("\nv0:") pprint(Num(vs1, 3)) print("\n--- c: -------------------------------") half = S(1)/2 xM = half/g * vs1*vs1 * s2a zM = half/g * vs1*vs1 * ss pprint(Num(xM,3)) pprint(Num(zM,3)) print("\n--- d: -------------------------------") twobeta = atan(xP/h) pprint(Num(twobeta*180./pi,3)) beta = half*twobeta pprint(Num(beta*180./pi,3)) cb = cos(beta) tb = tan(beta) z2 = -g/2/v0/v0/cb/cb *x*x + tb*x rhs = z2.subs(x, 3*m) eq = Eq(-h, rhs) sol = solve(eq,v0) vs2 = sol[0] pprint("\nv:") pprint(Num(vs2, 3)) print("\n--- e: -------------------------------") pprint(Num(vs1,3)) pprint(Num(vs2,3)) # z in meters for alpha: z_in_m_1 = z1.subs({v0:vs1})/m z_in_m_2 = z2.subs({v0:vs2})/m # z in m with argument xi = x/m: xi = var("xi") z1 = z_in_m_1.subs(x,xi*m).simplify() z2 = z_in_m_2.subs(x,xi*m).simplify() xia = linspace(float(0), float(3)) def fill_array(f,x,xia): if f.is_constant(x): res = full_like(xia,f) else: res = lambdify(x,f,"numpy") res = array(res(xia)) return res [z1a, z2a] = [fill_array(z,xi,xia) for z in [z1,z2]] tmp = plt.axis('equal') tmp = plt.grid() tmp = plt.plot(xia,z1a, "b-", label=r"$\alpha$") tmp = plt.plot(xia,z2a, "r--", label=r"$\beta$") tmp = plt.xlabel(r"$x / \mathrm{m}$") tmp = plt.ylabel(r"$z \,/\, \mathrm{m}$") tmp = plt.legend() # plt.savefig("3.1.K_1.png", transp=True) plt.show()
--- User input ----------------------- --- a: ------------------------------- \frac{1}{2} \frac{1}{4} \frac{\sqrt{3}}{2} \frac{3}{4} \frac{\sqrt{3}}{3} \frac{\sqrt{3}}{2} [None, None, None, None, None, None] - \frac{20 m x^{2}}{3 s^{2} v_{0}^{2}} + \frac{\sqrt{3} x}{3} --- b: ------------------------------- v0^2: \frac{60 m^{2}}{s^{2} \left(1 + \sqrt{3}\right)} v0: 4.69*m ------ s --- c: ------------------------------- 0.951*m 0.275*m --- d: ------------------------------- 71.6 35.8 v: 4.65*m ------ s --- e: ------------------------------- 4.69*m ------ s 4.65*m ------ s
--- User input ----------------------- --- a: ------------------------------- \frac{1}{2} \frac{1}{4} \frac{\sqrt{3}}{2} \frac{3}{4} \frac{\sqrt{3}}{3} \frac{\sqrt{3}}{2} [None, None, None, None, None, None] - \frac{20 m x^{2}}{3 s^{2} v_{0}^{2}} + \frac{\sqrt{3} x}{3} --- b: ------------------------------- v0^2: \frac{60 m^{2}}{s^{2} \left(1 + \sqrt{3}\right)} v0: 4.69*m ------ s --- c: ------------------------------- 0.951*m 0.275*m --- d: ------------------------------- 71.6 35.8 v: 4.65*m ------ s --- e: ------------------------------- 4.69*m ------ s 4.65*m ------ s