首页/文章/ 详情

Python画弯矩图剪力图(一)

3月前浏览4187

Python画弯矩图,都以分段直线近似代替曲线,分段越多,越接近真实的弯矩曲线,就像这样

import matplotlib.pyplot as plt
import numpy as np
fig, axs = plt.subplots(11, constrained_layout=True)
axs.plot([0,1,5],[0,2,1], linewidth=2, color="dimgrey")
plt.show()

除了大致轮廓,还可以把细节完善一下。比如两端封闭起来,填充颜色等等。以受均布荷载的简支梁为例

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']  # 正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False# 正常显示负号
l = 5
q = 20
x = np.linspace(0,l,20#将梁20等分
M = q/2*(l*x-x**2)     #计算等分点弯矩M
V = q*(l/2-x)          #计算等分点剪力V
fig, axs = plt.subplots(21, constrained_layout=True,figsize=(8,4) )
axs[0].invert_yaxis() 
axs[0].plot(x,M, label="M1", linewidth=3#画弯矩图
axs[0].fill_between(x, 0, M, alpha=0.3, where=(M<=0) ) 
axs[0].fill_between(x, 0, M, alpha=0.3, where=(M>=0) )
axs[0].plot([0,5],[0,0], linewidth = 2, color = "dimgrey"#画梁
axs[0].set_ylabel('弯矩(kN.m)', fontsize = 16)
fig.suptitle('内力图', fontsize = 18)
x1 = np.array( [0] )
x2 = np.array( [l] )
x3 = np.hstack( (x1, x, x2) )
v1 = np.array( [ 0 ] )
v3 = np.hstack( (v1, V, v1) )
axs[1].plot(x3, v3, label="M1", linewidth=3)#画剪力图
axs[1].set_ylabel('剪力(kN)', fontsize = 16)
axs[1].fill_between(x, 0, V, alpha=0.3, where=(V<=0) ) #填充颜色
axs[1].fill_between(x, 0, V, alpha=0.3, where=(V>=0) )
axs[1].plot([0,5],[0,0], linewidth = 2, color = "dimgrey"#画梁
fig.savefig('./f2.png', dpi = 500#保存图片 
plt.show()

再看一个多跨梁

弯矩图注意事项:

  • 正弯矩画在杆件的下方,负弯矩画在杆件的上方。
  • 使杆件下部受拉的弯矩为正,上部受拉的弯矩为负。
  • 弯矩图画在杆件纤维受拉的一侧。

剪力图注意事项:

  • 正剪力画在杆件的上方;
  • 负剪力画在杆件的下方;
  • 使杆件截面顺时针方向转动的剪力为正剪力;
  • 使杆件截面逆时针方向转动的剪力为负剪力;
  • 一般情况下,剪力与杆件所受外力的方向相反。

弯矩图是一条表示杆件不同截面弯矩的曲线。这里所说的曲线是广义的,它包括直线、折线和一般意义的曲线。弯矩图是对构件弯矩的图形表示,弯矩图画在受拉侧,无须标正负号。

来源:数值分析与有限元编程
pythonUM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-02
最近编辑:3月前
太白金星
本科 慢慢来
获赞 2粉丝 4文章 304课程 0
点赞
收藏
作者推荐
Python画弯矩图剪力图(二)

平面刚架的内力图绘制绘制平面刚架(桁架)的变形图及内力图就是一系列数据的可视化过程。内力是基于杆的位置 的函数 ,由一系列的离散点组成矩阵 这里第三行无实际意义,仅作为辅助计算。定义缩放矩阵 旋转矩阵 平移矩阵 以如图所示的刚架为例,在画单元的内力图时,通常是以单元起点为总体坐标系的坐标原点,杆轴沿着x轴正方向来计算内力矩阵A的(原因是对杆进行n等分时使用了x=np.linspace(0,l,n)这个方法,起始点为0)。故此时得到的矩阵A要通过缩放、旋转、平移操作,使之回到对应的位置上去。对于单元1,则需要作旋转操作(np.dot(R,A)),而单元2则需要作平移操作(np.dot(T,A))。缩放操作则根据图形是否协调适当考虑。▲单元1内力图没经过旋转操作▲单元1内力图经过旋转操作,回到对应的位置▲单元2内力图没经过平移操作▲单元2内力图经过平移操作,回到对应的位置▲最终内力图来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