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.