import numpy as np

L1, L2 = 6.0, 6.0
q1, q2 = 20.0, 20.0
EI = 1.0  # oransal cozum yeterli

def beam_stiffness(L, EI):
    return EI/L**3 * np.array([
        [12,    6*L,  -12,   6*L],
        [6*L,  4*L**2, -6*L, 2*L**2],
        [-12,  -6*L,   12,  -6*L],
        [6*L,  2*L**2, -6*L, 4*L**2]
    ])

def fixed_end_forces(q, L):
    return np.array([q*L/2, q*L**2/12, q*L/2, -q*L**2/12])

# Global sistem: 3 dugum x 2 DOF (v, theta) = 6 serbestlik derecesi
K = np.zeros((6, 6)); F = np.zeros(6)

k1 = beam_stiffness(L1, EI); dof1 = [0, 1, 2, 3]
for i in range(4):
    for j in range(4):
        K[dof1[i], dof1[j]] += k1[i, j]

k2 = beam_stiffness(L2, EI); dof2 = [2, 3, 4, 5]
for i in range(4):
    for j in range(4):
        K[dof2[i], dof2[j]] += k2[i, j]

fef1 = fixed_end_forces(q1, L1)
fef2 = fixed_end_forces(q2, L2)
for i in range(4):
    F[dof1[i]] -= fef1[i]
    F[dof2[i]] -= fef2[i]

# Sinir sartlari: v1=v2=v3=0 (3 dusey mesnet), donmeler serbest
free = [1, 3, 5]
d_free = np.linalg.solve(K[np.ix_(free, free)], F[free])

d = np.zeros(6)
for i, idx in enumerate(free):
    d[idx] = d_free[i]

R = K.dot(d) - F
print(f"RA = {R[0]:.1f} kN, RB = {R[2]:.1f} kN, RC = {R[4]:.1f} kN")
print(f"Toplam = {R[0]+R[2]+R[4]:.1f} kN")
