« 25kmジョグ、プチ花粉症に苦しみつつ・・ | トップページ | 首都圏の新たなフル、横浜マラソンとは・・&膝裏痛ハーフ走 »

Quick BASICの練習(9)~数列の二項間漸化式と固有値、一般項

いつも1ヶ月くらい間を空けて書いて来た、このシリーズ記事。今日は前回

から1週間しか経ってないけど、区切りがいいからサラッと終わらせとこう。

初心者用の無料ソフト「クイック・ベーシック」を使ったプログラミング学習だ。

 

これまでの関連記事10本(2本+8本)は以下の通り。ほぼ完全に知識ゼロ、

ソフトも無い初心者状態からスタート。必要なら過去記事に戻って読むことを

お勧めする。

 

  初めてのプログラミング♪

              ~メモ帳でバッチファイル作成(コマンドプロンプト用)

  初めてのプログラミング(2)~計算その他、簡単なバッチファイル

 

    ・・・・・・・・・・・・・・・・・・・・

  Quick BASICのダウンロード、ダイレクトモード(Immediate)入力と計算

  Quick BASICの練習(2)~プログラム・モードでの入力&実行

                 (3)~REM 文、GOTO 文、IF 文、各種トラブル・・

                 (4)~IF文、FOR文、NEXT文とループ(繰返し)

                 (5)~二重ループ、流れ図(フローチャート)

                 (6)~DIM文と配列変数(添字つき変数)

                 (7)~関数値の計算、方程式の近似解

                 (8)~素数の判別、エラトステネスのふるい

 

 

テキストはいつもの通り、一昔前の高校数学の教科書、数研出版『数学A』

1995年版)。教科書のままだと上手く行かないこともあるし、勉強にもなら

ないので、マイナーチェンジや試行錯誤を繰り返すことになる。今回で一通り

終了で、次回は高校2年生向けの『数学B』に進む予定。

 

 

          ☆          ☆          ☆

では、教科書p.197。問題や索引を除くと一番最後となるページに書かれ

てるのは、既にp.86~87で説明されてる、数列の漸化式の話だ。解き方は

既に習ってるわけだが、数列の一番の基本は、まず具体的に書き並べてみ

ること。この単純作業をコンピューターに高速でやらせたい。

 

教科書の例29は、「自然数5から始め、2倍しては3を引く操作によってでき

る数列 5,7,11,19,35,・・・・・・」を扱うもの。数列を{A(n)}として、漸化

式で書くと、

         A(n+1) = 2A(n) -3

 

ここで、 α=2α-3という方程式を解くと、 α=3。

漸化式の両辺からこのαを引いて、変形すると、

        A(n+1) -3= 2{A(n)-3}

 

よって、数列{A(n)-3}は公比2の等比数列。初項はA(1)-3=2だから、

       A(n)-3=2×(2のn-1乗)

    ∴ A(n)=(2のn乗)+3

 

これが第n項(一般項)の式となる。途中のα=2α-3は、教科書には名

前が無いけど、普通は「特性方程式」と呼ばれ、その解αは「固有値」と呼

ばれる。参考書、塾、予備校などではお馴染みの基礎知識だろう。

 

一般に A(n+1) = p A(n)+q (p≠1)に対して、

   特性方程式 α=pα+q ; 固有値 q/(1-p)

   第n項 A(n) = {A(1)-q/(1-p)}(pのn-1乗)+q/(1-p)

p=1の場合は単なる等差数列だから、簡単に解ける。

 

 

         ☆           ☆          ☆

さて、ここでは教科書の例の設定を少し変えて、

   初項 A(1)=2、 漸化式 A(n+1)=4A(n)-3

で与えられる数列{A(n)}を考えてみよう。

 

150224a 最初の6項を表示

 した後、そのすぐ

 下に、それぞれか

 ら固有値1を引い

 た数を表示するプ

 ログラムは、次の

 通り。

 

 途中で第7項まで

 計算することにな

 るので、最初の配

 列変数の設定は、

A(7)としてある。もちろん、7以上の自然数なら10でも100でもいいはず。固

