next up previous
Next: 2.3 レポート課題2A (必修) Up: 2 FOR 〜 NEXT Previous: 2.1 FOR NEXT 構文

2.2 簡単な漸化式

例題1. 定数 $ r$ が与えられたとき、漸化式

$\displaystyle a_1=1,\quad a_{n}=r a_{n-1}$   $\displaystyle \mbox{($n\ge 2$)}$

で定義される数列 $ \{a_n\}_{n\in\N}$ の最初の 100 項を求めよ。 -- 要するに等比数列 $ a_n=r^{n-1}$ですが、 この仕事を漸化式の通りに遂行するには、 例えば次のようなプログラムを書けば OK です (上の漸化式とプログラムを見比べて下さい)。

配列を使うバージョン touhi1.bas
REM 等比数列 (配列を使うバージョン)
DIM A(100)
INPUT PROMPT "r=": r
A(1)=1
print 1;A(1)
FOR n=2 to 100
  A(n)=r*A(n-1)
  print n;A(n)
NEXT n
END

やってみよう     DIM, INPUT PROMPT 等の 命令の説明をオンライン・ヘルプで読んでみましょう。


等比数列はものすごい勢いで大きくなったり小さくなったりするので、 演算精度を上げておくべきかもしれません。 これは (1000桁演算モード) ボタンを押しても実現できますが、 プログラムの先頭部分に例えば
  OPTION ARITHMETIC DECIMAL_HIGH
と書いてもよいでしょう。

ちょっと質問     ``arithmetic'' って何でしょうね?1


実は一度 A(n-1) として使われた後はもう使われなくなるので、 次のようなプログラムで済ませることが出来ます。
配列を使わないバージョン touhi2.bas
REM 等比数列 (配列を使わないバージョン)
INPUT PROMPT "r=": r
A=1
print 1;A
FOR n=2 to 100
  A=r*A
  print n;A
NEXT n
END

配列変数の代りに、 普通の変数 Aだけで済んでいる理由を理解しましょう。 代入文 A=r*A は、数学に現れる等式とは違って、 一般には

変数名=
と表される (代入文の) 文法に従ったもので、 (1) 最初に = の右にある式を評価し、 (2) その値を = の左にある変数に記憶します。 例えば A=A+1A の値を $ 1$ 増やすコードです。


next up previous
Next: 2.3 レポート課題2A (必修) Up: 2 FOR 〜 NEXT Previous: 2.1 FOR NEXT 構文
Masashi Katsurada
平成23年6月15日