本节摘要:约束是限制物体运动的周围环境,约束反力是约束在行使限制时施加的力——受力分析里全部未知力几乎都从这里来。本节给出光滑面、柔索、光滑铰链、滚动支座、固定端五类典型约束的标准画像:各挡什么方向的运动、反力画几根、指向如何定,并用斜面与简支梁两台数值解剖示范"标全标对"的操作。
3.1 节把已知的力理成了线头,本节对付未知的力。规则先立好:隔离体上每一根反力都要回答三个问题——谁施加的(出处)、沿什么方向(方向)、几个分量(个数)。三问对不上号的反力就是捏造。它向上承接第一章"每根力都有出处"的铁律,向下直接喂给 3.3 节的方程:反力个数标错,方程组的未知数立刻对不上账,后面全部计算在错误的账本上进行。
约束的逻辑值得先想透:约束反力的方向由"它挡什么"反推。挡哪个方向的运动,就在哪个方向给反力;不挡的方向,反力为零。柔索只能拉不能推,所以反力沿索指向索的收缩侧;光滑面只能法向顶、不能切向拦(拦的活儿交给摩擦),所以反力垂直于接触面;固定端连转都挡,所以在三个分量之外再加一个约束力偶。方向不是猜的,是约束的职能说明书。

记忆的抓手是"自由度账":平面里一个自由物体有三个自由度(两个移动加一个转动)。滚动支座挡一个方向,反力一根;铰链挡两个方向,反力两根;固定端全挡,反力三样(两根力加一个矩)。反力个数与被挡自由度个数严格相等——这条对账规则在 3.3 节判静定时还要再用一次。
十公斤的滑块放在三十度斜面上,静摩擦系数零点四,问它停不停。这台小手术把"标力—投影—对账"走全:滑块受重力、法向反力、摩擦力三根力;沿斜面、垂直斜面投影;摩擦的支付上限等于摩擦系数乘法向反力,而重力沿斜面的分量是进攻方——两边一比,结论自己跳出来。
# 斜面滑块:停不停,让数字裁决 import math m, ang, g = 10.0, 30.0, 9.8 mu = 0.4 th = math.radians(ang) N = m * g * math.cos(th) # 法向反力:垂直斜面方向平衡 Fdown = m * g * math.sin(th) # 重力沿斜面分量:进攻方 Fmax = mu * N # 静摩擦支付上限 print("法向反力 N =", N, "N") # 84.86803317640277 print("下滑力 =", Fdown, "N") # 49.00000000000001 print("摩擦上限 =", Fmax, "N") # 33.94721327056111 print("滑块会滑动吗:", Fdown > Fmax) # True # 反问一句:斜面至少要多粗糙才能困住它?极限是 tan(角度) print("自锁所需最小 mu =", math.tan(th)) # 0.5773502691896254
顺带拿到一个重要副产品:滑块在斜面上自锁的条件是摩擦系数不小于坡度角的正切——本例零点五八起步。第六章摩擦一节会把这条规律升级成摩擦角语言。
四米简支梁,距 A 端一米处压一个八百牛的集中载荷,求两端支反力。A 端是固定铰(两根反力),B 端是滚动支座(一根竖直反力),共三个未知量,恰好吃掉平面任意力系的全部三条平衡方程——这台手术还是 3.3 节"静定判别"的活标本。此处先出数值,矩心取 A 端,让 A 的两根反力从矩方程里自动消失。
# 简支梁支反力:载荷位置对调,反力怎么变 L, F = 4.0, 800.0 for a in [1.0, 2.0, 3.0]: RB = F * a / L # 绕 A 取矩:F*a - RB*L = 0 RA = F - RB # 竖直方向平衡 print(f"a={a} m: RA={RA:.0f} N, RB={RB:.0f} N") # 输出: # a=1.0 m: RA=600 N, RB=200 N # a=2.0 m: RA=400 N, RB=400 N # a=3.0 m: RA=200 N, RB=600 N # 载荷离哪端近,哪端就多扛——反力按距离权重线性分配
⚠️ 常见坑:铰链反力按"合力斜着指"画一根方向未知的力。方向未知的力代数上就是两个正交分量,直接画水平、竖直两根分量参与投影,硬猜合力方向等于给自己加戏。
第三台手术补上柔索约束的解剖样本:两千牛的重物经一个定滑轮、一个动滑轮组吊住,绳端由人拉住。定滑轮只改方向不改大小,动滑轮把绳张力对折一次——重物由两段绳分担,每段一千牛,拉绳的手也只出一千牛。约束画像按"只拉不推、沿绳指向收缩侧"逐根落实,滑轮轴的反力则由滑轮上各段绳张力的矢量和反推。
# 滑轮组反力:动滑轮两段绳分担,滑轮轴反力由张力合成 import math W = 2000.0 T = W / 2 # 动滑轮两段绳竖直吊住重物 print("绳张力 =", T, "N") # 1000.0 print("滑轮轴反力 =", 2 * T, "N") # 2000.0(两段绳向下拉轴,轴反力托住) # 若两段绳不平行(各偏 30 度),轴反力按矢量合成 th = math.radians(30.0) Rx = 2 * T * math.sin(th) # 水平分量互相抵消的核对项 Ry = 2 * T * math.cos(th) print("各偏 30 度时轴反力 =", round(Ry, 1), "N,水平残差 =", round(Rx - Rx, 1), "N") # 各偏 30 度时轴反力 = 1732.1 N,水平残差 = 0.0 N
平行时轴扛两千牛,两绳张开三十度后降到一千七百三——夹角越大,每根绳的竖直贡献越小,轴与绳反而更省力,但绳的水平分量开始互相对顶。滑轮组的"省力不省功"在这一节只是约束画像的推论,第五章虚功原理会给它一个更彻底的记账方式。
五类约束认全之后,值得做一遍反向练习:拿一台自行车或一栋框架结构,逐个接触点问"它挡什么"。车座立管与车架的连接近乎固定端(反力三样),前叉与车把的连接近于铰链(反力两根),地面给轮胎的只有法向支持与摩擦(至多两根)。约束画像画对了,整车在起步、刹车、过弯三种工况下的受力草图就都有了骨架,第三章的方程随后逐项入账。这个练习花不了几分钟,却是把约束分类从"背表格"变成"看实物"的分水岭。
要点复盘:
约束画像认全了,下一节把方程立起来:三组平衡方程怎么选用法、静定与超静定怎么判、虚位移原理如何绕开反力直接拿平衡条件。