Ana Sayfa / MATLAB / Python / Problem 3

Statik Belirli Kafes — Düğüm Noktası Yöntemi

A(0,0), B(4,0), C(2,3) — P=100 kN, C'de düşey. Beklenen: FAC=FBC=−60.09 kN, FAB=+33.33 kN (F5 Problem 3'ten).

PYTHON truss_joints.py

import numpy as np

A = np.array([0.0, 0.0])
B = np.array([4.0, 0.0])
C = np.array([2.0, 3.0])
P = 100.0  # kN, C'de dusey asagi yuk

# Reaksiyonlar (moment dengesi, A etrafinda)
R_By = P * 2 / 4
R_Ay = P - R_By

def unit_vector(p_from, p_to):
    v = p_to - p_from
    return v / np.linalg.norm(v)

# C dugumu dengesi: F_AC*uCA + F_BC*uCB + (0,-P) = 0
uCA = unit_vector(C, A)
uCB = unit_vector(C, B)
A_mat = np.column_stack([uCA, uCB])
b_vec = np.array([0, P])
F_AC, F_BC = np.linalg.solve(A_mat, b_vec)

# A dugumu dengesi (F_AB icin)
uAC = unit_vector(A, C)
uAB = unit_vector(A, B)
F_AB = -(F_AC * uAC[0]) / uAB[0]

print(f"RAy = {R_Ay} kN, RBy = {R_By} kN")
print(f"F_AC = {F_AC:.2f} kN, F_BC = {F_BC:.2f} kN (negatif=basinc)")
print(f"F_AB = {F_AB:.2f} kN (pozitif=cekme)")

# BAGIMSIZ DOGRULAMA: B dugumu dengesi (bu denklem cozumde KULLANILMADI)
uBC = unit_vector(B, C)
uBA = unit_vector(B, A)
checkX = F_BC*uBC[0] + F_AB*uBA[0]
checkY = F_BC*uBC[1] + F_AB*uBA[1] + R_By
print(f"B dugumu kontrolu: Fx={checkX:.6f}, Fy={checkY:.6f} (ikisi de 0 olmali)")
RAy = 50.0 kN, RBy = 50.0 kN F_AC = -60.09 kN, F_BC = -60.09 kN (negatif=basinc) F_AB = 33.33 kN (pozitif=cekme) B dugumu kontrolu: Fx=0.000000, Fy=0.000000 (ikisi de 0 olmali)
✓ Bu platform tarafından gerçekten çalıştırıldı — çıktı F5 ile birebir eşleşti

MATLAB truss_joints.m

A = [0.0, 0.0];
B = [4.0, 0.0];
C = [2.0, 3.0];
P = 100.0;  % kN, C'de dusey asagi yuk

R_By = P * 2 / 4;
R_Ay = P - R_By;

uCA = (A - C) / norm(A - C);
uCB = (B - C) / norm(B - C);
A_mat = [uCA', uCB'];
b_vec = [0; P];
F = A_mat \ b_vec;
F_AC = F(1); F_BC = F(2);

uAC = (C - A) / norm(C - A);
uAB = (B - A) / norm(B - A);
F_AB = -(F_AC * uAC(1)) / uAB(1);

fprintf('RAy = %.1f kN, RBy = %.1f kN\n', R_Ay, R_By);
fprintf('F_AC = %.2f kN, F_BC = %.2f kN\n', F_AC, F_BC);
fprintf('F_AB = %.2f kN\n', F_AB);

% Bagimsiz dogrulama: B dugumu dengesi
uBC = (C - B) / norm(C - B);
uBA = (A - B) / norm(A - B);
checkX = F_BC*uBC(1) + F_AB*uBA(1);
checkY = F_BC*uBC(2) + F_AB*uBA(2) + R_By;
fprintf('B dugumu kontrolu: Fx=%.6f, Fy=%.6f\n', checkX, checkY);
RAy = 50.0 kN, RBy = 50.0 kN F_AC = -60.09 kN, F_BC = -60.09 kN F_AB = 33.33 kN B dugumu kontrolu: Fx=0.000000, Fy=0.000000

⚠ Bu kod gerçek bir MATLAB'da çalıştırılmadı — Python'daki aynı vektör mantığıyla dikkatle yazıldı (MATLAB'da vektörler satır/sütun ayrımına dikkat gerektirir). Kendi MATLAB'ınızda çalıştırıp doğrulayın.

← Problem 2 MATLAB / Python Ana Sayfa →