高校数学10分プログラミング(数学B編 3.数列)4日目「等比数列の和を考える」
おはようございます。
本日は、高校数学10分プログラミング(数学B編 3.数列)の4日目です。
本日の課題は、等比数列の和の公式を確かめるプログラムを作成することです。
等比数列の和の公式
初項$${a}$$、公比$${r}$$、項数$${n}$$の等比数列$${\{a_n\}}$$の和を$${S_n}$$とする。
$$
r \neq 1 \mathrm{のとき} S_n = \frac{a(1-r^n)}{1-r} = \frac{a(r^n-1)}{r-1}, \ \ r = 1 \mathrm{のとき} S_n=na
$$
課題
初項$${5}$$、公差$${2}$$、項数$${10}$$の等比数列の和を、等比数列の第$${1}$$項から第$${10}$$項までの項を単純に足し上げる方法と等比数列の和の公式を利用する方法とでそれぞれ求めて、開発環境ウィンドウのコンソールに出力するプログラムを作成してください。これらの結果を比較することで等比数列の和の公式が成り立っているだろうことが示唆されます。
プログラム
今回の課題の等比数列の和を2種類の方法で求めるプログラムを示します。
// 等比数列の和の公式を確かめる
void setup(){
float a = 5.0; // 初項
float r = 2.0; // 公比
int n = 10; // 第n項
// 等比数列を単純に足し上げる方法
float sum = 0.0; // 等比数列の和
for(int i=1; i<=n; i++){
sum += calc_geometrical_progression(a,r,i);
}
// 和の公式を利用する
float S_n = sum_geometrical_progression(a,r,n);
println("単純和:",sum, ", 和の公式:", S_n);
}
// 初項a,公比rの等比数列の第n項を求める関数(一般項)
float calc_geometrical_progression(
float a, // 初項
float r, // 公比
int n // 第n項
){
return a * pow(r,n-1);
}
// 初項a,公比r,項数nの等比数列の和を求める関数
float sum_geometrical_progression(
float a, // 初項
float r, // 公比
int n // 項数
){
return
}
ソースコード1 等比数列の和を2種類の方法で求めるプログラム(未完成)
ソースコード1では、等差数列の項を単純に足し上げる方法として、前記事『高校数学10分プログラミング(数学B編 3.数列)3日目「等比数列を考える」』で作成した等比数列の一般項を求める関数 calc_geometrical_progression を用いて等比数列の和を求めています。
// 等比数列を単純に足し上げる方法
float sum = 0.0; // 等比数列の和
for(int i=1; i<=n; i++){
sum += calc_geometrical_progression(a,r,i);
}
また、等比数列の和の公式を利用する方法として、その公式の関数 sum_geometrical_progression を準備して setup 関数内で呼び出すことで計算しています。
// 和の公式を利用する
float S_n = sum_geometrical_progression(a,r,n);
ただし、sum_geometrical_progression 関数は未完成です。等比数列の和の式を
// 初項a,公比r,項数nの等比数列の和を求める関数
float sum_geometrical_progression(
float a, // 初項
float r, // 公比
int n // 項数
){
return
}
に記述して、sum_geometrical_progression 関数を完成させてください。
なお、スケッチ名は「check_sum_geometrical_progression」としてください。
それでは、よろしくお願いします。
MK's papa