
高校数学をプログラミングで解く(数学III編)「8-2 体積」
マガジンリスト > 数学Ⅲ編 8.積分法の応用 > 8-2 体積
はじめに
今回は、数学IIIで学ぶ「体積」について、回転体の体積を表す定積分をコンピュータで近似的に数値計算するプログラムを作成していきます。
体積
まず、積分を用いた体積の計算方法などについて解説しておきます。
体積の公式
$${a < b, \ c < d}$$とする。
① $${a \leq x \leq b}$$において、$${x}$$軸に垂直な平面で切ったときの断面積が$${S(x)}$$である立体の体積$${V}$$
$$
V=\int_a^b S(x) dx
$$
② 曲線$${y=f(x)}$$と$${x}$$軸および2直線$${x=a, x=b}$$で囲まれた部分を$${x}$$軸の周りに1回転させてできる立体の体積$${V}$$
$$
V=\pi \int_a^b \{f(x)\}^2 dx = \pi \int_a^b y^2 dx
$$

③ 曲線$${x=g(y)}$$と$${y}$$軸および2直線$${y=c, y=d}$$で囲まれた部分を$${y}$$軸の周りに1回転させてできる立体の体積$${V}$$
$$
V=\pi \int_c^d \{g(y)\}^2 dy = \pi \int_c^d x^2 dy
$$
回転体の体積を数値計算する方法
ここでは、体積の公式②や③で出てきた回転体の体積を数値計算する方法のひとつを解説します。なお、ここで解説する方法は体積の公式②や③に出てくる定積分をコンピュータで数値的に計算する方法のひとつと考えることができます。
図2は、曲線$${y=f(x)}$$と$${x}$$軸および2直線$${x=a, x=b}$$で囲まれた部分を$${x}$$軸の周りに1回転させてできる立体を$${n}$$個の部分に輪切りに分割し、分割した各輪切り部分を円錐台に近似していることを表しています。今回紹介する方法は、これらの円錐台の体積を足し合わせることで定積分の値を数値的に計算するものになります。

具体的には、まず$${\Delta x}$$を積分範囲の大きさ$${b-a}$$と比較して十分小さな値をもつ定数で、かつ
$$
n= \frac{b-a}{\Delta x}
$$
が整数となるように、調整して決めます。このようにして決めた$${\Delta x}$$を用いると、$${x_k}$$は、
$$
x_k = a +k\Delta x \ \ (k=0,1,2,\cdots,n)
$$
となります。なお、$${x_0 = a, \ \ x_n = b}$$となります。このとき、図2の$${x_k}$$と$${x_{k+1}}$$とに挟まれた円錐台の体積$${V_k}$$は
$$
V_k = \frac{1}{3} \pi \Delta x \{f(x_k)^2+f(x_k) f(x_{k+1})+f(x_{k+1})^2\} \ \ (k=0,1,2,\cdots,n-1)
$$
と計算することができます。したがって、回転体の体積を表す定積分は、
$$
\pi \int_a^b \{f(x)\}^2 dx = \sum_{k=0}^{n-1} \left[ \frac{1}{3} \pi \Delta x \{f(x_k)^2+f(x_k) f(x_{k+1})+f(x_{k+1})^2\} \right]
$$
で計算することができます。
回転体の体積を計算する
今回は、以下の回転体の体積を表す定積分を円錐台を用いて近似的に数値計算するプログラムを作成します。
問題
次の曲線と直線で囲まれた部分を、$${x}$$軸の周りに1回転させてできる立体の体積を求めよ。
$$
y = x^2-9, \ \ y=0
$$
解析的な計算
今回の問題の定積分は、解析的に計算することができます。つまり、
$$
V = \int_{-3}^3 \pi (x^2-9)^2 dx = \frac{1296}{5} \pi = 814.30081\cdots
$$
となります。これと、円錐台による近似計算と比較します。
プログラム
それでは、回転体の体積を表す定積分を円錐台を用いて近似的に数値計算するプログラムを作成します。
// 曲線 y=f(x) をx軸周りに1回転させてできる
// 立体の体積を表す定積分を円錐台の和として計算するプログラム
void setup(){
// 立体の体積を表す定積分を計算して結果をコンソールに出力
float l = -3.0; // 積分領域の下限
float r = 3.0; // 積分領域の上限
float res = sum_pedestal_cone(l,r);
println(res);
}
// 曲線 y=f(x) を表す関数
float f(
float x
){
return x*x-9.0;
}
// 曲線 y=f(x) をx軸周りに1回転させてできる
// 立体の体積を表す定積分を円錐台の和として計算する関数
float sum_pedestal_cone(
float l, // 積分領域の下限
float r // 積分領域の上限
){
float dx = 0.001;
int division_num = (int)((r-l)/dx);
float x, y1, y2;
float dintegral = 0.0;
for(int i=0; i<division_num; i++){
x = l + i*dx;
y1 = f(x);
y2 = f(x+dx);
dintegral = dintegral + (y1*y1+y1*y2+y2*y2)*dx*PI/3.0;
}
return dintegral;
}
ソースコード1 回転体の体積を表す定積分を円錐台を用いて近似的に数値計算するプログラム
ソースコード1では、回転体の体積を表す定積分を円錐台を用いて近似的に数値計算する関数 sum_pedestal_cone を準備して利用しました。
ソースコード1を、Processing の開発環境ウィンドウを開いて(スケッチ名を「calc_volume_by_pedestal_cone」としています)、テキストエディタ部分に書いて実行します。

図3のように、問題の定積分の計算結果がコンソールに出力されます。
814.3002
上記で求めた解析的計算の結果と比較すると、やはり数値計算結果は丸め誤差より少し大きな誤差にはなっているようです。ただ、円錐台を用いる方法は定積分を近似的に数値計算するものなので、やはりこれくらいの誤差は出てもおかしくないと考えます。
まとめ
今回は、数学IIIで学ぶ「体積」について、回転体の体積を表す定積分をコンピュータで近似的に数値計算するプログラムを作成しました。
回転体の体積の近似的な計算として、回転体を$${n}$$個の部分に輪切りに分割し、分割した各輪切り部分を円錐台に近似した上で、各円錐台の体積を計算し、これらの円錐台の体積の和を求める方法を取りました。結果として、丸め誤差よりも少し大きな誤差にはなっていますが、比較的良い近似になっていたと思います。
なお、今回は、輪切りにした部分を円錐台で近似しましたが、輪切りにした部分を円柱で近似する方法も考えられます(図4)。

円柱で近似した場合、定積分は
$$
\pi \int_a^b \{f(x)\}^2 dx = \sum_{k=0}^{n-1} \pi \Delta x f(x_k)^2
$$
と、かなりシンプルになります。この近似方法についても、是非プログラムを作成して、解析的計算や円錐台の場合と比較してみてください(演習問題)。
読んだ感想などをお寄せください
本記事を読んだ感想や質問などを以下のお問い合せフォームからお寄せください。感想、質問をいただいた方には本記事の演習問題の解答をプレゼントします。(お問合せフォームの本文に、本記事のタイトルを入れてください。)
参考文献
改訂版 教科書傍用 スタンダード・オリジナル 数学III(数研出版、ISBN9784410209567)
演習問題
上記で扱った問題の回転体の体積を、円柱で近似する方法を利用して近似計算するプログラムを作成してみてください。
演習問題の解答例
ここから先は

この記事が気に入ったらチップで応援してみませんか?