4. 推进功率与航速关系曲线拟合与偏差分析
任务对象与数据口径
本案例使用某船试航中采集的稳态段数据:车钟指令固定、航速与推进功率在30 s窗口内波动小于2%的时段才纳入拟合。每个测点记录对水航速 V(kn)与推进功率 P(kW),其中推进功率取推进变频器直流侧功率或推进电机输入功率(需全船统一口径,本例按推进电机输入有功功率)。
船舶推进功率与航速的工程关系通常用幂律描述:
P = k · V^n → ln P = ln k + n · ln V
其中 n 为功率-航速指数,新船试航清洁船体、平静水域下常落在 2.6~3.2 区间;n 越大表示功率对航速越敏感。对 ln P 与 ln V 做最小二乘线性回归,斜率即 n,截距即 ln k。拟合完成后,用残差衡量各测点相对曲线的偏差:
残差 r_i = ln P_i − (ln k + n · ln V_i)
偏差百分比 δ_i = (P_i / P_fit(V_i) − 1) × 100%
δ 为正表示该点功率高于拟合曲线(同等航速下更费力),为负表示低于曲线。工程上通常以 |δ| ≤ 5% 作为测点正常的初判阈值,超过则列为异常测点并回溯工况、海况、污底、测量通道等因素。
拟合与偏差计算过程
下表为教学示例数据(示例值,非实测),覆盖 8~16 kn 共 9 个稳态测点:
| 测点 | V (kn) | P (kW) | ln V | ln P | P_fit (kW) | δ (%) | 判定 |
|---|---|---|---|---|---|---|---|
| M1 | 8.0 | 1180 | 2.0794 | 7.0733 | 1152 | +2.4 | 正常 |
| M2 | 9.0 | 1620 | 2.1972 | 7.3902 | 1631 | −0.7 | 正常 |
| M3 | 10.0 | 2210 | 2.3026 | 7.7007 | 2228 | −0.8 | 正常 |
| M4 | 11.0 | 2980 | 2.3979 | 7.9997 | 2963 | +0.6 | 正常 |
| M5 | 12.0 | 3860 | 2.4849 | 8.2584 | 3862 | −0.1 | 正常 |
| M6 | 13.0 | 5120 | 2.5649 | 8.5410 | 4952 | +3.4 | 正常 |
| M7 | 14.0 | 6720 | 2.6391 | 8.8130 | 6260 | +7.3 | 异常 |
| M8 | 15.0 | 7480 | 2.7081 | 8.9202 | 7820 | −4.3 | 正常 |
| M9 | 16.0 | 9650 | 2.7726 | 9.1749 | 9660 | −0.1 | 正常 |
对 9 点做回归得 n ≈ 2.92、k ≈ 2.55(示例结果)。M7 点 δ = +7.3%,超出 5% 阈值,是唯一异常测点;其功率偏高而航速正常,典型原因包括该时段顶流/浅水效应、推进器附近异物、或功率通道量程切换引入的偏置。M8 点 δ = −4.3% 虽在阈值内但接近边界,应结合该点海况记录复核。
功率-航速拟合曲线与测点偏差判读
异常测点识别与效率评估
按上述流程,异常识别分三步:先看 |δ| 是否超阈值,再看残差符号与分布是否成段(成段偏高常指向海况或污底,孤立点偏高更可能是测量或记录问题),最后回到原始时序数据核对稳态段是否干净。本例 M7 为孤立正偏差,优先排查功率通道量程切换与顶流记录;若确认工况正常,则说明该航速段推进效率下降,需结合轴功率、扭矩与转速进一步定位。
效率水平评估用拟合指数 n 与设计值对比:若实测 n 明显大于设计 n(例如设计 2.8、实测 2.92),说明高航速段功率增长快于预期,常见于污底、螺旋桨轻微损伤或伴流不均;若 n 偏小则需检查航速测量(对水/对地)与功率口径是否一致。同时可计算各测点相对设计曲线的平均偏差,作为试航验收中推进性能的量化依据。
可复用计算脚本(Python)
import numpy as np
# 示例稳态测点:航速 kn,推进功率 kW
V = np.array([8, 9, 10, 11, 12, 13, 14, 15, 16], dtype=float)
P = np.array([1180, 1620, 2210, 2980, 3860, 5120, 6720, 7480, 9650], dtype=float)
# 幂律拟合 lnP = lnk + n*lnV
n, lnk = np.polyfit(np.log(V), np.log(P), 1)
k = np.exp(lnk)
P_fit = k * V ** n
delta = (P / P_fit - 1) * 100
print(f"n = {n:.3f}, k = {k:.3f}")
for v, p, pf, d in zip(V, P, P_fit, delta):
flag = "异常" if abs(d) > 5 else "正常"
print(f"V={v:4.1f} kn P={p:6.0f} kW P_fit={pf:6.0f} kW δ={d:+5.1f}% {flag}")
运行后应得到 n≈2.92、k≈2.55,M7 点 δ≈+7.3% 被判为异常,与上表一致。实际使用时把 V、P 替换为从试航数据中按稳态段提取的数组即可;若测点较多,可对 δ 做 3σ 检验辅助识别离群点。