# Exercise 2: support reactions for several point loads # A beam of span 12 m sits on supports A (x = 0) and B (x = 12). # Loads: 30 kN at 4 m, 50 kN at 9 m. def reactions(span, loads): """loads is a list of (force_kN, distance_from_A_m). Returns (RA, RB).""" total = sum(f for f, x in loads) moment_about_a = sum(f * x for f, x in loads) rb = moment_about_a / span ra = total - rb return ra, rb loads = [(30, 4), (50, 9)] ra, rb = reactions(12, loads) print(f"RA = {ra:.1f} kN, RB = {rb:.1f} kN") print("sum of reactions:", ra + rb, "sum of loads:", sum(f for f, x in loads)) # Check by taking moments about B instead: moment_about_b = sum(f * (12 - x) for f, x in loads) print("RA by moments about B:", moment_about_b / 12) # Output (as run): # RA = 32.5 kN, RB = 47.5 kN # sum of reactions: 80.0 sum of loads: 80 # RA by moments about B: 32.5 # # Why: B is closer to the heavier load (at 9 m), so B carries more.