質問の四角錐から円柱をくりぬいた体積の問題をPythonで解いてみました。(^_^;
Sympyを使って計算しました。検算には、2重積分を使ってみました。(^_^;
まず、3点P,A,Dを通る平面の方程式は次式で表すことができます。
よって、求める平面の方程式のx、y、zの係数および定数項は、次の行列の余因子A11からA14に相当します。(^_^;
これをPythonのSympyで計算して求めてみると、次のようになります。
● Cofactor1.py
# coding: UTF-8 # Cofactor1.py from sympy.matrices import * def main(): P = [ 0, 0, 3] A = [ 1, 1, 0] D = [ 1,-1, 0] m = Matrix([[1,1,1,1],P+[1],A+[1],D+[1]]) N = m.rows a = [m.cofactor(0,i) for i in range(N)] if a[0]< 0: a = [-x for x in a] print("(%d)x+(%d)y+(%d)z+(%d)=0"%tuple(a)) if __name__ == '__main__': main()
●実行結果
(6)x+(0)y+(2)z+(-6)=0
∴3x+z=3
∴z=3(1-x)
求める体積V=(四角錐PABCDの体積)-(四角錐PABCDのx^2+y^2≦1をみたす部分の体積)ですが、四角錐PABCDのx^2+y^2≦1をみたす部分の体積は、図形の対称性から、領域K={(x,y)|0≦y≦x,x^2+y^2≦1}の部分の体積を求め8倍すれば良い。
極座標変換すると、領域K'={(r,θ)|0≦r≦1,0≦θ≦π/4}だから、求める体積Vは、
また、元の解き方の次式と合わせて、PythonのSympyで計算すると次のようになります。
● Integral1.py
# coding: UTF-8 # Integral1.py from sympy import * def main(): t,r = Symbol('t'),Symbol('r') print("V=%s"%(8*integrate(3*(1-t)*(t-sqrt(1-t*t)), (t,1/sqrt(2),1)))) print("V=%s"%(1.0/3*2*2*3-8*integrate(3*(1-r*cos(t))*r,(r,0,1),(t,0,pi/4)))) if __name__ == '__main__': main()
●実行結果
V=-3*pi + 4 + 4*sqrt(2) V=-3*pi + 4.0 + 4*sqrt(2)
ちなみに、自力で計算するとすれば、重積分の方は簡単なので省略しますが、元の解法の式で、の方は置換積分で、の方は、定積分なので図形的に{(扇形)-(三角形)}の面積で求めるか、次の公式を用います。(^_^;
※参考URL
http://okwave.jp/qa/q7619757.html
●重積分:変数変換.ヤコビ行列式
●積分 √(a^2-x^2) - 金沢工業大学
●行列 − 読書ノート v1.4.0dev - プレハブ小屋
●3.2. Sympy : Python での代数計算 − Scipy lecture notes
●Anaconda を利用した Python のインストール (Windows) - Python でデータサイエンス