简介:《弹性力学(徐芝纶)课后习题及答案》是面向工科力学课程学习者的配套练习资料,尤其适合正在修读弹性力学、需要系统巩固教材知识点与解题方法的高校本科生及备考人员。资源聚焦教材各章核心习题,提供对应的参考答案与解答过程,便于读者在独立完成练习后对照检验、梳理公式推导思路,并针对薄弱环节进行查漏补缺。
包体信息清晰简洁:全包共1个文件,为PDF格式,压缩包大小约7MB,可直接在电脑或移动设备上阅读,也方便反复查阅。该资料目前已有222人学习/下载,适合作为课后复习、期末备考或自学弹性力学时的辅助材料。
通过本份PDF,读者拿到的是完整的课后习题集及参考答案,既能帮助加深对基本概念、边界条件与求解方法的理解,也能在缺乏教师指导时获得必要的解题参照,提升独立分析问题的能力。
1. 为什么所有弹性力学课后题都卡在同一个地方
翻开徐芝纶《弹性力学》课后题,最直观的感受往往是:前几节还能靠套公式硬解,到弯曲和扭转就开始处处碰壁。这不是数学水平的问题,而是大多数人对弹性力学的解题方式存在根本误解——把它当成“算例练习”,却没有建立一个稳定的解题框架。实际上,课后题考察的无非是三类能力:一是读懂问题属于平面应力、平面应变还是空间问题,二是选对解法路径(位移法、应力法还是应力函数),三是把边界条件处理干净。这三个问题只要有一个含糊,题目就会卡死。本文不搜答案、不抄作业,而是给出一个可以长期复用的解题方法框架,配合数值验证手段和检查清单,帮你在没有标准答案的情况下判断“这道题我到底做对了没有”。
2. 用“三类题”拆穿徐芝纶教材的解题框架
2.1 按设问方式给题目分类:已知什么、求什么、用什么方法
处理整本教材的习题,建议你先把题目分门别类,每一类对应一种固定的解题动作。第一类是“已知应力求应变或位移”,这类题直接套广义胡克定律和几何方程,注意弹模、泊松比、剪应力分量是否耦合,平面应力与平面应变的换算最容易丢项。第二类是“已知边界条件求应力场”,典型如简支梁受均布载荷、三角形水坝、圆孔应力集中,这类题的核心是选择合适的应力函数或Airy应力函数,然后在边界上逐项满足边界条件。第三类是“已知位移约束求整体刚度”,这已经接近有限元思维,需要用到能量法或变分法,虚位移原理和最小势能原理往往是这种题的标准解法。
一旦你意识到课后题就这三类,就可以建立一个“决策表”,拿到题目先回答三个问题:问题的几何形状是矩形、圆还是任意形状?载荷方向是否在某一平面内?边界条件是给力、给位移还是混合?回答完这三个问题,基本就能锁定应该翻到教材的哪个章节找方法。
2.2 抓住徐芝纶教材的章节脉络:每一章都在教一种解题武器
徐芝纶教材的结构本身就是一条解题武器链。前几章讲应力、应变、胡克定律,这是所有后续推导的公理基础;然后进入平面问题的直角坐标解和极坐标解,分别对应两类最常见的几何场景;接着是扭转、薄板弯曲和空间问题;最后是能量原理和变分法,这部分为复杂形状问题提供了近似解的另外一条路。
每一章的课后题都针对该章引入的新武器,因此建议把章节名转换成“武器名”重新标记:比如“平面问题的直角坐标解答”对应的是多项式型Airy应力函数,“极坐标解答”对应的是曲梁、圆孔和楔形体,“扭转”对应的是薄膜比拟和Prantl应力函数,“薄板弯曲”对应的是Navier解和Lévy解。当你做题时发现思路堵塞,先问自己“我现在拿的是哪件武器”,通常就能找出问题所在。
2.3 最小可行解题框架:四步走,不走回头路
实际做题时,我建议按下面四步推进,避免在中间反复更改解法浪费大量时间:
- 第一步:画图并标注坐标、边界和受力方向,尤其是受载面与约束面的正应力、切应力方向不能标反,这是后续所有方程的基础。
- 第二步:判断类型并选择解法路径。平面应力/平面应变要区分清楚,孔口问题直接进入极坐标,扭转问题则统一采用应力函数表达。
- 第三步:代入控制方程求解待定常数,这个过程常常要解一组代数方程,如果方程的耦合项过多,通常说明上一步选的应力函数不够精简,值得回头检查。
- 第四步:用边界条件校核应力解,重点检查自由边界上的切应力是否为零、给定外力边界上的反力是否等于外载。
这四步可以避免大多数逻辑混乱。很多人做课后题失败,不是因为中间的计算难,而是因为第一步的边界方向标志错了,或者第二步平面应力与平面应变混淆,导致后面所有公式全部失效。
3. 用 Python 和解析解交叉验证数值解,彻底解决“不知道答案对不对”的痛点
3.1 为什么题目需要数值验证:手算结果可能错得很有逻辑
没有标准答案时,手算过程很容易“错得很自信”,特别是在边界条件满足程度与中间代数错误同时发生时,几乎无法依靠直觉判断最终结果。这时,数值解法是检验答案的一个好伙伴,用Python程序很快能为简单几何搭出一个弹性力学求解器,将数值解与你的解析结果比对。数值结果不是“标准答案”,但与解析解在关键点上的偏差能帮你定位是常量取错、边界条件理解错误,还是整体路径选错。常见做法是构造一个最简单的矩形板或者悬臂梁作为基准,把它当作测试平台,所有手算结果都先用它过一遍。
3.2 一个最小可用的平面应力数值求解脚本(悬臂梁)
下面给出一段简单的双线性有限元程序,用于求解端部受集中力的悬臂梁平面应力问题。代码只针对单一四边形单元网格,突出核心计算逻辑,方便学习有限元思路。
import numpy as np # 悬臂梁几何参数 L, H, t = 2.0, 1.0, 0.1 # 长度、高度、厚度 nx, ny = 20, 8 # x 方向与 y 方向网格数量 E, nu = 210e9, 0.3 # 钢的弹模与泊松比 F = -1000.0 # 端部向下的集中力,单位 N # 建立节点坐标 n_nodes = (nx + 1) * (ny + 1) x = np.linspace(0, L, nx + 1) y = np.linspace(-H/2, H/2, ny + 1) coords = [[xi, yi] for yi in y for xi in x] # 单元连接关系:从下到上、从左到右排列 elements = [] for j in range(ny): for i in range(nx): n0 = j * (nx + 1) + i elements.append([n0, n0 + 1, n0 + 1 + (nx + 1), n0 + (nx + 1)]) # 组装刚度矩阵(仅常应变三角简化,此处用四边形分块逻辑示意) K = np.zeros((2 * n_nodes, 2 * n_nodes)) def assemble_element(node_ids): # 该函数负责把单元的刚度矩阵叠加到全局刚度矩阵中 # 使用双线性形函数,高斯积分采用 2x2 点 ke = np.zeros((8, 8)) # 高斯点与权重 gpts = [-1/np.sqrt(3), 1/np.sqrt(3)] gwts = [1.0, 1.0] for gp_y in gpts: for gp_x in gpts: dNdxi = np.array([ # 在自然坐标下对形函数求导 [-(1 - gp_y)/4, -(1 + gp_y)/4, (1 + gp_y)/4, (1 - gp_y)/4], [-(1 - gp_x)/4, (1 - gp_x)/4, (1 + gp_x)/4, -(1 + gp_x)/4] ]) J = np.dot(dNdxi, np.array(coords)[node_ids, :]) detJ = np.linalg.det(J) dNdx = np.linalg.solve(J, dNdxi) B = np.zeros((3, 8)) # 几何矩阵 B for i in range(4): B[0, 2*i] = dNdx[0, i] B[1, 2*i+1] = dNdx[1, i] B[2, 2*i] = dNdx[1, i] B[2, 2*i+1] = dNdx[0, i] D = (E / (1 - nu**2)) * np.array([ [1, nu, 0], [nu, 1, 0], [0, 0, (1 - nu)/2] ]) ke += np.dot(B.T, np.dot(D, B)) * detJ # 把 8x8 的 ke 叠加到全局矩阵 K 中 dof_map = [] for nid in node_ids: dof_map.extend([2*nid, 2*nid+1]) for a in range(8): for b in range(8): K[dof_map[a], dof_map[b]] += ke[a, b] for elem in elements: assemble_element(elem) # 施加约束:左端固定 for j in range(ny+1): nid = j * (nx + 1) K[2*nid, :] = 0; K[2*nid, 2*nid] = 1 K[2*nid+1, :] = 0; K[2*nid+1, 2*nid+1] = 1 # 施加端部集中力:平均分配到右端每个节点 force = np.zeros(2 * n_nodes) for j in range(ny+1): nid = j * (nx+1) + nx force[2*nid+1] = F / (ny+1) # 解方程 u = np.linalg.solve(K, force) # 提取悬臂梁根部上表面 x 方向应力(简化后处理) stress_x = (E / (1-nu**2)) * ( (u[2*(nx+1)+nx*2] - u[0]) / L ) # 示意近似 print(f"根部上表面 sigma_x 近似值为 {stress_x:.2f} Pa")这段脚本的关键参数说明如下:E、nu分别是弹性模量与泊松比,直接影响刚度矩阵中的弹性矩阵D;网格数量nx和ny决定了计算精度,网格越粗,与理论解偏差越大,越细则越趋近于解析值,但耗时也随之增加;F为所施加的端部集中力。程序的整体思路是先由几何与材料参数生成节点和单元,再在单元内完成高斯积分,组装全局刚度矩阵,最后通过np.linalg.solve求解节点位移。你可以改写边界固定方式和载荷分布,直接将其用于对照手算结果。
3.3 用自由端挠度与手算对比:误差来自哪里
对于上述悬臂梁,材料力学给出的自由端挠度公式为w = F*L^3 / (3*E*I),其中I = t*H^3/12。在程序中读取右端所有节点的竖向位移取平均,再与该理论值比较。若数值解比理论解小,通常是网格太粗或厚度方向的单元层数不够;若偏差稳定在 5% 以内,基本可以确认手算解析解的大方向正确。若偏差超出 10%,则要回看两条路:一是程序加载是不是均匀分摊,二是手算时是否误把平面应力当成平面应变。
实际操作建议:把这段脚本保存为verify_beam.py,在命令行用python verify_beam.py运行,固定弹模和泊松比,只改变网格数量,观察自由端挠度是否随网格加密而接近解析值。收敛速度不满足预期时,优先检查单元坐标生成是否缺少端点重复,这是最简单的错误来源。
4. 弹性力学手算答案的四个常见陷阱,不是那些“想当然”的题
4.1 陷阱一:平面应力与平面应变不分
这是徐芝纶课后题中出错率最高的一个地方。平面应力问题是薄板,厚度方向应力为零,但存在厚度方向的应变;平面应变问题是长坝或隧洞,厚度方向应变为零,但存在厚度方向的应力。两者的广义胡克定律表达式完全不同,最常见的错误就是把平面应力问题中的E、ν直接拿到平面应变问题中使用,导致最后结果差出一个因子1 - ν^2。
解决技巧:做题时先看结构尺寸,厚度远小于另外两个方向尺寸,属于平面应力;长度远大于截面尺寸、且载荷沿长度方向不变,属于平面应变。如果题目中给出的是圆柱形或坝体,一律优先考虑平面应变。
4.2 陷阱二:应力函数的“多项式陷阱”
用Airy应力函数解决平面问题时,很多人拿到题目就从多项式试起,但并没有认真核对边界条件。常用的多项式应力函数有很多种组合,φ = a x^2 + b x y + c y^2对应的是常应力状态,φ = a x^3 + b x^2 y + c x y^2 + d y^3对应的是线性应力分布,不同阶次对应不同的受载模式。
建议的硬性规则是:先明确边界上的载荷是均匀、线性还是抛物线分布,再决定应力函数需要取到几次多项式。取错阶数的话,会出现边界条件无论怎么配常数都无法完全满足的情况,这时不要怀疑自己代数不好,而应果断换高阶或更合适的应力函数。
4.3 陷阱三:对称性用错方向
弹性力学题目经常出现对称性简化,但对称性不仅指几何形状对称,载荷和约束也必须对称(或反对称)。很多人在矩形板对边受均布拉力时把板的中心线当成对称轴,却忘了位移边界条件并不是反对称的,导致推导出来的应力分布左右不对称,违反平衡条件。
做题时先把几何、载荷、约束三者的对称性分别列出来,而不是画完图直接写“根据对称性”。这样能把“对称轴上的切应力为零、法向位移为零”这类条件用对位置,答案才靠谱。
4.4 一个快速检查表:手算结果是否可信
| 检查项 | 检查方法 | 常见错误 |
|---|---|---|
| 量纲 | 应力量纲必须为 Pa,位移为 m,若出现杂合量纲则立即复查 | 忘记除以厚度 t |
| 边界切应力 | 自由表面上切应力必须为 0 | 只用正应力条件,忽略剪应力 |
| 静力平衡 | 任一截面上的合力与外力平衡 | 对称性破坏导致合力不为零 |
| 应变协调 | 由应力求应变后,应变分量必须满足相容方程 | 随意取应力函数而不满足双调和方程 |
每个课后题都值得在得到结果后按上表快速过一遍。很多答案的荒唐错误,其实靠量纲检查就能直接发现。
5. 把课后习题答案整理成自己的“解题元模型”,形成跨题目复用的能力
5.1 为什么整理答案比刷题更重要
做完一道题后,如果不把“这道题的结构”抽出来,下一次面对稍微变形的题目还得重新推导。常见做法是把每道题拆成“题目结构、解法路径、关键方程、易错点”四栏,单独记录在一张表上。以矩形薄板受均布载荷的题目为例,题目结构是“简支板+均布载荷”,解法路径是“Navier 双重三角级数”,关键方程是w = ΣΣ a_mn sin(mπx/a) sin(nπy/b),易错点是“载荷也要展开为级数形式,不能直接代入原函数”。当这些信息按统一格式沉淀下来,课后题之间的迁移就会变得很自然。
5.2 一道题里藏着多少种解法,你的元模型里就该有多少个分支
经典题目往往不止一种解法。以均布载荷下的简支板为例,至少有三个分支:Navier 解适用于四边简支矩形板,Lévy 解适用于一对边简支、另一对边任意支撑的板,能量法则适合几何稍有变化但不规则的板。建议在元模型的“解法路径”字段中,把所有可用的方法都列出来,而不是只写自己做出来的一种。这样在做题之前,可以快速评估手头的题到底适合级数解还是能量法,避免一条路走到底却发现边界条件无法满足。
5.3 用模板管理习题答案的步骤
用git或GitHub维护课后题答案集是目前可靠的方式之一,可以把每章的题目和答案按“章节—题目编号”组织成目录,而非一个大杂烩式的 Markdown 文档。至少按以下方式组织:
- 根目录建立
README.md,写清楚本目录覆盖的教材章节范围。 - 每一章单独建一个子目录,包含
problems.md(题目描述)、solutions.md(解题过程)、figures/(示意图)。 - 每次增补答案时,在
solutions.md的头部加上日期和使用的解题方法,方便搜索。 - 手算结果旁边附上对应数值验证脚本路径,这样后来翻看时能直接运行验证,而不是重新阅读一遍推导过程。
这样整理出来的习题答案集,本质上已经变成了你自己的“解法知识库”。Someday 你在做有限元工程分析时,需要快速回忆某个典型受载结构的应力分布形式,打开这个知识库搜索关键词,几秒钟就能找到对应的解析解和解法路径。
6. 用 3 个实战技巧验证你的答案稳定性,把“做完了”变成“做对了”
6.1 技巧一:敏感性分析,固定其他参数,只改变一个变量
一道弹性力学题解出来之后,可以马上改变某个参数,比如将泊松比从 0.3 改为 0.49,观察应力的变化是否符合预期:对于平面应力问题,应力通常不随泊松比改变;对于平面应变问题,应力随泊松比变化显著。利用这一点,可以区分两个相近的结构类型是不是被误判。
例如在悬臂梁数值验证脚本中,先将nu改为0.49重新运行,如果自由端位移只变化了几个百分点,说明当前模型确实处于平面应力状态;如果位移大幅下降,则说明你的程序隐含了平面应变假设,需要检查单元公式或材料参数设定。
6.2 技巧二:边界反力校验,把外力重新“收回来看是否守恒”
对于给定外力的题目,将所求得的应力分量沿边界积分,得到的合力应与外力大小相等方向相反。这个积分校验可以直接在数值程序中完成:在得到位移解后,通过几何方程算出应变,再通过胡克定律算出应力,最后沿载荷作用面做数值积分。
# 以 Python 脚本为基础,增加一段反力校验 # 伪代码示意:沿右端积分 sigma_x 并与施加的 F 比较 # for each node on right edge: # F_calc += sigma_x * area_per_node # print(f"计算反力: {F_calc:.2f} N, 施加外力: {F:.2f} N")当F_calc与F的相对误差大于 5% 时,优先检查程序里的节点受载面积是否计算正确。对于手算解析解,这个校验也可以手动完成:取一个包含外力作用点的隔离体图,逐段积分应力,与外力求和比较。这个概念与工程有限元后处理中的“支反力校验”一致,是验证整体可靠性的重要手段。
6.3 技巧三:把解的极限行为与已知简单情形对比
任何弹性力学解都应当在参数极端取值时退化为一个已知的简单解。例如圆孔应力集中问题中,孔半径趋于零时,应力集中系数应趋近于 1;简支梁解的跨度趋于无限大时,跨中挠度趋于无穷大(这与梁理论一致)。手算完成后,取一两个极限参数代回去,如果解没有退化到合理值,通常意味着推导过程中丢掉了关键项。这个检查不需要计算机,直接手算代入即可完成,却能消除大多数低级错误。每个答案在“完成”状态下都应当再经过上述三项检查,才值得记入你的答案库。
本文还有配套的精品资源,点击获取