高校数学をプログラミングで解く(数学B編)「3-2 等差数列の和」
マガジンリスト > 数学B編 3.数列 > 3-2 等差数列の和
はじめに
今回は、数学Bで学ぶ「等差数列の和」について、等差数列の和を計算してその値を出力するプログラムを2つの方法で作成します。
等差数列の和
まず、等差数列の和と自然数の和、正の奇数の和についてまとめておきます。
等差数列の和
初項$${a}$$、公差$${d}$$、末項$${l}$$、項数$${n}$$の等差数列の和を$${S_n}$$とする。
$$
\mathrm{①} S_n=\frac{1}{2} n(n+l) \ \ \ \ \mathrm{②} S_n=\frac{1}{2} n \{2a+(n-1)d \} \leftarrow l=a+(n-1)d
$$
自然数の和、正の奇数の和
$$
\mathrm{①} 1+2+3+\cdots+n=\frac{1}{2}n(n+1) \leftarrow \mathrm{初項}1, \mathrm{公差}1, \mathrm{項数}n\mathrm{の等差数列の和}
$$
$$
\mathrm{②} 1+3+5+\cdots+(2n-1)=n^2 \leftarrow \mathrm{初項}1, \mathrm{公差}2, \mathrm{項数}n\mathrm{の等差数列の和}
$$
以下で、等差数列の和についての問題をプログラミングして考えてみます。
等差数列の和を計算する
今回、下記の問題について、等差数列の和を計算して、開発環境ウィンドウの下部のコンソールにその値を表示するプログラムを作成します。その際、等差数列の各項を単純に足し上げていく方法と等差数列の和の公式②を利用する方法の2つの方法で計算します。
問題
初項$${50}$$、公差$${-2}$$、項数$${26}$$の等差数列の和を求めよ。
単純に足し上げる方法
まず、等差数列の各項を単純に足し上げる方法で計算するプログラムを作成します。
// 等差数列の第n項までの和を求める(単純に和を取る)
void setup(){
float a = 50.0; // 初項
float d = -2.0; // 公差
int n = 26; // 第n項
float sum = 0.0; // 等差数列の和
for(int i=1; i<=n; i++){
sum += calc_arithmetical_progression(a,d,i);
}
println(sum);
}
// 初項a,公差dの等差数列の第n項を求める関数(一般項)
float calc_arithmetical_progression(
float a, // 初項
float d, // 公差
int n // 第n項
){
return a + (n-1)*d;
}
ソースコード1 等差数列を足し上げて和を計算するプログラム
今回は、記事『高校数学をプログラミングで解く(数学B編)「3-1 数列と一般項、等差数列」』で作成した、初項$${a}$$,公差$${d}$$の等差数列の第$${n}$$項を求める関数 calc_arithmetical_progression を再利用しています。つまり、等差数列の各項を calc_arithmetical_progression 関数を用いて計算し、順に変数 sum に足しこんでいくことで等差数列の和を算出しています。
ソースコード1を、Processingの開発環境ウィンドウを開いて(スケッチ名を「sum_arithmetical_progression」としています)、テキストエディタ部分に書いて実行すると、開発環境ウィンドウのコンソール部分に「650.0」と出力されます(図1)。
等差数列の和の公式を利用する
次に、等差数列の和の公式②を利用して、問題の等差数列の和を計算するプログラムを作成します。
// 等差数列の第n項までの和を求める(等差数列の和の公式)
void setup(){
float a = 50.0; // 初項
float d = -2.0; // 公差
int n = 26; // 第n項
// 等差数列の和
float sum = sum_arithmetical_progression(a,d,n);
println(sum);
}
// 初項a,公差d,項数nの等差数列の和を求める関数
float sum_arithmetical_progression(
float a, // 初項
float d, // 公差
int n // 項数
){
return n * (2.0*a + (n-1.0)*d) / 2.0;
}
ソースコード2 等差数列の和の公式②を利用したプログラム
今回は、等差数列の和の公式②を利用して、初項$${a}$$,公差$${d}$$,項数$${n}$$の等差数列の和を求める関数 sum_arithmetical_progression を作成しました。sum_arithmetical_progression 関数は引数として、
a:初項 float型
d:公差 float型
n:項数 int型
の3つを取ります。また、返り値は等差数列の和の公式②で計算した和の値を返します。
ソースコード2を、Processingの開発環境ウィンドウを開いて(スケッチ名を「sum_arithmetical_progression2」としています)、テキストエディタ部分に書いて実行すると、開発環境ウィンドウのコンソール部分に「650.0」と出力されます(図2)。これは、単純に足し上げる方法で計算したもの(ソースコード1)と同じ結果になっています。
まとめ
今回は、数学Bで学ぶ「等差数列の和」について、等差数列の和を計算してその値を出力するプログラムを2つの方法で作成しました。1つ目は、等差数列を算出して単純に足し上げる方法を用いたプログラム、2つ目は、等差数列の和の公式②を利用したプログラムを作成しました。
今回のように、同じ等差数列の和を求めるプログラムを複数の方法で作成すると、それらを比較することで正しい計算ができているかを確かめることができます。プログラムのテストやデバッグの1つの方法として覚えておくとよいでしょう。
参考文献
改訂版 教科書傍用 スタンダード 数学B(数研出版、ISBN9784410209468)
この記事が気に入ったらサポートをしてみませんか?