・積分→4次式に変換をあきらめました。私は、ちょっと図々しかったです。
・未 手作業
下記のvが4次式なので、最初にvを4次式と定義して、積分を使わないで、微分を使って書き換えて解いて下さい。
(ソースコード貼り付け。省略。ver0.2)
ChatGPT先生へ
(回答抜粋) 回答ソースコード
from sympy import symbols, Eq, solve, diff
# 変数と未知係数の定義
x, L, P, EI = symbols('x L P EI')
a4, a3, a2, a1, a0 = symbols('a4 a3 a2 a1 a0') # 未知係数
# 仮定する4次式
v = a4 * x**4 + a3 * x**3 + a2 * x**2 + a1 * x + a0
# 境界条件
# 1. 幾何的境界条件: v(0) = 0
eq1 = Eq(v.subs(x, 0), 0)
# 2. 幾何的境界条件: v'(0) = 0
eq2 = Eq(diff(v, x).subs(x, 0), 0)
# 3. 力学的境界条件: EI * v'''(0) = -P
eq3 = Eq(EI * diff(v, x, 3).subs(x, 0), -P)
# 4. 力学的境界条件: EI * v''(L) = 0
eq4 = Eq(EI * diff(v, x, 2).subs(x, L), 0)
# 連立方程式を解く
solutions = solve([eq1, eq2, eq3, eq4], [a4, a3, a2, a1, a0])
# 解を代入して変位式を求める
v_final = v.subs(solutions).simplify()
print("v(x) =", v_final)
# 必要ならば展開形を出力
v_final_expanded = v_final.expand()
print("展開形 v(x):", v_final_expanded)
sympyのコードが間違っていませんか。a2がでています。
(質問多数。繰り返し多数。省略)
...あきらめました。
GeminiT先生へ
(回答抜粋) 回答ソースコード
???改良されたコード例
from sympy import *
# 変数の定義
x = symbols('x')
P, L, EI = symbols('P, L, EI')
# 4次多項式を仮定
v = C1*x**4 + C2*x**3 + C3*x**2 + C4*x
# 微分方程式を立てる
EI*v.diff(x, 4) = 0 # 片持ち梁の微分方程式
# 境界条件
bc = [
v.subs(x, 0), # x=0 でたわみv=0
v.diff(x).subs(x, 0), # x=0 で傾きv'=0
-EI*v.diff(x, 2).subs(x, 0) - P, # x=0 で曲げモーメントM=-EI*v''=P
-EI*v.diff(x, 3).subs(x, L) # x=L でせん断力Q=-EI*v'''=0
]
# 連立方程式を解く
sol = solve(bc, [C1, C2, C3, C4])
# 解を代入
v = v.subs(sol)
# 結果を表示
print(v)
(質問多数。繰り返し多数。省略)
??? # 微分方程式を立てる
??? EI*v.diff(x, 4) = 0 # 片持ち梁の微分方程式
...あきらめました。