コンテンツにスキップ

B問題メソッド化 — 計算パターンの体系的攻略

B問題の8つの計算パターンをPython風メソッドシグネチャで定義し、再現可能な解法を構築する


なぜメソッド化するのか

B問題は配点が大きく(各問10点×2小問)、合否を分ける最重要パート。 計算パターンを「メソッド(関数)」として定義し、入力→処理→出力を明確にすることで、 試験本番で迷わず解ける再現性を獲得する。


8つの計算パターン

Pattern 1: 需要率負荷率不等率

def demand_factor(max_demand: float, total_capacity: float) -> float:
    """需要率 = 最大需要電力 / 設備容量の合計"""
    return max_demand / total_capacity

def load_factor(avg_power: float, max_demand: float) -> float:
    """負荷率 = 平均電力 / 最大需要電力"""
    return avg_power / max_demand

def diversity_factor(sum_of_max: float, combined_max: float) -> float:
    """不等率 = 各負荷の最大需要電力の和 / 合成最大需要電力"""
    return sum_of_max / combined_max

因果関係: 設備容量 → 需要率で最大需要電力を推定 → 負荷率で平均電力を推定

入力 処理 出力
設備容量, 需要率 乗算 最大需要電力
最大需要電力, 負荷率 乗算 平均電力

Pattern 2: 電圧降下

def voltage_drop_single(r: float, x: float, I: float, cos_theta: float, sin_theta: float) -> float:
    """単相2線式の電圧降下"""
    return 2 * I * (r * cos_theta + x * sin_theta)

def voltage_drop_three(r: float, x: float, I: float, cos_theta: float, sin_theta: float) -> float:
    """三相3線式の電圧降下"""
    return sqrt(3) * I * (r * cos_theta + x * sin_theta)

因果関係: 線路定数(R,X) + 負荷電流(I) + 力率(cos) → 電圧降下


Pattern 3: 短絡電流

def short_circuit_current(V: float, Z_percent: float, capacity: float) -> float:
    """短絡電流の計算"""
    I_rated = capacity / (sqrt(3) * V)
    return I_rated * (100 / Z_percent)

因果関係: 変圧器容量 + %インピーダンス → 定格電流 → 短絡電流


Pattern 4: B種接地抵抗

def b_type_grounding(Ig: float, time_limit: float = 1.0) -> float:
    """B種接地抵抗値の計算"""
    if time_limit <= 1.0:
        return 150 / Ig
    elif time_limit <= 2.0:
        return 300 / Ig
    else:
        return 600 / Ig

因果関係: 1線地絡電流(Ig) + 遮断時間 → 必要接地抵抗値


Pattern 5: 電力損失

def power_loss(I: float, R: float, phase: str = "three") -> float:
    """電力損失の計算"""
    if phase == "single_2wire":
        return 2 * I**2 * R
    elif phase == "single_3wire":
        return 2 * I**2 * R  # 平衡時
    elif phase == "three":
        return 3 * I**2 * R

Pattern 6: 力率改善

def capacitor_for_pf(P: float, cos1: float, cos2: float) -> float:
    """力率改善に必要なコンデンサ容量"""
    sin1 = sqrt(1 - cos1**2)
    sin2 = sqrt(1 - cos2**2)
    tan1 = sin1 / cos1
    tan2 = sin2 / cos2
    return P * (tan1 - tan2)

因果関係: 有効電力(P) + 改善前力率 + 目標力率 → 必要コンデンサ容量[kvar]


Pattern 7: 変圧器の効率

def transformer_efficiency(P_out: float, P_iron: float, P_copper: float, load_ratio: float = 1.0) -> float:
    """変圧器の効率"""
    P_loss = P_iron + (load_ratio**2) * P_copper
    return P_out / (P_out + P_loss) * 100

Pattern 8: 支線の強度計算

def stay_wire_tension(wind_load: float, span: float, height: float, angle: float) -> float:
    """支線に加わる張力"""
    horizontal_force = wind_load * span
    return horizontal_force * height / (height * cos(radians(angle)))

因果関係モデル(全体マップ)

graph LR
    A[設備容量] -->|需要率| B[最大需要電力]
    B -->|負荷率| C[平均電力]
    B -->|電流換算| D[負荷電流]
    D -->|線路定数| E[電圧降下]
    D -->|R| F[電力損失]
    D -->|%Z| G[短絡電流]
    H[力率] -->|改善| I[コンデンサ容量]
    J[1線地絡電流] -->|遮断時間| K[B種接地抵抗]

演習チェックリスト

パターン 過去問演習数 目標 状態
需要率負荷率 0/3 3問 未着手
電圧降下 0/3 3問 未着手
短絡電流 0/3 3問 未着手
B種接地抵抗 0/3 3問 未着手
電力損失 0/3 3問 未着手
力率改善 0/3 3問 未着手
変圧器効率 0/2 2問 未着手
支線強度 0/2 2問 未着手

関連ページ