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?

「三角錐の体積の求め方を教えて下さい。」「三角錐の体積を行列式で教えて下さい。」をAI先生に聞きました。

Last updated at Posted at 2025-04-19

・ChatGPT先生へ(1回目)「三角錐の体積の求め方を教えて下さい。」
・ChatGPT先生へ(2回目)「三角錐の体積を行列式で教えて下さい。」
・ChatGPT先生へあきらめました。「切頭四角錐の体積計算を教えて下さい。」
 切頭四角錐(せっとうしかくすい、英語では「 truncated square pyramid 」)の体積は、上面と下面が平行な正方形になっている四角錐の一部を切り取った立体です。

ChatGPT先生へ(1回目)

質問リスト

・質問リストの追番は無視して下さい。1個ずつです。途中の回答表示は省略しています。

# 質問リスト  
1. 三角錐の体積の求め方を教えて下さい。
2. 図を描いて説明して下さい。
3. 上記をsympy のソースコードで。
4. 興味あります。
5. 正面から
6. 保存したい。
7. sympy のソースコードで、積分を使って体積をシンボリックの変数のままで、結果も出力して下さい。
8. 私の質問をMarkdown形式でリスト化して出力して。Markdown形式でリストからアスタリスクは削除して。1行目に、# 質問リスト の文字を出力して。追番を追加して。本質問も含めて下さい。

sympy のソースコードで教えて下さい。

from sympy import symbols, integrate, Rational

# 変数定義
x, y, z = symbols('x y z')
b, h_b, H = symbols('b h_b H', positive=True)  # b: 底辺, h_b: 底面高さ, H: 錐の高さ

# z の上限は錐の高さに比例(x, y による傾斜あり)
# 底面の三角形を x: [0, b], y: [0, h_b*(1 - x/b)] にすると、ピラミッド形になる

# z の上面:線形に減衰するように仮定(高さ H に比例)
z_top = H * (1 - x / b - y / h_b)

# 積分:dz dy dx の順で三重積分
volume = integrate(
    integrate(
        integrate(1, (z, 0, z_top)),
    (y, 0, h_b * (1 - x / b))),
(x, 0, b))

# 結果出力
print("積分による体積(シンボリック) =")
print(volume.simplify())

結果(出力)

積分による体積(シンボリック) =
b*h_b*H/6

ChatGPT先生へ(2回目)

質問リスト

# 質問リスト  
1. 三角錐の体積を行列式で教えて下さい。
2. 上記をsympyのソースコードで。ユーザー定義関数で。計算結果を記号で出力して下さい。
3. 私の質問をMarkdown形式でリスト化して出力して。Markdown形式でリストからアスタリスクは削除して。1行目に、# 質問リスト の文字を出力して。追番を追加して。本質問も含めて下さい。
import sympy as sp
from sympy.geometry import Point3D

def tetrahedron_volume(A: Point3D, B: Point3D, C: Point3D, D: Point3D):
    # ベクトルAB, AC, AD を計算
    AB = sp.Matrix(B - A)
    AC = sp.Matrix(C - A)
    AD = sp.Matrix(D - A)

    # スカラー三重積: AB ・ (AC × AD)
    volume_det = AB.dot(AC.cross(AD))

    # 三角錐の体積 = |スカラー三重積| / 6
    V = sp.Rational(1, 6) * sp.Abs(volume_det)
    return V

# 記号を定義
x1, y1, z1 = sp.symbols('x1 y1 z1')
x2, y2, z2 = sp.symbols('x2 y2 z2')
x3, y3, z3 = sp.symbols('x3 y3 z3')
x4, y4, z4 = sp.symbols('x4 y4 z4')

# Point3Dで点を定義
A = Point3D(x1, y1, z1)
B = Point3D(x2, y2, z2)
C = Point3D(x3, y3, z3)
D = Point3D(x4, y4, z4)

# 体積を計算
V = tetrahedron_volume(A, B, C, D)

# 結果を記号で出力
sp.pprint(V, use_unicode=True)

Gemini先生へ

copilot先生へ

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

(テンプレート)

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

wikipedia

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?