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?

わかりませんでした。P1P2片持ち梁の複数荷重(4/4)「sympyで、マコーレーの括弧を使って、片持ち梁の2つの荷重の弾性方程式を表示して下さい。」AI先生へ

Last updated at Posted at 2024-12-14

User

あなた:

sympyで、マコーレーの括弧を使って、片持ち梁の2つの荷重の弾性方程式を表示して下さい。

わかりませんでした。ChatGPT先生へ

回答抜粋

from sympy import symbols, Piecewise, integrate, Function

# シンボルの定義
x, x1, x2, P1, P2, E, I = symbols('x x1 x2 P1 P2 E I')
v = Function('v')(x)  # 変位 v(x)

# モーメント M(x) の定義 (マコーレー括弧をPiecewiseで表現)
M = Piecewise(
    (P1 * (x - x1), x >= x1),
    (0, True)
) + Piecewise(
    (P2 * (x - x2), x >= x2),
    (0, True)
)

# 弾性方程式の計算 (1/EI を考慮)
v_eq = integrate(integrate(M / (E * I), x), x)

# 結果を表示
v_eq

print("#",v_eq)    # (2024-12-14) 私が追加しました。

??? 結果の省略

わかりませんでした。Gemini先生へ

回答抜粋

import sympy as sp

# 変数の定義
x, L, a, b, P1, P2, E, I = sp.symbols('x L a b P1 P2 E I')

# マコーレーの括弧を定義する関数
def macaulay(x, a):
    return sp.Heaviside(x-a)*(x-a)

# 曲げモーメントM(x)
M = P1 * macaulay(x, a) + P2 * macaulay(x, b)

# 弾性曲線y(x)の微分方程式
y_diff = sp.integrate(sp.integrate(M/(E*I), x), x)

# 境界条件:x=Lでy=0, y'=0
C1, C2 = sp.symbols('C1 C2')
y = y_diff + C1*x + C2
y_prime = sp.diff(y, x)
eq1 = y.subs(x, L)
eq2 = y_prime.subs(x, L)

# 境界条件から定数C1, C2を求める
sol = sp.solve([eq1, eq2], (C1, C2))

# 弾性曲線y(x)にC1, C2を代入
y = y.subs(sol)

# 結果を表示
# sp.pprint(y)

from sympy import *        # (2024-12-14) 私が追加しました。
print("#",y              ) # (2024-12-14) 私が追加しました。
print("#",y.subs({x:a})  ) # (2024-12-14) 私が追加しました。
print("#",y.subs({x:a+b})) # (2024-12-14) 私が追加しました。
print("#",y.subs({x:L})  ) # (2024-12-14) 私が追加しました。

??? 結果の省略

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

> マコーレー括弧

0
0
1

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?