m=8)。out = A / (1 + exp(-net/B)),A=30, B=10。COEF=0.0035,閾值 BCOEF=0.001。0.5 * 舊增量,權重衰減 0.9 * 舊權重。netout): 計算隱含層與輸出層加權和,減去閾值,經激活函數得輸出。calculdiffer): 單樣本均方誤差 0.5*(out - target)²。calculd): 輸出層誤差項 δ = (out-target) * f'(net);隱含層誤差項累加下層權重×誤差項,再乘激活函數導數。calculwc, calculbc): 權重增量 Δw = -η * δ * in + α * Δw_old;閾值增量 Δb = η_b * δ。changew, changb): w = 0.9*w + Δw,b = b + Δb。ERROR(0.002) 時重複反向傳播更新,直到滿足精度或達最大輪數。calculis): 所有樣本 MSE < ACCURACY(0.0005) 則停止訓練。std::vector/std::array 替代固定大小 C 數組,支持動態網絡結構。class BPNetwork,分離前向、反向、訓練、預測接口。std::mt19937),替代 randomize()。double 而非 float 保證數值穩定性。sample[41][4] 包含 40 個訓練樣本(索引 1-40),每樣本 3 輸入 + 1 目標輸出。測試時手動輸入 3 個特徵值獲取預測結果。