
高校数学10分プログラミング(数学Ⅱ編 5.微分法と積分法)10日目「面積を求める」解説
マガジンリスト > 数学Ⅱ編 5.微分法と積分法 > 10日目 解説
本日の課題、おつかれさまでした。
課題の図形の面積を台形公式を用いて数値計算するプログラムを作成することができたでしょうか。
解答例
今回の図形の面積を台形公式を用いて数値計算するプログラムの例を示します。
// 面積を台形公式を利用して計算するプログラム
void setup(){
float a = 1.0; // x^2の係数
float b = 0.0; // x の係数
float c = 4.0; // 定数項
float l = -2.0; // 積分領域の下限
float r = 3.0; // 積分領域の上限
float res1 = trapezoidal_rule_quadratic_function(a,b,c,l,r);
println(res1);
}
// 2次関数
float f(
float a, // x^2の係数
float b, // x の係数
float c, // 定数項
float x
){
return a*x*x + b*x + c;
}
// 2次関数に対する定積分を計算する関数
float trapezoidal_rule_quadratic_function(
float a, // x^2の係数
float b, // x の係数
float c, // 定数項
float l, // 積分領域の下限
float r // 積分領域の上限
){
float dx = 0.01;
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(a,b,c,x);
y2 = f(a,b,c,x+dx);
dintegral = dintegral + (y1+y2)*dx/2.0;
}
return dintegral;
}
ソースコード1 図形の面積を台形公式を用いて数値計算するプログラム
ヒントでも説明した通り、ソースコード1は記事『高校数学10分プログラミング(数学Ⅱ編 5.微分法と積分法)8日目「定積分を計算する1」』で作成したスケッチ「calc_definite_integral」を再利用したものとなっています。
ソースコード1を、Processingの開発環境ウィンドウを開いて(スケッチ名を「calc_area」とします)、テキストエディタ部分に書いて実行すると、コンソールに
31.666748
と出力されます(図2)。

課題の図形の面積を解析的に求めた結果は、
$$
\frac{95}{3}=31.666666\cdots
$$
となります。これらと比較すると、数値計算結果は丸め誤差より少し大きな誤差にはなっているようですが、比較的小さな誤差範囲で数値計算できていることがわかります。
本日は以上です。
今回で、数学Ⅱに関するプログラミング課題は終了となります。
お疲れさまでした。
数学Ⅱ以外の課題にまだチャレンジしていない方は是非そちらもチャレンジしてみてください。課題はマガジンリストにまとめていますので、そちらからアクセスしてください。
明日もよろしくお願いします。
読んだ感想などをお寄せください
本記事を読んだ感想や質問などを以下のお問い合せフォームからお寄せください。(お問合せフォームの本文に、本記事のタイトルを入れてください。)
MK’s papa