You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

阻力极曲线拟合异常:CD值过大且曲线与结果不匹配求助

阻力极曲线拟合问题修复方案

问题根源

  • 拟合参数顺序完全搞反:你的阻力极公式是CD = k*CL² + CD₀,也就是CL是自变量,CD是要拟合的因变量。但调用curve_fit时,你把CD当成x、CL当成y传进去了,这直接让拟合逻辑彻底错误,调初始值p0当然没用。
  • CD数据存在异常负值:阻力系数不可能为负,这些异常点会严重干扰拟合结果,得先排查数据来源(比如风洞测试误差、数据预处理bug)。

修正后的完整代码

import numpy as np
from scipy.optimize import curve_fit

# 原始数据
CL = np.array([-0.2863876, -0.15198764, -0.00709039, 0.1414652, 0.28727075, 0.43092027,
               0.57339435, 0.71901446, 0.95383017, 1.00155515, 1.04740696, 0.93310272])
CD = np.array([-0.02768897, -0.03168675, -0.03116817, -0.02166403, -0.00677296, 0.01566423,
               0.04477065, 0.08153319, 0.16150749, 0.19508941, 0.21802003, 0.12811101])

def test_func(CL, k, CD_0):
    return k*(CL**2) + CD_0  # 阻力极公式

# 修正x和y的顺序:传入CL作为自变量,CD作为目标值
popt, pcov = curve_fit(test_func, CL, CD, p0=[0.05, 0.01])

k_opt, CD_0_opt = popt 

# 生成拟合曲线数据
CL_model = np.linspace(min(CL), max(CL), 100)
CD_model = test_func(CL_model, k_opt, CD_0_opt)

# 输出拟合结果
print(f"最优诱导阻力因子k:{k_opt:.4f}")
print(f"零升阻力系数CD₀:{CD_0_opt:.4f}")

额外优化建议

  1. 清理异常数据:先把CD为负的点剔除或标记,再重新拟合,结果会更符合实际物理规律。
  2. 合理设置初始值:k的合理范围一般在0.02-0.1之间(依翼型而定),CD₀在0.01-0.05之间,用这个范围的初始值能让拟合收敛更快更准确。

内容的提问来源于stack exchange,提问作者Alisha Basuki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 15:23:11