🔩
東工大機械系院試をpythonで解いてみた[材料力学編]
はじめに
東工大の機械系の院試の問題をpythonを使って解いてみます。今回は令和1年度 材料力学 を解いていきます。過去問は以下のページにあります。
問題
問1
pythonを使う必要がないので普通に解きます。
(1)
①
②
よって
③
④
よって
⑤
よって
⑥左
⑦
問2
(1)
断面二次モーメントIは
よって
⑧
力のつり合い、モーメントのつり合いを考えます。
せん断力
from sympy import symbols, integrate, solve
# シンボルの定義
x, w0, L = symbols('x w0 L')
Sx, Mx = symbols('Sx Mx')
# w(x)の定義
w_x = w0 * x / L
# 式の準備
integral_1 = integrate(w_x, (x, 0, x))
# せん断力を解く
Sx_solution = solve(Sx + integral_1, Sx)[0]
print(Sx_solution)
# 式の準備
integral_2 = integrate(w_x * x, (x, 0, x))
# 曲げモーメントを解く
Mx_solution = solve(Mx - integral_2 - Sx_solution * x, Mx)[0]
print(Mx_solution)
よって
⑨
⑩
曲げ応力
曲げ応力が最大になるのはx=L
# シンボルの定義
I, y, b, h = symbols('I y b h')
# 曲げ応力の定義
sigma=Mx*y/I
# 値を代入する
sigma_substituted = sigma.subs({I: b*h**3/12, y: -h/2, Mx: Mx_solution})
print(sigma_substituted)
# x=Lを代入する
sigma_max = sigma_substituted.subs(x, L)
print(sigma_max)
よって
⑪
⑫
たわみの基礎式より
初期条件はx=Lでy=0,y'=0として、この二階線形非同次常微分方程式を解きます。
たわみが最大になるのはx=0のときです。
from sympy import Eq
# 変数を定義する
E, C1, C2 = symbols('E C1 C2')
# 方程式を定義する
eq = w0 * x**3 / (6 * E * I * L)
# xに関して方程式を積分する
dy_dx = integrate(eq, x) + C1
# 与えられた初期条件
condition1 = dy_dx.subs(x, L)
# C1の値を解く
C1_value = solve(Eq(condition1, 0), C1)[0]
# dy_dxの方程式を積分してyを得る
y = integrate(dy_dx.subs(C1, C1_value), x) + C2
# 与えられた初期条件
condition2 = y.subs(x, L)
# C2の値を解く
C2_value = solve(Eq(condition2, 0), C2)[0]
# yの方程式にIの値を代入する
y_substituted = y.subs(I, b*h**3/12)
# C2_valueの方程式にIの値を代入する
C2_substituted = C2_value.subs(I, b*h**3/12)
# y_substitutedにC2_substitutedの値を代入する
y_final = y_substituted.subs(C2, C2_substituted)
print(y_final)
# y_finalの方程式にx=0を代入する
y_at_x0 = y_final.subs(x, 0)
print(y_at_x0)
よって
⑬
⑭
集中荷重だけがかかる時のAのたわみを算出し、(4)の答えと合わせて、重ね合わせの原理より答えを出します。
# 変数を定義する
P = symbols('P')
# 方程式を定義する
eq_p = -P*x/(E*I)
# xに関して方程式を積分する
dy_dx = integrate(eq_p, x) + C1
# 与えられた初期条件
condition1 = dy_dx.subs(x, L)
# C1の値を解く
C1_value = solve(Eq(condition1, 0), C1)[0]
# dy_dxの方程式を積分してyを得る
y = integrate(dy_dx.subs(C1, C1_value), x) + C2
# 与えられた初期条件
condition2 = y.subs(x, L)
# C2の値を解く
C2_value = solve(Eq(condition2, 0), C2)[0]
# yの方程式にIの値を代入する
y_substituted = y.subs(I, b*h**3/12)
# C2_valueの方程式にIの値を代入する
C2_substituted = C2_value.subs(I, b*h**3/12)
# y_substitutedにC2_substitutedの値を代入する
y_final = y_substituted.subs(C2, C2_substituted)
# y_finalの方程式にx=0を代入する
y_at_x0_p = y_final.subs(x, 0)
# 重ね合わせの原理
P_value = solve(y_at_x0+y_at_x0_p, P)[0]
print(P_value)
よって
⑮
問3,4
この問題もpythonを使う場面がないので普通に解きます。
⑯⑰
⑱モールの応力円 ⑲主応力 ⑳単純せん断 ㉑
㉔鋳鉄 ㉕低炭素鋼 ㉖アルミニウム合金 ㉗脆性 ㉘降伏 ㉙残留ひずみ
㉚塑性 ㉛耐力 ㉜引張強さ ㉝くびれ
まとめ
流体力学や数学の問題を解いたときほどpythonで解く意味はなかったですね。
Discussion