材料力学「画像からざっくり断面二次モーメントを計算する」様を参考に、AI先生に聞きました。

**・以下、正しいのか、私の力で判断できませんでした。申し訳ありません。** 

# オリジナル 

https://qiita.com/malichn/items/ba826a3446ef5ff53ddd

＞解析値は 3780000mm4 程度になるので、2%弱の誤差がある

# Gemini[2.0-Flash-Exp]先生へ

**H-100×100×6×8(r=8)　の断面二次モーメントを教えて下さい。**

>(回答抜粋)
強軸周り（I<sub>x</sub>）: およそ 380 cm<sup>4</sup> (38000 mm<sup>4</sup>)
弱軸周り（I<sub>y</sub>）: およそ 134 cm<sup>4</sup> (13400 mm<sup>4</sup>)
と考えて良いでしょう。

sympyのコードを教えて下さい。

>1. 幾何学的定義に基づく計算 (複雑な積分が必要)
```python
import sympy

# 記号の定義
h, b, tw, tf = sympy.symbols('h b tw tf', real=True, positive=True)

# ウェブの断面二次モーメント (x軸周り)
Iw_x = (1/12) * tw * (h - 2*tf)**3

# フランジの断面二次モーメント (x軸周り)
If_x = (1/12) * b * tf**3 + b*tf*((h-tf)/2)**2 #平行軸の定理を使用

# 全体の断面二次モーメント (x軸周り)
Ix = Iw_x + 2*If_x

# ウェブの断面二次モーメント (y軸周り)
Iw_y = (1/12) * (h - 2*tf) * tw**3

# フランジの断面二次モーメント (y軸周り)
If_y = (1/12) * tf * b**3

# 全体の断面二次モーメント (y軸周り)
Iy = Iw_y + 2*If_y

# 値の代入
values = {h: 100, b: 100, tw: 6, tf: 8}

Ix_val = Ix.subs(values).evalf()
Iy_val = Iy.subs(values).evalf()

print(f"Ix (隅R無視): {Ix_val} mm^4")
print(f"Iy (隅R無視): {Iy_val} mm^4")

#隅Rを考慮しない場合の断面積
A = tw * (h - 2*tf) + 2*b*tf
A_val = A.subs(values).evalf()

print(f"断面積 (隅R無視): {A_val} mm^2")
```
>2.近似式を用いた計算 (より実用的)
```python
h = 100
b = 100
tw = 6
tf = 8

# 近似式（文献等を参照）
Ix_approx = 38000 # mm^4 (文献値から)
Iy_approx = 13400 # mm^4 (文献値から)

print(f"Ix (近似): {Ix_approx} mm^4")
print(f"Iy (近似): {Iy_approx} mm^4")

#断面積の近似式　A = tw * (h - tf) + 2*b*tf - 0.8584*r^2
r=8
A_approx = tw * (h - tf) + 2*b*tf - 0.8584*r**2
print(f"断面積 (近似): {A_approx} mm^2")
```
>(回答抜粋)
sympyは記号演算に強みを発揮するライブラリです。H形鋼のような複雑な形状の断面二次モーメントを厳密に計算する場合は、sympyを使うよりも、...

# Gemini[2.0-Flash-Exp]先生へ。「画像のアップロード」
＞私は、「画像から」Gemini先生へのお願いをあきらめました。
＞？？？私は、画像から実寸の拾い方がわかりませんでした。

# Gemini[2.0-Flash-Exp]先生へ。sympyの second_moment_of_areaで
sympyのpolygonのsecond_moment_of_area　で、H-100×100×6×8(r=8)　の断面二次モーメントを計算するsympyのソースコード教えて下さい。

>(回答抜粋)
>1. 簡略化した近似計算 (外形のみを考慮):
```python
from sympy import Polygon, Point

# 外形の四隅の座標
points = [
    Point(0, 0),
    Point(100, 0),
    Point(100, 100),
    Point(0, 100)
]

# 多角形を作成
polygon = Polygon(*points)

# 断面二次モーメントを計算 (デフォルトは重心周り)
Ixx, Iyy, Ixy = polygon.second_moment_of_area()

print(f"Ixx (概算): {Ixx}")
print(f"Iyy (概算): {Iyy}")
print(f"Ixy (概算): {Ixy}")
```

>2.より正確な計算 (複数の多角形に分解):
```python
from sympy import Polygon, Point, simplify

def calculate_second_moment_h_section(width, height, flange_thickness, web_thickness, fillet_radius):
    """H形鋼の断面二次モーメントを計算する"""

    # フランジとウェブの座標を計算
    flange1_points = [Point(0, 0), Point(width, 0), Point(width, flange_thickness), Point(0, flange_thickness)]
    flange2_points = [Point(0, height - flange_thickness), Point(width, height - flange_thickness), Point(width, height), Point(0, height)]
    web_points = [Point((width - web_thickness) / 2, flange_thickness), Point((width + web_thickness) / 2, flange_thickness), Point((width + web_thickness) / 2, height - flange_thickness), Point((width - web_thickness) / 2, height - flange_thickness)]

    # フランジとウェブのポリゴンを作成
    flange1 = Polygon(*flange1_points)
    flange2 = Polygon(*flange2_points)
    web = Polygon(*web_points)

    # 各部分の断面二次モーメントを計算
    Ixx_flange1, _, _ = flange1.second_moment_of_area()
    Ixx_flange2, _, _ = flange2.second_moment_of_area()
    Ixx_web, _, _ = web.second_moment_of_area()

    # フィレットの影響はここでは無視 (必要に応じて追加)

    # 全体の断面二次モーメントを合計
    Ixx_total = simplify(Ixx_flange1 + Ixx_flange2 + Ixx_web)

    return Ixx_total


# H-100x100x6x8 のパラメータ
width = 100
height = 100
flange_thickness = 6
web_thickness = 6
fillet_radius = 8  # 今回は計算に含めない

Ixx = calculate_second_moment_h_section(width, height, flange_thickness, web_thickness, fillet_radius)
print(f"Ixx (詳細): {Ixx}")
```
計算結果をお願いします。
>コードの再掲 (詳細計算):
実行結果:
このコードを実行すると、以下の出力が得られます。
Ixx (詳細): 127648

＞???

# ChatGPT先生へ
・勉強中
# copilot先生へ
・勉強中


# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342) 　開発環境
# いつもと違うおすすめです。
second_moment_of_area(point=None)

https://docs.sympy.org/latest/modules/geometry/polygons.html#sympy.geometry.polygon.Polygon.second_moment_of_area

＞sympyのPolygonで


https://qiita.com/mrrclb48z/items/663772aaca008bec2579#sympy%E3%81%AEpolygon%E3%81%A7


https://qiita.com/mrrclb48z/items/66cbc2ec2e5c1174c7d9