aW1wb3J0IHN5bXB5IGFzIHNwCgojIERlZmluZSBzeW1ib2xzIGZvciB2YXJpYWJsZXMKdSwgdiwgYSwgdCwgcyA9IHNwLnN5bWJvbHMoJ3UgdiBhIHQgcycpCgojIERlZmluZSB0aGUga2luZW1hdGljIGVxdWF0aW9ucwplcTEgPSBzcC5FcSh2LCB1ICsgYSAqIHQpICAjIEVxdWF0aW9uIDE6IHYgPSB1ICsgYXQKZXEyID0gc3AuRXEocywgdSAqIHQgKyAwLjUgKiBhICogdCoqMikgICMgRXF1YXRpb24gMjogcyA9IHV0ICsgMS8yICogYSAqIHReMgplcTMgPSBzcC5FcSh2KioyLCB1KioyICsgMiAqIGEgKiBzKSAgIyBFcXVhdGlvbiAzOiB2XjIgPSB1XjIgKyAyYXMKCmRlZiBzb2x2ZV9raW5lbWF0aWNfZXF1YXRpb24ocHJvYmxlbSwga25vd25fdmFsdWVzKToKICAgICZxdW90OyZxdW90OyZxdW90OwogICAgU29sdmVzIHRoZSBraW5lbWF0aWMgZXF1YXRpb24gYmFzZWQgb24gZ2l2ZW4gcHJvYmxlbSBhbmQga25vd24gdmFsdWVzLgogICAgCiAgICBBcmdzOgogICAgcHJvYmxlbTogVGhlIHByb2JsZW0gdHlwZSB0byBzb2x2ZSAoMSwgMiwgb3IgMyBmb3IgZGlmZmVyZW50IGVxdWF0aW9ucykuCiAgICBrbm93bl92YWx1ZXM6IEEgZGljdGlvbmFyeSBvZiBrbm93biB2YWx1ZXMgKGUuZy4sIHsndSc6IDAsICdhJzogOS44LCAndCc6IDV9KQogICAgCiAgICBSZXR1cm5zOgogICAgc29sdXRpb246IFRoZSB2YWx1ZSBvZiB0aGUgdW5rbm93biB2YXJpYWJsZQogICAgJnF1b3Q7JnF1b3Q7JnF1b3Q7CiAgICAjIFN1YnN0aXR1dGUga25vd24gdmFsdWVzIGludG8gdGhlIGVxdWF0aW9uCiAgICBmb3IgdmFyLCB2YWwgaW4ga25vd25fdmFsdWVzLml0ZW1zKCk6CiAgICAgICAgZXExID0gZXExLnN1YnModmFyLCB2YWwpCiAgICAgICAgZXEyID0gZXEyLnN1YnModmFyLCB2YWwpCiAgICAgICAgZXEzID0gZXEzLnN1YnModmFyLCB2YWwpCgogICAgaWYgcHJvYmxlbSA9PSAxOgogICAgICAgICMgU29sdmUgZm9yICd2JyAoZmluYWwgdmVsb2NpdHkpIHVzaW5nIGVxMQogICAgICAgIHNvbHV0aW9uID0gc3Auc29sdmUoZXExLCB2KQogICAgZWxpZiBwcm9ibGVtID09IDI6CiAgICAgICAgIyBTb2x2ZSBmb3IgJ3MnIChkaXNwbGFjZW1lbnQpIHVzaW5nIGVxMgogICAgICAgIHNvbHV0aW9uID0gc3Auc29sdmUoZXEyLCBzKQogICAgZWxpZiBwcm9ibGVtID09IDM6CiAgICAgICAgIyBTb2x2ZSBmb3IgJ3YnIChmaW5hbCB2ZWxvY2l0eSkgdXNpbmcgZXEzCiAgICAgICAgc29sdXRpb24gPSBzcC5zb2x2ZShlcTMsIHYpCiAgICBlbHNlOgogICAgICAgIHJldHVybiAmcXVvdDtJbnZhbGlkIHByb2JsZW0gdHlwZSZxdW90OwogICAgCiAgICByZXR1cm4gc29sdXRpb24KCiMgRXhhbXBsZSB1c2FnZQprbm93bl92YWx1ZXMgPSB7J3UnOiAwLCAnYSc6IDkuOCwgJ3QnOiA1fSAgIyBJbml0aWFsIHZlbG9jaXR5LCBhY2NlbGVyYXRpb24sIGFuZCB0aW1lCnByb2JsZW0gPSAxICAjIFdlIHdhbnQgdG8gc29sdmUgZm9yIGZpbmFsIHZlbG9jaXR5ICh2KQpzb2x1dGlvbiA9IHNvbHZlX2tpbmVtYXRpY19lcXVhdGlvbihwcm9ibGVtLCBrbm93bl92YWx1ZXMpCnByaW50KCZxdW90O1NvbHV0aW9uOiZxdW90Oywgc29sdXRpb24p
import sympy as sp
# Define symbols for variables
u, v, a, t, s = sp.symbols('u v a t s')
# Define the kinematic equations
eq1 = sp.Eq(v, u + a * t) # Equation 1: v = u + at
eq2 = sp.Eq(s, u * t + 0.5 * a * t**2) # Equation 2: s = ut + 1/2 * a * t^2
eq3 = sp.Eq(v**2, u**2 + 2 * a * s) # Equation 3: v^2 = u^2 + 2as
def solve_kinematic_equation(problem, known_values):
"""
Solves the kinematic equation based on given problem and known values.
Args:
problem: The problem type to solve (1, 2, or 3 for different equations).
known_values: A dictionary of known values (e.g., {'u': 0, 'a': 9.8, 't': 5})
Returns:
solution: The value of the unknown variable
"""
# Substitute known values into the equation
for var, val in known_values.items():
eq1 = eq1.subs(var, val)
eq2 = eq2.subs(var, val)
eq3 = eq3.subs(var, val)
if problem == 1:
# Solve for 'v' (final velocity) using eq1
solution = sp.solve(eq1, v)
elif problem == 2:
# Solve for 's' (displacement) using eq2
solution = sp.solve(eq2, s)
elif problem == 3:
# Solve for 'v' (final velocity) using eq3
solution = sp.solve(eq3, v)
else:
return "Invalid problem type"
return solution
# Example usage
known_values = {'u': 0, 'a': 9.8, 't': 5} # Initial velocity, acceleration, and time
problem = 1 # We want to solve for final velocity (v)
solution = solve_kinematic_equation(problem, known_values)
print("Solution:", solution)