0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

材料力学「2ヒンジ門型ラーメン解析」をAI先生に聞きました。

Posted at
# 質問リスト
1. 2ヒンジ門型ラーメンの鉛直集中荷重の材端モーメント・反力・変形を教えて下さい。
2. 上記をsympy のソースコードで、シンボリックな変数で教えて下さい。
3. 上記の条件で、たわみ角法のsympy のソースコードを教えて下さい。
4. 上記のソースコードをマトリックス表示のソースコードを教えて下さい。
5. 上記の計算結果をmarkdown形式で教えて下さい。
6. 追加で、sympy の計算結果で教えて下さい。
7. 上記のmarkdown形式でなく普通の表示で教えて下さい。
8. 上記をprint文で教えて下さい。
9. 私の質問をMarkdown形式でリスト化して出力して。Markdown形式でリストからアスタリスクは削除して。1行目に、# 質問リスト の文字を出力して。

ChatGPT先生へ

ChatGPT の回答は必ずしも正しいとは限りません。重要な情報は確認するようにしてください。
回答抜粋

・以下、私は実行していません。

import sympy as sp

# シンボリック変数の定義
P, H, L, x_P = sp.symbols('P H L x_P')  # 荷重, 柱高さ, 梁スパン, 荷重位置
E, I_c, I_b = sp.symbols('E I_c I_b')  # ヤング率, 柱の断面二次モーメント, 梁の断面二次モーメント

# 1. 反力計算 (静力学のつり合い)
RA, RB = sp.symbols('RA RB')  # 支点反力
eq1 = sp.Eq(RA + RB, P)  # 鉛直方向の力のつり合い
eq2 = sp.Eq(RA * L - P * x_P, 0)  # モーメントのつり合い (左端で取る)

# 反力を解く
reactions = sp.solve((eq1, eq2), (RA, RB))
RA_val, RB_val = reactions[RA], reactions[RB]

# 2. 材端モーメントの計算
# 梁の端部モーメント (柱との接続部)
M_A = -RA_val * 0  # 左端モーメント
M_B = -RB_val * L  # 右端モーメント

# 3. 変形の計算(簡易的な梁のたわみ解析)
x = sp.symbols('x')  # 位置座標
M_x = sp.Piecewise(
    (RA_val * x, x < x_P),  # 左側の曲げモーメント
    (RA_val * x - P * (x - x_P), x >= x_P)  # 右側の曲げモーメント
)

# たわみ方程式 (EI y'' = M)
y_x = sp.integrate(sp.integrate(M_x / (E * I_b), x), x)

# 結果表示
print(f"反力: RA = {RA_val}, RB = {RB_val}")
print(f"材端モーメント: M_A = {M_A}, M_B = {M_B}")
print(f"変形方程式: y(x) = {y_x.simplify()}")
import sympy as sp

# シンボリック変数の定義
P, H, L, x_P = sp.symbols('P H L x_P')  # 荷重, 柱高さ, 梁スパン, 荷重位置
E, I_c, I_b = sp.symbols('E I_c I_b')  # ヤング率, 柱の断面二次モーメント, 梁の断面二次モーメント
theta_A, theta_B = sp.symbols('theta_A theta_B')  # 端部回転角

# 1. 固定端モーメントの計算(集中荷重 P の場合)
M_fA = -P * x_P * (L - x_P)**2 / L**2  # 左端
M_fB = P * (L - x_P) * x_P**2 / L**2  # 右端

# 2. たわみ角法の基本式
M_AB = (2 * E * I_b / L) * (2 * theta_A + theta_B) + M_fA
M_BA = (2 * E * I_b / L) * (2 * theta_B + theta_A) + M_fB

# 3. 柱のモーメント平衡条件
eq1 = sp.Eq(M_AB + M_BA, 0)  # 全体のモーメントのつり合い

# 4. たわみ角を求める
solution = sp.solve(eq1, (theta_A, theta_B))

# 5. たわみ角を代入して最終的なモーメントを求める
M_AB_sol = M_AB.subs(solution)
M_BA_sol = M_BA.subs(solution)

# 結果表示
print(f"端部モーメント: M_AB = {M_AB_sol}, M_BA = {M_BA_sol}")
import sympy as sp

# シンボリック変数の定義
P, H, L, x_P = sp.symbols('P H L x_P')  # 荷重, 柱高さ, 梁スパン, 荷重位置
E, I_b = sp.symbols('E I_b')  # ヤング率, 梁の断面二次モーメント
theta_A, theta_B = sp.symbols('theta_A theta_B')  # 端部回転角

# 1. 固定端モーメント(FEM)
M_fA = -P * x_P * (L - x_P)**2 / L**2  # 左端の固定端モーメント
M_fB = P * (L - x_P) * x_P**2 / L**2   # 右端の固定端モーメント

# 2. 係数行列 [K] の定義
K = (2 * E * I_b / L) * sp.Matrix([[4, 2], [2, 4]])

# 3. 不明モーメントの式
Theta = sp.Matrix([theta_A, theta_B])  # たわみ角ベクトル
FEM = sp.Matrix([M_fA, M_fB])  # 固定端モーメントベクトル
M = K * Theta + FEM  # 端部モーメントの式

# 4. モーメントつり合い条件 M_AB + M_BA = 0
eq = sp.Eq(M[0] + M[1], 0)

# 5. たわみ角を求める
solution = sp.solve(eq, (theta_A, theta_B))

# 6. たわみ角を代入して最終的なモーメントを求める
M_AB_sol = M[0].subs(solution)
M_BA_sol = M[1].subs(solution)

# 結果表示
print("剛性マトリックス [K]:")
sp.pprint(K)
print("\n固定端モーメント [FEM]:")
sp.pprint(FEM)
print("\n求めた端部モーメント:")
sp.pprint(sp.Matrix([M_AB_sol, M_BA_sol]))
計算結果

剛性マトリックス [K]:
K = (2EI / L) * 
| 4  2 |
| 2  4 |

固定端モーメント [FEM]:
FEM =
| -P * x_P * (L - x_P)^2 / L^2 |
|  P * (L - x_P) * x_P^2 / L^2 |

求めた端部モーメント:
M_AB = -4*E*I_b*theta_B/L - P*x_P - P*x_P**3/L**2
M_BA = (4*E*I_b*L*theta_B - P*x_P**3)/L**2

この print 文を Python で実行すれば、同じ形式で表示されます。 ​​

Gemini先生へ

copilot先生へ

いつもの? sympyの実行環境と 参考のおすすめです。

(テンプレート)

いつもと違うおすすめです。

wikipedia

Qiita

Google検索

文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?