**自由体图(FBD)**是把研究对象从周围物体中"隔离"出来,把周围对它的全部作用力画在简图上的图形,是静力学的第一工具。本节解决三件事:力与力矩怎么表示、常见约束对应什么反力、自由体图的绘制规范与常见错误。
上一节的铺垫(本章支柱页)已经交代了静力学的定位:收集证据。这一节就是取证手册本身;下一节才拿这些证据列方程结案。位置上,它是全册所有受力分析的起点,第 4、5 章的应力与内力计算都以这里的自由体图为输入。
某厂房吊车梁更换支座时,维修队把固定铰支座换成了滚动支座的构造(虽外形相近),投用后梁端水平推力无处传递,轨道偏磨、螺栓剪断。问题不出在强度计算,而出在约束模型:约束决定未知力的个数和方向,画错约束,后面全错。静力学的错误大多不是数学错误,而是建模错误。
力对物体的作用效应有两类:使物体移动(力,沿作用线的矢量)和使物体转动(力矩,力乘以到转动中心的力臂)。大小相等方向相反的两个力若不共线,合力为零但合力矩不为零,这叫力偶——它只转不移。记住这个组合关系,后面判断约束反力时不会糊涂。
约束是限制物体运动的周围物体,力学上用"约束反力"代替它:物体在哪个方向不能动,反力就可能有哪个分量。
| 约束类型 | 限制的自由度 | 反力未知数 |
|---|---|---|
| 柔索、连杆 | 沿索/杆方向拉住 | 1(沿轴线) |
| 滚动支座 | 只挡竖直方向 | 1 |
| 固定铰支座 | 挡住平面内平动 | 2(水平+竖直) |
| 固定端(插入端) | 平动+转动全挡 | 3(两力+一力偶) |

画自由体图的完整过程分四步:选定隔离体并画出其轮廓;画出全部主动力(载荷、自重);在解除约束处按上表补画约束反力,方向未知的可以先假设,解出负值说明实际方向相反;最后检查"每个力都能说出施力者"。最后一步最值钱——说不出施力者的力(比如凭空加的"惯性力"或漏算的绳张力)是新手错误的高发区。
⚠️ 常见坑:把二力杆当成一般受力构件处理。两端铰接、中间无载荷的直杆,反力必沿杆轴线,未知数从 4 个降到 2 个。桁架里几乎全是这种杆,认不出它,节点法会多算一倍工作量。
用代码验证约束模型的灵敏度:把固定铰支座当滚动支座,看反力差多少。
import numpy as np # 简支梁:跨长 6 m,均布载荷 q = 10 kN/m,跨中集中力 P = 20 kN L, q, P = 6.0, 10.0, 20.0 # 正确模型:一端固定铰(水平 Rx、竖向 Ry),一端滚动(竖向 Dy) # 全梁平衡:水平方向无载,Rx = 0;对 A 取矩求 Dy RyA = (q * L * L / 2 + P * L / 2) / L # 对 B 取矩的结果 Dy = q * L + P - RyA print(f"正确模型:A 竖向 {RyA:.2f} kN,B 竖向 {Dy:.2f} kN") # 错误模型:两端都当滚动支座,水平若有 5 kN 的斜坡水平分力 H H = 5.0 print("错误模型:水平力无处平衡,方程无解——两端滚动的梁承不住任何水平载荷") # 数值演示:试图解 1 个方程 0 个未知水平反力 # 平衡方程 a*x = b 中 a=0, b=5,最小二乘也救不了 a, b = np.array([[0.0]]), np.array([H]) x, res, rank, _ = np.linalg.lstsq(a, b, rcond=None) print(f"最小二乘残差 = {res[0]:.2f}(非零,即矛盾方程)")
输出显示:正确模型下 A、B 反力各 40 kN;错误模型下水平平衡方程退化成矛盾方程,任何求解器都无解。这正是那根吊车梁螺栓被剪断的数学画像。
再做一个小练习,把"力的可传性"用数值实验演示——力沿作用线滑移不改变刚体的平衡:
import numpy as np # 刚杆 AB 长 4 m,A 端铰接。力 F = 100 N,与杆成 30 度,作用于距 A 点 s 处 F, phi, L = 100.0, np.radians(30), 4.0 for s in [1.0, 2.0, 3.0]: # 对 A 点的力矩 = F * sin(phi) * s(作用点滑移改变力臂? 不改变——沿作用线滑移) # 力的作用线过 (s,0),方向 (cos,sin),作用线到 A 的距离恒为 s*sin(phi) d = s * np.sin(phi) M = F * d print(f"作用点 x={s:.0f} m 时,作用线到 A 的垂直距离 {d:.3f} m,力矩 {M:.1f} N·m")
三个作用点的力矩完全相同——力是滑动矢量,沿作用线移动不改变对刚体的效应。这个性质是后面"力线平移定理"的垫脚石,也是为什么自由体图上力画在作用线任意一点都行。
下一节拿这些自由体图列平衡方程,正式求解反力与桁架内力。
教科书里的约束是理想模型:滚动支座"绝对光滑"、固定端"绝对刚硬"。真实构造总有差距:滚动支座的销轴有摩擦,长期使用后可能锈死成事实上的铰支座;焊接节点介于铰接与刚接之间,按哪种模型算,内力分布差别显著。工程上的处理办法是"包络":对边界条件做几种合理假定各算一遍,取最不利结果设计。重要的不是记住每个构造对应哪个模型,而是养成习惯——每次建模前先问一句:这个约束我按什么算,错了会偏向安全还是危险。
配套一个自由体图自查的小演示:
import numpy as np # 自查器思路:统计隔离体上的力与力偶数量,对照约束类型 # 固定铰 A + 滚动 B 的简支梁,画了 3 个未知分量 + 2 个主动力 n_unknown = 3 # Ax, Ay, By print(f"未知反力分量 {n_unknown} 个,独立平衡方程 3 个 -> 静定") # 若误把 B 端画成固定铰:未知数变 4 个 print("若误加一个水平未知量:未知数 4 > 方程 3 -> 方程无解,回头查约束模型")
方程无解常常不是数学问题,而是图形里多画或少画了约束——让求解器替你发现建模错误,是数值工具的隐性福利。