有値p=1は、上に書いた一般論に従って、-3/(1-4)を計算したものだ。

 

150224b  実行結果は左の通り。

  分かりにくい元の数列

  の下に、分かりやすい

  別の数列が並ぶ。数列

の初歩的な授業だと、下側を数列{B(n)}などとおくけど、慣れて来るとこの

程度の数列にそんな面倒な置き換えはしない。下側の第n項は4のn-1乗

だから、上側にある元の数列だと、A(n)=(4のn-1乗)+1

 

ちなみに、最初の行でうっかり「DIM A(6)」と書いてしまうと、下のように、

エラーメッセージが現れる。

 

150224c2

 

Subscript out of range」とは、「数列の添字(番号)が範囲外」という

意味で、その間違いが生じてる第50行の番号が反転されてる。どこでおか

しくなるのか、指摘してくれてるわけだ。

 

 

          ☆          ☆          ☆

続いて、教科書の練習31を少しだけ変えた問題。

初項3、漸化式A(n+1)=3A(n)-4の場合について、最初の7項目を表示。

150224d2 ただし、前に書い

 た一般的な二項間 

 漸化式を意識した

 書き方にした。

 

 これなら初項とp、

 qの値を変えるだ

 けで、すべての場

 合に使えることに

 なる(p≠1)。

 

150224e 実行結果は左の通

 り。下側に3のn

 乗を表す簡単な数列

が出来てる。結論としては、A(n)=(3のn-1乗)+2

 

 

           ☆          ☆          ☆

続いて、p.198の最初、問題11。「10個の数値を入力したとき、入力した 

純とは逆の順に数値を表示するプログラムを、配列変数を用いて作れ」。こ

れは漸化式の問題ではないけど、初歩的な数列の問題だから解いてみた。

 

150224k 10個の入力を、数

 列みたいに並べて

 一気に済ませよう

 としたけど、今の所

 は成功してない。

 

 

150224j_2 1個ずつ、10か

 ら1までを入力す

 ると、逆順で1か

 ら10まで並んだ。

 ちなみに第50行

 を20行と同じに

 して、第60行を

 A(11-N)をPR

INTさせても同じ結果になる。

 

 

         ☆          ☆          ☆

最後に、教科書p.198の問題について。

  A(n)が奇数なら、 A(n+1)=3A(n)+1

  A(n)が偶数なら、 A(n+1)=A(n)/2

 

まず(1)では、初項が1~10の時の数列をそれぞれ表示して、いずれも、あ

る項以降が1、4、2の繰返しになることを確認する。

 

150224i2_4

 

最後なので、二重ループと改行を使って、第20項までを一気に並べてみた。

150224h2 初項が7と9の

 場合は、なかな

 か1、4、2にな

 らない。

 

 人間の手作業だ

 と大変だけど、プ

 ログラムの場合は

150224h3 配列変数の範囲を

 大きく取ればいい

 だけ。右端の第20

 項辺りで、すべて

 1、4、2となる。

 

 

 

(2)では、数列に1が現れたところで実行を停止し、その1が何番目の項であ 

るのかも表示するプログラムを作成。初項27を入力して実行する。私が作っ

たのは、下の通り。10項ごとに改行して、何番目なのかを分かりやすくした。

 

150224l

 

A(1)=27の場合はなかなか1にならず、第112項でようやく1となった。

これは並みの人間だと、途中で挫ける作業だろう。最後の行に、「112」と

表示されてる。

 

150224m

 

 

これで『数学A』の教科書は一応終了だが、まだ消化不良なので、もう少し

問題演習を重ねた後、『数学B』の記事を書く予定。今日はこの辺で。。☆彡

 

                                   (計 2684字)

|

« 25kmジョグ、プチ花粉症に苦しみつつ・・ | トップページ | 首都圏の新たなフル、横浜マラソンとは・・&膝裏痛ハーフ走 »

数学」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 25kmジョグ、プチ花粉症に苦しみつつ・・ | トップページ | 首都圏の新たなフル、横浜マラソンとは・・&膝裏痛ハーフ走 »