Python畫彎矩圖剪力圖(一)

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()

Python畫彎矩圖剪力圖(一)的圖1

除了大致輪廓,還可以把細節完善一下。比如兩端封閉起來,填充顏色等等。以受均布荷載的簡支梁為例

Python畫彎矩圖剪力圖(一)的圖2

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()

Python畫彎矩圖剪力圖(一)的圖3

再看一個多跨梁

Python畫彎矩圖剪力圖(一)的圖4

Python畫彎矩圖剪力圖(一)的圖5

彎矩圖注意事項:

  • 正彎矩畫在桿件的下方,負彎矩畫在桿件的上方。
  • 使桿件下部受拉的彎矩為正,上部受拉的彎矩為負。
  • 彎矩圖畫在桿件纖維受拉的一側。

剪力圖注意事項:

  • 正剪力畫在桿件的上方;
  • 負剪力畫在桿件的下方;
  • 使桿件截面順時針方向轉動的剪力為正剪力;
  • 使桿件截面逆時針方向轉動的剪力為負剪力;
  • 一般情況下,剪力與桿件所受外力的方向相反。

彎矩圖是一條表示桿件不同截面彎矩的曲線。這里所說的曲線是廣義的,它包括直線、折線和一般意義的曲線。彎矩圖是對構件彎矩的圖形表示,彎矩圖畫在受拉側,無須標正負號。

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

9
4
8