1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Betti's theorem「マクスウェルの相反定理を使うと、何を計算できますか。入力条件も教えて下さい。」をAI先生に教えてもらう(1/2)

Last updated at Posted at 2024-12-18

(再)以下おすすめです。
https://qiita.com/mrrclb48z/items/369b66044a32fdc3c8ee#sympy%E3%81%A7bettis-theorem%E3%81%A7
 
・以下、正しいのか、私の力で判断できませんでした。申し訳ありません。
・???sympyのコードを聞きました。

マクスウェルの相反定理を使うと、何を計算できますか。入力条件も教えて下さい。

ChatGPT先生へ

(回答抜粋)
・たわみの計算:...
・荷重の影響の分析:...
相反定理の内容
「線形弾性体において、ある点 𝐴に単位荷重を作用させた場合に点 B で発生する変位は、点 B に同じ単位荷重を作用させたときに点 A で発生する変位と等しい。」

上記の具体例の、sympyのソースコードを教えて下さい。

(回答抜粋)

from sympy import symbols, integrate, solve

# 定数の定義
L, E, I = symbols('L E I')  # 梁の長さ、弾性係数、断面2次モーメント
P = symbols('P')  # 荷重

# 座標
x = symbols('x')

# 梁のたわみ曲線方程式 (EI * y'' = M(x))
# 点Aで荷重Pを加えた場合のモーメント
a = L / 4  # 荷重点 (例として梁の長さLの1/4点に設定)
M_A = P * (a - x)

# 曲げモーメントからたわみを求める
# EI * y'' = M(x) を2回積分する
theta_A = integrate(M_A / (E * I), x)  # 角度
y_A = integrate(theta_A, x)  # たわみ

# 境界条件(単純支持)
# 両端でたわみがゼロ (y(0) = 0, y(L) = 0)
C1, C2 = symbols('C1 C2')
y_A = y_A + C1 * x + C2
boundary_conditions = [
    y_A.subs(x, 0),  # y(0) = 0
    y_A.subs(x, L)   # y(L) = 0
]
constants = solve(boundary_conditions, [C1, C2])
y_A = y_A.subs(constants)

# 任意の点Bでの変位を求める
b = L / 2  # 例: 点Bは梁の中央
delta_AB = y_A.subs(x, b)  # 点Aに荷重を加えたとき点Bでの変位

# 点Bに荷重を加えた場合
M_B = P * (b - x)
theta_B = integrate(M_B / (E * I), x)
y_B = integrate(theta_B, x)
y_B = y_B + C1 * x + C2
constants_B = solve([y_B.subs(x, 0), y_B.subs(x, L)], [C1, C2])
y_B = y_B.subs(constants_B)

# 点Aでの変位
delta_BA = y_B.subs(x, a)

# マクスウェルの相反定理の確認
print("点Aに荷重を加えたときの点Bでの変位 (δ_AB):", delta_AB)
print("点Bに荷重を加えたときの点Aでの変位 (δ_BA):", delta_BA)
print("相反定理が成立:", delta_AB.equals(delta_BA))

結果を教えて下さい。

(回答抜粋)
相反定理が成立していません (False)。

再確認をお願いします。

(回答抜粋)

続けて下さい。

(回答抜粋)

>あきらめました。

Gemini先生へ

(回答抜粋)

  1. 電圧源と電流の関係(相反定理の基本的な形)...
  2. 電流源と電圧の関係...
  3. 電流源と電圧の関係...

材料力学はどうですか

(回答抜粋)

  1. 集中荷重と変位の関係
  2. 応用例
    ・構造解析の簡略化:..
    未知のパラメータの推定:...

材料力学で、マクスウェルの相反定理を使ったSymPyのコードを教えて下さい。

(回答抜粋)
例:片持ち梁のたわみ

from sympy import symbols, integrate, Piecewise

# 記号の定義
x, L, a, b, E, I, Pa, Pb = symbols('x L a b E I Pa Pb', real=True, positive=True)

# 曲げモーメントの定義 (点aにPaが作用する場合)
Ma = Piecewise(
    (Pa * (a - x), x <= a),
    (0, x > a)
)

# 曲げモーメントの定義 (点bにPbが作用する場合)
Mb = Piecewise(
    (Pb * (b - x), x <= b),
    (0, x > b)
)

# たわみの計算 (点aにPaが作用する場合の点bのたわみδba)
delta_ba = integrate(Ma * Mb / (E * I), (x, 0, L)).subs(Pb, 1)

# たわみの計算 (点bにPbが作用する場合の点aのたわみδab)
delta_ab = integrate(Mb * Ma / (E * I), (x, 0, L)).subs(Pa, 1)

# 結果の表示
print("δba:", delta_ba)
print("δab:", delta_ab)

# a, b, Lに具体的な値を代入して確認
delta_ba_num = delta_ba.subs({a: L/3, b: 2*L/3, L: 3, E: 1, I: 1}).simplify()
delta_ab_num = delta_ab.subs({a: L/3, b: 2*L/3, L: 3, E: 1, I: 1}).simplify()

print("δba (数値例):", delta_ba_num)
print("δab (数値例):", delta_ab_num)

# δbaとδabが等しいか確認
print("δba == δab:", delta_ba_num == delta_ab_num)

# 別の数値例でも確認
delta_ba_num2 = delta_ba.subs({a: L/4, b: 3*L/4, L: 4, E: 1, I: 1}).simplify()
delta_ab_num2 = delta_ab.subs({a: L/4, b: 3*L/4, L: 4, E: 1, I: 1}).simplify()

print("δba (数値例2):", delta_ba_num2)
print("δab (数値例2):", delta_ab_num2)

print("δba == δab (数値例2):", delta_ba_num2 == delta_ab_num2)
出力例:
δba: a**2*b**2*(3*L - a - b)/(6*E*I)
δab: a**2*b**2*(3*L - a - b)/(6*E*I)
δba (数値例): 2.0
δab (数値例): 2.0
δba == δab: True
δba (数値例2): 3.0
δab (数値例2): 3.0
δba == δab (数値例2): True

中断しました。

copilot先生へ

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

(テンプレート)

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

wikipedia

参考文献

>平衡方程式、Cauchyの公式、Green-Gaussの定理などを用いて変形すれば...

  • 機械工学大系 6 弾性体の変形 
    4.8 相反定理
    p110

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?