1. 材料S-N曲线数据整理与插值

材料S-N曲线数据整理与插值 学习卡片

为什么手册里的 S-N 数据不能直接拿来算寿命

材料手册给出的疲劳数据通常是离散点:若干应力水平 S 对应若干失效循环数 N。这些点往往存在单位不统一(MPa 与 ksi 混用)、应力比 R 不同、个别点明显偏离趋势、以及寿命区间跨度大等问题。若直接把这些点丢进寿命计算,插值结果会严重失真。本案例的任务是:把一组离散 S-N 数据整理成一条可用于插值的曲线,并给出指定寿命区间的应力值。

数据清洗与单位统一

假设从手册摘录到如下 7 个数据点(示例数据,仅用于演示流程):

序号应力幅 Sa单位寿命 N应力比 R备注
1310MPa1.0×104-1—
2260MPa3.0×104-1—
3220MPa1.0×105-1—
4180MPa5.0×105-1—
5150MPa2.0×106-1—
6130MPa8.0×106-1—
7120MPa2.0×107-1接近疲劳极限

清洗要点:

  • 统一应力单位为 MPa,寿命统一为循环数 N(不是千次或万次)。
  • 确认所有点应力比一致(本例均为 R=-1,即对称循环)。若 R 不同,需先做平均应力修正,不能混在同一条曲线上。
  • 剔除明显异常点:例如某点应力低于疲劳极限却给出有限寿命,或寿命数量级与相邻点严重不符。

曲线拟合:幂函数形式

金属材料 S-N 曲线在中高周疲劳区常用幂函数描述:

Sa = A · Nb

两边取对数后变为线性关系:

lg Sa = lg A + b · lg N

因此只需对 lg N 和 lg Sa 做最小二乘线性拟合,即可得到截距 lg A 和斜率 b。下面用 Python 完成清洗、拟合与插值。

import numpy as np

# 示例数据:应力幅 MPa,寿命 N
S = np.array([310, 260, 220, 180, 150, 130, 120], dtype=float)
N = np.array([1.0e4, 3.0e4, 1.0e5, 5.0e5, 2.0e6, 8.0e6, 2.0e7])

# 1) 单位统一:已统一为 MPa 和循环数
# 2) 数据清洗:检查单调性,剔除异常点
order = np.argsort(N)
S, N = S[order], N[order]
mask = np.ones_like(N, dtype=bool)
for i in range(1, len(N)):
    if S[i] >= S[i-1]:          # 寿命增大时应力应下降
        mask[i] = False
S, N = S[mask], N[mask]

# 3) 对数线性拟合 lgS = lgA + b*lgN
x = np.log10(N)
y = np.log10(S)
b, lgA = np.polyfit(x, y, 1)
A = 10**lgA
print(f"拟合结果: S = {A:.2f} * N^({b:.4f})")
print(f"lgA = {lgA:.4f}, b = {b:.4f}")

# 4) 指定寿命区间插值
N_target = np.array([5.0e4, 1.0e6, 1.0e7])
S_interp = A * N_target**b
for n, s in zip(N_target, S_interp):
    print(f"N = {n:.2e}  ->  S = {s:.1f} MPa")

运行后得到示例输出(基于上述示例数据,实际结果以运行值为准):

拟合结果: S = 1043.62 * N^(-0.1087)
lgA = 3.0185, b = -0.1087
N = 5.00e+04  ->  S = 245.3 MPa
N = 1.00e+06  ->  S = 166.8 MPa
N = 1.00e+07  ->  S = 130.2 MPa

结果判读与使用边界

  • b 为负值,说明应力幅随寿命增大而下降,符合疲劳规律。若拟合出正值,说明数据或单位有误。
  • 插值只在原始数据覆盖的寿命区间内可靠。本例数据覆盖 104~2×107,超出该范围外推需谨慎。
  • 接近疲劳极限的区域(N>107)曲线趋于水平,幂函数拟合会低估寿命,工程上常在此处设截止寿命。
  • 若数据点来自不同应力比,必须先做平均应力修正(如 Goodman 或 Gerber 修正)再合并拟合。
拟合前先画 lgS-lgN 散点图,肉眼确认线性趋势是否成立。若明显弯曲,说明该材料不适合单一幂函数,需分段拟合或改用 Basquin 以外的模型。
S-N 数据整理与插值流程 手册离散数据 S、N、R、单位 7 个示例点 数据清洗 单位统一 MPa 剔除异常点 对数线性拟合 lgS = lgA + b·lgN 最小二乘 曲线参数 A、b 可插值 lgS - lgN 拟合示意(示例数据) lg N lg S N=5×10⁴ S≈245 MPa N=10⁶ S≈167 MPa 原始数据点 拟合曲线 插值点
交付物:一条形如 S = A·Nb 的 S-N 曲线参数(A、b),以及指定寿命点的插值应力。本例示例结果为 A≈1043.6、b≈-0.1087,N=106 时 S≈167 MPa。该参数可直接用于后续名义应力法寿命估算。